diff --git a/CHANGELOG.md b/CHANGELOG.md
index 57848aa7f..73ebecabc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,117 @@
+# Version 24.48 - 2024-11-25
+
+### Added 🆕
+
+- feat: refs #4948 Added ticket_selfConsumptionPackaging by:guillermo
+- feat: refs #6818 add config table by:jorgep
+- feat: refs #6818 add records by:jorgep
+- feat: refs #6818 saysimple integration by:jorgep
+- feat: refs #6845 userInterface by:sergiodt
+- feat: refs #6869 add back by:jorgep
+- feat: refs #6869 define model by:jorgep
+- feat: refs #6869 refs#6869 itemShelving_get (origin/6869-createGetDetails) by:sergiodt
+- feat: refs #7006 itemTypeLog by:guillermo
+- feat: refs #7006 itemTypeLog created by:guillermo
+- feat: refs #7006 Requested changes by:guillermo
+- feat: refs #7193 added scope in parking model by:Jon
+- feat: refs #7244 Requested changes by:guillermo
+- feat: refs #7266 Added details and improvements in item label reports by:guillermo
+- feat: refs #7266 buyFkForPrint by:sergiodt
+- feat: refs #7266 First commit by:guillermo
+- feat: refs #7266 Item label barcode by:guillermo
+- feat: refs #7266 Item label QR by:guillermo
+- feat: refs #7266 Item label QR finished by:guillermo
+- feat: refs #7266 Minor change by:guillermo
+- feat: refs #7266 Print corrections by:guillermo
+- feat: refs #7266 Requested changes and improvements by:guillermo
+- feat: refs #7266 Requested changes and query optimization by:guillermo
+- feat: refs #7266 Version by:guillermo
+- feat: refs #7289 #7289 apply option 1 by:Javier Segarra
+- feat: refs #7289 #7289 remove bad translation by:Javier Segarra
+- feat: refs #7524 restrict fields by:jorgep
+- feat: refs #7641 fine tunning by:jorgep
+- feat: refs #7641 improve style by:jorgep
+- feat: refs #7743 add simple spec for sendMail by:pablone
+- feat: refs #7743 add try catch stmt to the test by:pablone
+- feat: refs #7874 add default type by:jorgep
+- feat: refs #7874 use name by:jorgep
+- feat: refs #7920 Added ItemShelving in shelvingLog by:guillermo
+- feat: refs #7921 refs#7921 sendLostExpedition by:sergiodt
+- feat: refs #7922 refs #792 scanOrder by:sergiodt
+- feat: refs #7943 quitar lectura en metodos comunes by:jgallego
+- feat: refs #7943 return just the required content by:jorgep
+- feat: refs #7943 usa back con permisos by:jgallego
+- feat: refs #8020 machineWorkerDeprecated by:sergiodt
+- feat: refs #8057 Added data updates by:guillermo
+- feat: refs #8057 Added data updates (origin/8057-geoFk) by:guillermo
+- feat: refs #8057 Added geoFk columns by:guillermo
+- feat: refs #8057 Fix version by:guillermo
+- feat: refs #8057 More precision in getGeo by:guillermo
+- feat: refs #8057 Requested changes by:guillermo
+- feat: refs #8071 quitar esquema by:robert
+- feat: refs #8071 travel_weeklyClone by:robert
+- feat: refs #8080 Added column comment by:guillermo
+- feat: refs #8083 add prop by:jorgep
+- feat: refs #8087 Traspasar redadas a travels by:Carlos Andrés
+- feat: refs #8099 refs#8099 addComplmentSalary by:sergiodt
+- feat: refs #8124 Enrutadores nuevos requerimientos by:Carlos Andrés
+- feat: refs #8124 Enrutadores nuevos requerimientos (origin/8124-enrutadoresNuevosRequerimientos) by:Carlos Andrés
+- feat: refs #8127 entry_getCommission by:robert
+- feat: refs #8127 quitar esquemas by:robert
+- feat: refs #8135 refs#8135 updateTicketACL (origin/8135-ticketACL) by:sergiodt
+- feat: refs #8143 deprecate recoverPass and sync from account.user by:ivanm
+- feat: refs #8150 movExpeditions by:sergiodt
+- feat: refs #8151 Added test by:guillermo
+- feat: refs #8151 moveExpeditions by:guillermo
+- feat: refs #8151 Requested changes by:guillermo
+- feat(Supplier): refs #6828 add companySize by:alexm
+- refactor: refs #7641 entry report style by:jorgep
+
+### Changed 📦
+
+- refactor: refs #6920 add correct role by:alexm
+- refactor: refs #7242 Deleted select column by:guillermo
+- refactor: refs #7457 Added from param if not exists by:guillermo
+- refactor: refs #7641 entry report style by:jorgep
+- refactor: refs #7715 Deleted hasNewLabelMrwMethod column by:guillermo
+- refactor: refs #7920 Fix tests by:guillermo
+- refactor: refs #7920 Fix version by:guillermo
+- refactor: refs #7920 itemShelvingLog by:guillermo
+- refactor: refs #7920 Main change by:guillermo
+- refactor: refs #7920 Major changes by:guillermo
+- refactor: refs #7920 No changes in itemShelvingLog table by:guillermo
+- refactor: refs #7920 Requested changes by:guillermo
+- refactor: refs #7950 Created cmr model (7950-cmrModelUnify) by:guillermo
+- refactor: refs #7950 Requested changes by:guillermo
+- refactor: refs #8153 Optimized order_getTax by:guillermo
+
+### Fixed 🛠️
+
+- fix: clean deletes also zoneEvent range records by:jgallego
+- fix: more data for fixture.before by:Pako
+- fix: refs #4948 Tests by:guillermo
+- fix: refs #6644 email and translations by:carlossa
+- fix: refs #6818 add config by:jorgep
+- fix: refs #6818 add defaultChannel by:jorgep
+- fix: refs #6818 use right col type by:jorgep
+- fix: refs #6869 use id as primaryKey by:jorgep
+- fix: refs #7244 Added collection ACL by:guillermo
+- fix: refs #7283 item filters by:carlossa
+- fix: refs #7283 remove by:carlossa
+- fix: refs #7283 remove tests by:carlossa
+- fix: refs #7283 tback by:carlossa
+- fix: refs #7323 add remaining fields (origin/7323-warfix-addRemainingFields) by:jorgep
+- fix: refs #7457 add with on select to reduce by:pablone
+- fix: refs #7457 empty commit for gitea by:pablone
+- fix: refs #7457 error on empty from param and add translate by:pablone
+- fix: refs #7457 remove group by calc time reduce bellow 1s by:pablone
+- fix: refs #7457 remove translate and use param definition for restriction by:pablone
+- fix: refs #7641 align columns by:jorgep
+- fix: refs #7641 drop boilerplate code by:jorgep
+- fix: refs #7920 refs#7920 itemShelvingLog by:sergiodt
+- fix: refs #8153 Version by:guillermo
+- revert cd7ed6987a88e00275b562d3248f368b6333620c by:Javier Segarra
+
# Version 24.38 - 2024-09-17
### Added 🆕
diff --git a/Jenkinsfile b/Jenkinsfile
index 19f47c5b0..06addc940 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -7,7 +7,8 @@ def RUN_BUILD
def BRANCH_ENV = [
test: 'test',
- master: 'production'
+ master: 'production',
+ beta: 'production'
]
node {
@@ -18,7 +19,8 @@ node {
PROTECTED_BRANCH = [
'dev',
'test',
- 'master'
+ 'master',
+ 'beta'
].contains(env.BRANCH_NAME)
FROM_GIT = env.JOB_NAME.startsWith('gitea/')
@@ -62,6 +64,18 @@ pipeline {
PROJECT_NAME = 'salix'
}
stages {
+ stage('Version') {
+ when {
+ expression { RUN_BUILD }
+ }
+ steps {
+ script {
+ def packageJson = readJSON file: 'package.json'
+ def version = "${packageJson.version}-build${env.BUILD_ID}"
+ writeFile(file: 'VERSION.txt', text: version)
+ }
+ }
+ }
stage('Install') {
environment {
NODE_ENV = ''
@@ -118,11 +132,10 @@ pipeline {
when {
expression { RUN_BUILD }
}
+ environment {
+ VERSION = readFile 'VERSION.txt'
+ }
steps {
- script {
- def packageJson = readJSON file: 'package.json'
- env.VERSION = "${packageJson.version}-build${env.BUILD_ID}"
- }
sh 'docker-compose build back'
}
}
@@ -156,11 +169,10 @@ pipeline {
when {
expression { RUN_BUILD }
}
+ environment {
+ VERSION = readFile 'VERSION.txt'
+ }
steps {
- script {
- def packageJson = readJSON file: 'package.json'
- env.VERSION = "${packageJson.version}-build${env.BUILD_ID}"
- }
sh 'gulp build'
sh 'docker-compose build front'
}
@@ -175,12 +187,9 @@ pipeline {
}
environment {
CREDENTIALS = credentials('docker-registry')
+ VERSION = readFile 'VERSION.txt'
}
steps {
- script {
- def packageJson = readJSON file: 'package.json'
- env.VERSION = "${packageJson.version}-build${env.BUILD_ID}"
- }
sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY'
sh 'docker-compose push'
}
@@ -207,11 +216,10 @@ pipeline {
when {
expression { FROM_GIT }
}
+ environment {
+ VERSION = readFile 'VERSION.txt'
+ }
steps {
- script {
- def packageJson = readJSON file: 'package.json'
- env.VERSION = "${packageJson.version}-build${env.BUILD_ID}"
- }
withKubeConfig([
serverUrl: "$KUBERNETES_API",
credentialsId: 'kubernetes',
diff --git a/back/methods/collection/getTickets.js b/back/methods/collection/getTickets.js
index 3c2f6cb2d..677c9e444 100644
--- a/back/methods/collection/getTickets.js
+++ b/back/methods/collection/getTickets.js
@@ -63,7 +63,8 @@ module.exports = Self => {
p.pickingOrder pickingOrder,
iss.id itemShelvingSaleFk,
iss.isPicked,
- iss.itemShelvingFk
+ iss.itemShelvingFk,
+ st.code stateCode
FROM ticketCollection tc
LEFT JOIN collection c ON c.id = tc.collectionFk
JOIN sale s ON s.ticketFk = tc.ticketFk
@@ -77,6 +78,7 @@ module.exports = Self => {
LEFT JOIN parking p ON p.id = sh.parkingFk
LEFT JOIN itemColor ic ON ic.itemFk = s.itemFk
LEFT JOIN origin o ON o.id = i.originFk
+ LEFT JOIN state st ON st.id = sg.stateFk
WHERE tc.collectionFk = ?
GROUP BY s.id, ish.id, p.code, p2.code
UNION ALL
@@ -104,7 +106,8 @@ module.exports = Self => {
p.pickingOrder,
iss.id itemShelvingSaleFk,
iss.isPicked,
- iss.itemShelvingFk
+ iss.itemShelvingFk,
+ st.code stateCode
FROM sectorCollection sc
JOIN sectorCollectionSaleGroup ss ON ss.sectorCollectionFk = sc.id
JOIN saleGroup sg ON sg.id = ss.saleGroupFk
@@ -118,6 +121,7 @@ module.exports = Self => {
LEFT JOIN parking p ON p.id = sh.parkingFk
LEFT JOIN itemColor ic ON ic.itemFk = s.itemFk
LEFT JOIN origin o ON o.id = i.originFk
+ LEFT JOIN state st ON st.id = sg.stateFk
WHERE sc.id = ?
AND sgd.saleGroupFk
GROUP BY s.id, ish.id, p.code, p2.code`, [id, id], myOptions);
diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js
index 98aa8be39..e96d6d694 100644
--- a/back/methods/mrw-config/cancelShipment.js
+++ b/back/methods/mrw-config/cancelShipment.js
@@ -24,12 +24,13 @@ module.exports = Self => {
Self.cancelShipment = async expeditionFk => {
const models = Self.app.models;
-
const mrw = await models.MrwConfig.findOne();
const {externalId} = await models.Expedition.findById(expeditionFk);
const clientType = await models.MrwConfig.getClientType(expeditionFk);
const template = fs.readFileSync(__dirname + '/cancelShipment.ejs', 'utf-8');
const renderedXml = ejs.render(template, {mrw, externalId, clientType});
+
+ await Self.rawSql('CALL util.debugAdd(?,?);', ['cancelShipment', renderedXml]);
const response = await axios.post(mrw.url, renderedXml, {
headers: {
'Content-Type': 'application/soap+xml; charset=utf-8'
@@ -37,12 +38,11 @@ module.exports = Self => {
});
const xmlString = response.data;
+ await Self.rawSql('CALL util.debugAdd(?,?);', ['cancelShipmentResponse', xmlString]);
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
- await Self.rawSql('CALL util.debugAdd(?,?);', ['cancelShipment', xmlDoc]);
-
const result = xmlDoc.getElementsByTagName('Mensaje')[0].textContent;
- return result.toLowerCase().includes('se ha cancelado correctamente');
+ return ['no se ha encontrado', 'se ha cancelado correctamente'].some(res => result.toLowerCase().includes(res));
};
};
diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js
new file mode 100644
index 000000000..e0412c74c
--- /dev/null
+++ b/back/methods/osrm-config/optimize.js
@@ -0,0 +1,112 @@
+const UserError = require('vn-loopback/util/user-error');
+const axios = require('axios');
+
+module.exports = Self => {
+ Self.remoteMethod('optimize', {
+ description: 'Return optimized coords',
+ accessType: 'READ',
+ accepts: [{
+ arg: 'addressIds',
+ type: 'array',
+ required: true
+ }, {
+ arg: 'firstAddressId',
+ type: 'number',
+ required: false
+ }, {
+ arg: 'lastAddressId',
+ type: 'number',
+ required: false
+ }],
+ returns: {
+ type: 'object',
+ root: true
+ },
+ http: {
+ path: `/optimize`,
+ verb: 'GET'
+ }
+ });
+
+ Self.optimize = async(addressIds, firstAddressId, lastAddressId) => {
+ const models = Self.app.models;
+ try {
+ const osrmConfig = await models.OsrmConfig.findOne();
+ if (!osrmConfig) throw new UserError(`OSRM service is not configured`);
+
+ let coords = [];
+ if (firstAddressId) {
+ const address = await models.Address.findById(firstAddressId);
+ if (address.latitude && address.longitude) {
+ coords.push({
+ addressId: address.id,
+ latitude: address.latitude.toFixed(6),
+ longitude: address.longitude.toFixed(6)
+ });
+ }
+ }
+
+ for (const addressId of addressIds) {
+ const address = await models.Address.findById(addressId);
+ if (address.latitude && address.longitude) {
+ coords.push({
+ addressId,
+ latitude: address.latitude.toFixed(6),
+ longitude: address.longitude.toFixed(6)
+ });
+ }
+ }
+
+ if (lastAddressId) {
+ const firstAddress = await models.Address.findById(lastAddressId);
+ if (firstAddress.latitude && firstAddress.longitude) {
+ coords.push({
+ addressId: firstAddress.id,
+ latitude: firstAddress.latitude.toFixed(6),
+ longitude: firstAddress.longitude.toFixed(6)
+ });
+ }
+ }
+
+ if (!coords.length) throw new UserError('No address has coordinates');
+
+ const concatCoords = coords
+ .map(coord => `${coord.longitude},${coord.latitude}`)
+ .join(';');
+ const response = await axios.post(`
+ ${osrmConfig.url}/trip/v1/driving/${concatCoords}?source=first&destination=last&roundtrip=true
+ `);
+ const tolerance = osrmConfig.tolerance;
+ for (const waypoint of response.data.waypoints) {
+ const longitude = waypoint.location[0];
+ const latitude = waypoint.location[1];
+
+ const matchedAddress = coords.find(coord =>
+ coord.position === undefined &&
+ Math.abs(coord.latitude - latitude) <= tolerance &&
+ Math.abs(coord.longitude - longitude) <= tolerance
+ );
+ if (matchedAddress)
+ matchedAddress.position = waypoint.waypoint_index;
+ }
+ coords.sort((a, b) => {
+ const posA = a.position !== undefined ? a.position : Infinity;
+ const posB = b.position !== undefined ? b.position : Infinity;
+ return posA - posB;
+ });
+
+ return coords;
+ } catch (err) {
+ switch (err.response?.data?.code) {
+ case 'NoTrips':
+ throw new UserError('No trips found because input coordinates are not connected');
+ case 'NotImplemented':
+ throw new UserError('This request is not supported');
+ case 'InvalidOptions':
+ throw new UserError('Invalid options or too many coordinates');
+ default:
+ throw err;
+ }
+ }
+ };
+};
diff --git a/back/methods/osrm-config/specs/optimize.spec.js b/back/methods/osrm-config/specs/optimize.spec.js
new file mode 100644
index 000000000..9f2adccc6
--- /dev/null
+++ b/back/methods/osrm-config/specs/optimize.spec.js
@@ -0,0 +1,33 @@
+const models = require('vn-loopback/server/server').models;
+
+describe('osrmConfig optimize()', function() {
+ it('should send coords, receive OSRM response, and return a correctly ordered result', async function() {
+ const result = await models.OsrmConfig.optimize([4, 3], 1, 2);
+
+ // Verifications
+ expect(Array.isArray(result)).toBe(true);
+ expect(result.length).toBe(4);
+
+ // Check the order
+ expect(result[0].addressId).toBe(1);
+ expect(result[1].addressId).toBe(4);
+ expect(result[2].addressId).toBe(3);
+ expect(result[3].addressId).toBe(2);
+
+ // Check the coordinates format
+ expect(result[0].latitude).toBe('10.111111');
+ expect(result[0].longitude).toBe('-74.111111');
+ });
+
+ it('should throw an error if no addresses are provided', async function() {
+ let error;
+ try {
+ await models.OsrmConfig.optimize([], null);
+ } catch (e) {
+ error = e;
+ }
+
+ expect(error).toBeDefined();
+ expect(error.message).toBe('No address has coordinates');
+ });
+});
diff --git a/back/methods/osticket/sendToSupport.js b/back/methods/osticket/sendToSupport.js
index e17093839..dabd35f80 100644
--- a/back/methods/osticket/sendToSupport.js
+++ b/back/methods/osticket/sendToSupport.js
@@ -29,35 +29,34 @@ module.exports = Self => {
});
Self.sendToSupport = async(ctx, reason, additionalData) => {
+ const userId = ctx.req.accessToken.userId;
const emailUser =
- await Self.app.models.EmailUser.findById(ctx.req.accessToken.userId, {fields: ['email']});
+ await Self.app.models.EmailUser.findById(userId, {fields: ['email']});
- let html = `Motivo:
${reason}
`;
- html += `Usuario:
${ctx.req.accessToken.userId} ${emailUser.email}
`;
+ let html = `
Motivo: ${reason}
`;
+ html += `Usuario: ${userId} ${emailUser.email}
`;
+ html += `Additional Data:
`;
+ html += '';
+ for (const [key, val] of Object.entries(additionalData)) {
+ if (key !== 'config') html += `- ${key}: ${parse(val)}
`;
+ else {
+ html += `- ${key}:
`;
+ for (const [confKey, confVal] of Object.entries(val))
+ html += `- ${confKey}: ${parse(confVal)}
`;
+ html += '
';
+ }
+ }
+ html += '
';
- delete additionalData.backError.config.headers.Authorization;
- const httpRequest = JSON.parse(additionalData?.httpRequest);
-
- if (httpRequest)
- delete httpRequest.config.headers.Authorization;
- additionalData.httpRequest = httpRequest;
-
- for (const data in additionalData)
- html += `${data}:
${tryParse(additionalData[data])}
`;
-
- const subjectReason = httpRequest?.data?.error;
+ const {message, path, name} = additionalData;
await smtp.send({
to: `${config.app.reportEmail}, ${emailUser.email}`,
- subject:
- '[Support-Salix] ' +
- additionalData?.frontPath + ' ' +
- subjectReason?.name + ':' +
- subjectReason?.message,
+ subject: `[Support-Salix] ${path} ${name}: ${message}`,
html
});
};
- function tryParse(value) {
+ function parse(value) {
try {
try {
value = JSON.parse(value);
diff --git a/back/methods/quadminds-api-config/sendOrders.js b/back/methods/quadminds-api-config/sendOrders.js
deleted file mode 100644
index 760d622b6..000000000
--- a/back/methods/quadminds-api-config/sendOrders.js
+++ /dev/null
@@ -1,88 +0,0 @@
-const axios = require('axios');
-const UserError = require('vn-loopback/util/user-error');
-const moment = require('moment');
-
-module.exports = Self => {
- Self.remoteMethod('sendOrders', {
- description: 'Sends a set of orders',
- accessType: 'WRITE',
- accepts: [{
- arg: 'tickets',
- type: ['number'],
- required: true
- }
- ],
- returns: {
- type: 'string',
- root: true
- },
- http: {
- path: `/sendOrders`,
- verb: 'POST'
- }
- });
- Self.sendOrders = async tickets => {
- const config = await Self.app.models.QuadmindsApiConfig.findOne();
- if (!config) throw new UserError('Config params not set');
-
- if (tickets.length > config.maxObjects)
- throw new UserError(`Quadminds does not support more than ${config.maxObjects} tickets`);
-
- let poisData = [];
- let isOk;
- for (let offset = 0; !isOk; offset = offset + config.limit) {
- const pois = await axios.get(`${config.url}pois/search?limit=${config.limit}&offset=${offset}`, {
- headers: {
- 'Accept': 'application/json',
- 'X-Saas-Apikey': config.key
- }
- });
- pois.data.data.length ? poisData.push(...pois.data.data) : isOk = true;
- }
-
- const poiMap = new Map(poisData.map(poi => [poi.code, poi._id]));
-
- let orders = await Self.rawSql(`
- SELECT a.id poiCode,
- t.id code,
- t.shipped date,
- 'PEDIDO' operation,
- t.totalWithVat totalAmount,
- t.totalWithoutVat totalAmountWithoutTaxes,
- SUM(sv.volume) volume
- FROM ticket t
- JOIN address a ON a.id = t.addressFk
- JOIN saleVolume sv ON sv.ticketFk = t.id
- WHERE t.id IN (?)
- GROUP BY t.id
- `, [tickets]);
-
- // Transformo code en string ya que lo obtenermos como integer
- orders = orders.map(order => {
- return {
- ...order,
- poiId: poiMap.get(order.poiCode.toString()) || undefined,
- code: order.code.toString(),
- date: moment(order.date).format('YYYY-MM-DD'),
- totalAmount: order.totalAmount || undefined,
- totalAmountWithoutTaxes: order.totalAmountWithoutTaxes || undefined,
- timeWindow: [{
- from: config.orderTimeFrom,
- to: config.orderTimeTo
- }],
- orderMeasures: [{
- constraintId: 3, // Volumen
- value: order.volume
- }]
- };
- });
-
- await axios.post(`${config.url}orders`, orders, {
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json',
- 'X-Saas-Apikey': config.key
- }
- });
- };
-};
diff --git a/back/methods/quadminds-api-config/sendPois.js b/back/methods/quadminds-api-config/sendPois.js
deleted file mode 100644
index cb5eef93e..000000000
--- a/back/methods/quadminds-api-config/sendPois.js
+++ /dev/null
@@ -1,87 +0,0 @@
-const axios = require('axios');
-const UserError = require('vn-loopback/util/user-error');
-
-module.exports = Self => {
- Self.remoteMethod('sendPois', {
- description: 'Sends a set of pois',
- accessType: 'WRITE',
- accepts: [{
- arg: 'tickets',
- type: ['number'],
- required: true
- }
- ],
- returns: {
- type: 'string',
- root: true
- },
- http: {
- path: `/sendPois`,
- verb: 'POST'
- }
- });
- Self.sendPois = async tickets => {
- const config = await Self.app.models.QuadmindsApiConfig.findOne();
- if (!config) throw new UserError('Config params not set');
-
- if (tickets.length > config.maxObjects)
- throw new UserError(`Quadminds does not support more than ${config.maxObjects} tickets`);
-
- let pois = await Self.rawSql(`
- WITH deliveryNotes AS (
- SELECT t.id, t.routeFk, tn.description
- FROM ticket t
- JOIN ticketObservation tn ON tn.ticketFk = t.id
- JOIN observationType ot ON ot.id = tn.observationTypeFk
- WHERE ot.code = 'delivery'
- )
- SELECT a.id code,
- c.socialName name,
- IF(ABS(a.latitude - ROUND(a.latitude)) < 0.000001, NULL, a.latitude) latitude,
- IF(ABS(a.longitude - ROUND(a.longitude)) < 0.000001, NULL, a.longitude) longitude,
- a.street,
- a.city locality,
- p.name state,
- co.name country,
- CONCAT_WS(', ', IFNULL(a.street, ''), IFNULL(a.city, ''), IFNULL(p.name, '')) longAddress,
- CONCAT(IFNULL(a.mobile, c.mobile)) phoneNumber,
- dn.description poiDeliveryComments,
- c.email email
- FROM ticket t
- JOIN address a ON a.id = t.addressFk
- JOIN province p ON p.id = a.provinceFk
- JOIN country co ON co.id = p.countryFk
- JOIN client c ON c.id = t.clientFk
- LEFT JOIN deliveryNotes dn ON dn.id = t.id
- WHERE t.id IN (?)
- GROUP BY t.id
- `, [tickets]);
-
- // Transformo code en string ya que lo obtenermos como integer
- pois = pois.map(poi => {
- return {
- ...poi,
- code: poi.code.toString(),
- latitude: poi.latitude || undefined,
- longitude: poi.longitude || undefined,
- address: {
- street: poi.street || undefined,
- locality: poi.locality || undefined,
- state: poi.state || undefined,
- country: poi.country || undefined
- },
- poiDeliveryComments: poi.poiDeliveryComments || undefined,
- phoneNumber: poi.phoneNumber || undefined,
- email: poi.email || undefined
- };
- });
-
- await axios.post(`${config.url}pois`, pois, {
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json',
- 'X-Saas-Apikey': config.key
- }
- });
- };
-};
diff --git a/back/methods/url/getUrl.js b/back/methods/url/getUrl.js
index 5c6e5655f..fa3f7fdad 100644
--- a/back/methods/url/getUrl.js
+++ b/back/methods/url/getUrl.js
@@ -22,7 +22,7 @@ module.exports = Self => {
const url = await Self.app.models.Url.findOne({
where: {
appName,
- environment: process.env.NODE_ENV || 'dev'
+ environment: process.env.NODE_ENV || 'development'
}
});
return url?.url;
diff --git a/back/methods/workerActivity/specs/add.spec.js b/back/methods/workerActivity/specs/add.spec.js
index 352d67723..751cce009 100644
--- a/back/methods/workerActivity/specs/add.spec.js
+++ b/back/methods/workerActivity/specs/add.spec.js
@@ -10,10 +10,10 @@ describe('workerActivity insert()', () => {
try {
await models.WorkerActivityType.create(
- {'code': 'STOP', 'description': 'STOP'}, options
+ {'code': 'TEST', 'description': 'TEST'}, options
);
- await models.WorkerActivity.add(ctx, 'STOP', 'APP', options);
+ await models.WorkerActivity.add(ctx, 'TEST', 'APP', options);
count = await models.WorkerActivity.count(
{'workerFK': 1106}, options
diff --git a/back/model-config.json b/back/model-config.json
index b543071c9..2ced867f7 100644
--- a/back/model-config.json
+++ b/back/model-config.json
@@ -88,6 +88,9 @@
"Language": {
"dataSource": "vn"
},
+ "OsrmConfig": {
+ "dataSource": "vn"
+ },
"Machine": {
"dataSource": "vn"
},
@@ -121,18 +124,21 @@
"Province": {
"dataSource": "vn"
},
- "QuadmindsApiConfig": {
- "dataSource": "vn"
- },
"Autonomy": {
"dataSource": "vn"
},
"Payment": {
"dataSource": "vn"
},
+ "PbxConfig": {
+ "dataSource": "vn"
+ },
"Postcode": {
"dataSource": "vn"
},
+ "Prefix": {
+ "dataSource": "vn"
+ },
"ReferenceRate": {
"dataSource": "vn"
},
diff --git a/back/models/osrm-config.js b/back/models/osrm-config.js
new file mode 100644
index 000000000..f738f305c
--- /dev/null
+++ b/back/models/osrm-config.js
@@ -0,0 +1,4 @@
+module.exports = Self => {
+ require('../methods/osrm-config/optimize')(Self);
+};
+
diff --git a/back/models/osrm-config.json b/back/models/osrm-config.json
new file mode 100644
index 000000000..ae712ba05
--- /dev/null
+++ b/back/models/osrm-config.json
@@ -0,0 +1,24 @@
+{
+ "name": "OsrmConfig",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "osrmConfig"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "required": true
+ },
+ "url": {
+ "type": "string",
+ "required": true
+ },
+ "tolerance": {
+ "type": "number",
+ "required": false
+ }
+ }
+}
diff --git a/back/models/pbx-config.json b/back/models/pbx-config.json
new file mode 100644
index 000000000..44137b55d
--- /dev/null
+++ b/back/models/pbx-config.json
@@ -0,0 +1,27 @@
+{
+ "name": "PbxConfig",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "pbx.config"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true
+ },
+ "defaultPrefix": {
+ "type": "string"
+ }
+ },
+ "acls": [
+ {
+ "property": "*",
+ "accessType": "READ",
+ "principalType": "ROLE",
+ "principalId": "employee",
+ "permission": "ALLOW"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/back/models/prefix.json b/back/models/prefix.json
new file mode 100644
index 000000000..762354caa
--- /dev/null
+++ b/back/models/prefix.json
@@ -0,0 +1,27 @@
+{
+ "name": "Prefix",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "pbx.prefix"
+ }
+ },
+ "properties": {
+ "country": {
+ "type": "string",
+ "id": true
+ },
+ "prefix": {
+ "type": "string"
+ }
+ },
+ "acls": [
+ {
+ "property": "*",
+ "accessType": "READ",
+ "principalType": "ROLE",
+ "principalId": "employee",
+ "permission": "ALLOW"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/back/models/production-config.json b/back/models/production-config.json
index 2fc6d71ff..048264e8c 100644
--- a/back/models/production-config.json
+++ b/back/models/production-config.json
@@ -20,6 +20,9 @@
},
"backupPrinterNotificationDelay": {
"type": "string"
+ },
+ "itemOrderReviewHours": {
+ "type": "number"
}
}
}
\ No newline at end of file
diff --git a/back/models/quadminds-api-config.js b/back/models/quadminds-api-config.js
deleted file mode 100644
index c2773fa0b..000000000
--- a/back/models/quadminds-api-config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = Self => {
- require('../methods/quadminds-api-config/sendPois')(Self);
- require('../methods/quadminds-api-config/sendOrders')(Self);
-};
diff --git a/back/models/quadminds-api-config.json b/back/models/quadminds-api-config.json
deleted file mode 100644
index 4001badf3..000000000
--- a/back/models/quadminds-api-config.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "QuadmindsApiConfig",
- "base": "VnModel",
- "options": {
- "mysql": {
- "table": "quadmindsApiConfig"
- }
- },
- "properties": {
- "id": {
- "type": "number",
- "id": true,
- "required": true
- },
- "url": {
- "type": "string"
- },
- "key": {
- "type": "string"
- },
- "maxObjects": {
- "type": "number"
- },
- "limit": {
- "type": "number"
- },
- "orderTimeFrom": {
- "type": "string"
- },
- "orderTimeTo": {
- "type": "string"
- }
- }
-}
diff --git a/db/.pullinfo.json b/db/.pullinfo.json
index 5b75584d1..b890ffc31 100644
--- a/db/.pullinfo.json
+++ b/db/.pullinfo.json
@@ -9,7 +9,7 @@
},
"vn": {
"view": {
- "expeditionPallet_Print": "99f75145ac2e7b612a6d71e74b6e55f194a465780fd9875a15eb01e6596b447e"
+ "expeditionPallet_Print": "04fc5f2967ce53bfbb85f7f48b9a3dca4a4f7111ac41e1775f4cc7d6538774b2"
}
}
}
diff --git a/db/dump/.dump/data.sql b/db/dump/.dump/data.sql
index 6bcfe2c9f..cd978e4a8 100644
--- a/db/dump/.dump/data.sql
+++ b/db/dump/.dump/data.sql
@@ -4,7 +4,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','11311','315864403260623fede9f0471ef3d9036faf23b1','2024-11-12 08:00:59','11336');
+INSERT INTO `version` VALUES ('vn-database','11377','d3fe5098277c3935c434838b53facb271f84ebec','2024-12-10 07:22:33','11379');
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);
@@ -1065,11 +1065,70 @@ INSERT INTO `versionLog` VALUES ('vn-database','11290','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','11291','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-17 09:10:30',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11294','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:37',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11295','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-10 08:45:13',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11297','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:29',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11297','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11298','00-closure.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:37',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11300','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-18 08:27:05',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11302','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:57',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11308','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-10-23 12:41:55',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11311','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 08:00:57',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11312','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11314','00-restrictedAsterisk.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11315','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11316','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11317','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11319','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11321','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11322','00-entryAcl.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11324','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-13 10:49:47',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11325','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11326','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11330','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11331','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11332','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11336','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11337','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11338','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 09:14:12',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11339','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:05:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11341','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11342','00-itemShelving.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:06:34',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11342','01-itemShelving.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:06:35',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11342','02-itemShelving.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:06:37',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11342','03-itemShelving.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:11:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11342','04-itemShelvingLog.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:11:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11342','05-itemShelvingLog.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:11:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11342','06-itemShelvingLog.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:11:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11343','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:11:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11344','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-13 17:36:45',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11344','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-13 17:46:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11345','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:11:08',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11346','00-address.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:15:02',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11346','01-client.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:16:29',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11346','02-supplier.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:27:57',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11347','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:27:57',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11348','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:28:14',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11349','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:28:14',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11350','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:28:14',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11351','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11353','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:28:14',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11354','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11355','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:28:14',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11357','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:28:16',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11358','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-26 07:28:21',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11359','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11362','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-28 08:52:33',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11363','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11366','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11367','00-deprecate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:04',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11369','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:05',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11371','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:05',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11371','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:20:47',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11371','02-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:22:29',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11371','03-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:22:31',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11372','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-09 13:30:30',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11373','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-02 16:09:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11375','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-03 08:58:20',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11377','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-12-10 07:22:31',NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
@@ -1627,7 +1686,6 @@ INSERT INTO `ACL` VALUES (209,'Ticket','recalculateComponents','WRITE','ALLOW','
INSERT INTO `ACL` VALUES (211,'TravelLog','*','READ','ALLOW','ROLE','buyer',NULL);
INSERT INTO `ACL` VALUES (212,'Thermograph','*','*','ALLOW','ROLE','buyer',NULL);
INSERT INTO `ACL` VALUES (213,'TravelThermograph','*','WRITE','ALLOW','ROLE','buyer',NULL);
-INSERT INTO `ACL` VALUES (214,'Entry','*','*','ALLOW','ROLE','buyer',NULL);
INSERT INTO `ACL` VALUES (216,'TravelThermograph','*','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (218,'Intrastat','*','*','ALLOW','ROLE','buyer',NULL);
INSERT INTO `ACL` VALUES (221,'UserConfig','getUserConfig','READ','ALLOW','ROLE','guest',NULL);
@@ -1656,7 +1714,6 @@ INSERT INTO `ACL` VALUES (258,'PayDem','*','READ','ALLOW','ROLE','employee',NULL
INSERT INTO `ACL` VALUES (259,'Client','createReceipt','*','ALLOW','ROLE','salesAssistant',NULL);
INSERT INTO `ACL` VALUES (260,'PrintServerQueue','*','WRITE','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (261,'SupplierAccount','*','WRITE','ALLOW','ROLE','administrative',783);
-INSERT INTO `ACL` VALUES (262,'Entry','*','*','ALLOW','ROLE','administrative',NULL);
INSERT INTO `ACL` VALUES (263,'InvoiceIn','*','READ','ALLOW','ROLE','administrative',NULL);
INSERT INTO `ACL` VALUES (264,'StarredModule','*','*','ALLOW','ROLE','$authenticated',NULL);
INSERT INTO `ACL` VALUES (265,'ItemBotanical','*','WRITE','ALLOW','ROLE','logisticBoss',NULL);
@@ -1973,13 +2030,11 @@ INSERT INTO `ACL` VALUES (605,'Ticket','sendSms','WRITE','ALLOW','ROLE','employe
INSERT INTO `ACL` VALUES (606,'Ticket','isLocked','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (607,'Ticket','freightCost','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (608,'Ticket','getComponentsSum','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (609,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','delivery',NULL);
+INSERT INTO `ACL` VALUES (609,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','delivery',19295);
INSERT INTO `ACL` VALUES (610,'Ticket','deliveryNoteCsv','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (611,'State','find','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (612,'State','findById','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (613,'State','findOne','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (614,'Worker','find','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (616,'Worker','findOne','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (617,'Worker','filter','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (618,'Worker','getWorkedHours','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (619,'Worker','active','READ','ALLOW','ROLE','employee',NULL);
@@ -2045,7 +2100,6 @@ INSERT INTO `ACL` VALUES (716,'ExpeditionMistake','*','WRITE','ALLOW','ROLE','em
INSERT INTO `ACL` VALUES (717,'WorkerMistake','*','WRITE','ALLOW','ROLE','coolerAssist',NULL);
INSERT INTO `ACL` VALUES (718,'MistakesTypes','*','WRITE','ALLOW','ROLE','coolerAssist',NULL);
INSERT INTO `ACL` VALUES (719,'MistakeType','*','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (720,'MachineWorker','*','READ','ALLOW','ROLE','coolerAssist',NULL);
INSERT INTO `ACL` VALUES (721,'Printer','*','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (722,'SaleMistake','*','WRITE','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (723,'Item','setVisibleDiscard','WRITE','ALLOW','ROLE','employee',NULL);
@@ -2074,7 +2128,7 @@ INSERT INTO `ACL` VALUES (746,'Claim','getSummary','READ','ALLOW','ROLE','claimV
INSERT INTO `ACL` VALUES (747,'CplusRectificationType','*','READ','ALLOW','ROLE','administrative',NULL);
INSERT INTO `ACL` VALUES (748,'SiiTypeInvoiceOut','*','READ','ALLOW','ROLE','salesPerson',NULL);
INSERT INTO `ACL` VALUES (749,'InvoiceCorrectionType','*','READ','ALLOW','ROLE','salesPerson',NULL);
-INSERT INTO `ACL` VALUES (750,'InvoiceOut','transferInvoice','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (750,'InvoiceOut','transfer','WRITE','ALLOW','ROLE','administrative',NULL);
INSERT INTO `ACL` VALUES (751,'Application','executeProc','*','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (752,'Application','executeFunc','*','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (753,'NotificationSubscription','getList','READ','ALLOW','ROLE','employee',NULL);
@@ -2083,13 +2137,10 @@ INSERT INTO `ACL` VALUES (755,'Route','findById','READ','ALLOW','ROLE','employee
INSERT INTO `ACL` VALUES (756,'Route','findOne','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (757,'Route','getRoutesByWorker','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (758,'Route','canViewAllRoute','READ','ALLOW','ROLE','deliveryAssistant',NULL);
-INSERT INTO `ACL` VALUES (759,'Route','cmr','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (760,'Cmr','downloadZip','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (761,'Route','downloadZip','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (762,'Route','filter','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (763,'Route','getByWorker','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (764,'Route','getDeliveryPoint','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (765,'Route','cmrs','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (766,'Route','getSuggestedTickets','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (767,'Route','getTickets','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (768,'Route','guessPriority','WRITE','ALLOW','ROLE','employee',NULL);
@@ -2130,7 +2181,6 @@ INSERT INTO `ACL` VALUES (802,'MailAliasAccount','deleteById','WRITE','ALLOW','R
INSERT INTO `ACL` VALUES (804,'DeviceProduction','*','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (805,'Collection','assign','WRITE','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (806,'ExpeditionPallet','getPallet','READ','ALLOW','ROLE','production',NULL);
-INSERT INTO `ACL` VALUES (807,'MachineWorker','updateInTime','WRITE','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (808,'MobileAppVersionControl','getVersion','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (809,'SaleTracking','delete','WRITE','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (810,'SaleTracking','updateTracking','WRITE','ALLOW','ROLE','production',NULL);
@@ -2216,9 +2266,9 @@ INSERT INTO `ACL` VALUES (895,'ItemShelvingLog','*','READ','ALLOW','ROLE','produ
INSERT INTO `ACL` VALUES (901,'WorkerTimeControl','sendMail','WRITE','ALLOW','ROLE','system',NULL);
INSERT INTO `ACL` VALUES (902,'Entry','filter','READ','ALLOW','ROLE','supplier',NULL);
INSERT INTO `ACL` VALUES (903,'Entry','getBuys','READ','ALLOW','ROLE','supplier',NULL);
-INSERT INTO `ACL` VALUES (904,'Entry','buyLabel','READ','ALLOW','ROLE','supplier',NULL);
+INSERT INTO `ACL` VALUES (904,'Entry','buyLabelSupplier','READ','ALLOW','ROLE','supplier',19295);
INSERT INTO `ACL` VALUES (905,'AddressWaste','*','READ','ALLOW','ROLE','production',NULL);
-INSERT INTO `ACL` VALUES (906,'Entry','print','READ','ALLOW','ROLE','supplier',NULL);
+INSERT INTO `ACL` VALUES (906,'Entry','labelSupplier','READ','ALLOW','ROLE','supplier',19295);
INSERT INTO `ACL` VALUES (907,'Expedition_PrintOut','*','*','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (908,'Docuware','upload','WRITE','ALLOW','ROLE','hrBuyer',13657);
INSERT INTO `ACL` VALUES (909,'Entry','getBuysCsv','READ','ALLOW','ROLE','supplier',19295);
@@ -2230,7 +2280,6 @@ INSERT INTO `ACL` VALUES (914,'VnToken','killSession','*','ALLOW','ROLE','develo
INSERT INTO `ACL` VALUES (915,'ACL','*','WRITE','ALLOW','ROLE','developerBoss',10578);
INSERT INTO `ACL` VALUES (917,'InvoiceOut','refundAndInvoice','WRITE','ALLOW','ROLE','administrative',10578);
INSERT INTO `ACL` VALUES (918,'Worker','__get__descriptor','READ','ALLOW','ROLE','employee',10578);
-INSERT INTO `ACL` VALUES (919,'Worker','findById','READ','ALLOW','ROLE','employee',10578);
INSERT INTO `ACL` VALUES (920,'QuadmindsApiConfig','*','*','ALLOW','ROLE','delivery',19295);
INSERT INTO `ACL` VALUES (922,'SaleGroup','*','WRITE','ALLOW','ROLE','production',19294);
INSERT INTO `ACL` VALUES (923,'Worker','__get__advancedSummary','READ','ALLOW','ROLE','hr',10578);
@@ -2250,6 +2299,76 @@ INSERT INTO `ACL` VALUES (936,'Device','handleUser','*','ALLOW','ROLE','employee
INSERT INTO `ACL` VALUES (937,'WorkerTimeControlMail','count','READ','ALLOW','ROLE','employee',10578);
INSERT INTO `ACL` VALUES (938,'Worker','__get__mail','READ','ALLOW','ROLE','hr',10578);
INSERT INTO `ACL` VALUES (939,'Machine','*','*','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (940,'ItemTypeLog','find','READ','ALLOW','ROLE','employee',10578);
+INSERT INTO `ACL` VALUES (941,'Entry','buyLabel','READ','ALLOW','ROLE','employee',10578);
+INSERT INTO `ACL` VALUES (942,'Cmr','filter','READ','ALLOW','ROLE','production',10578);
+INSERT INTO `ACL` VALUES (943,'Cmr','downloadZip','READ','ALLOW','ROLE','production',10578);
+INSERT INTO `ACL` VALUES (944,'Cmr','print','READ','ALLOW','ROLE','production',10578);
+INSERT INTO `ACL` VALUES (945,'Collection','create','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (946,'Collection','upsert','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (947,'Collection','replaceById','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (948,'Collection','updateAll','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (949,'Collection','updateAttributes','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (950,'Collection','deleteById','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (951,'Collection','destroyAll','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (952,'Collection','destroyById','WRITE','ALLOW','ROLE','productionBoss',10578);
+INSERT INTO `ACL` VALUES (953,'RouteAction','find','READ','ALLOW','ROLE','delivery',10578);
+INSERT INTO `ACL` VALUES (954,'RouteComplement','find','READ','ALLOW','ROLE','delivery',10578);
+INSERT INTO `ACL` VALUES (955,'RouteComplement','create','WRITE','ALLOW','ROLE','delivery',10578);
+INSERT INTO `ACL` VALUES (956,'RouteComplement','deleteById','WRITE','ALLOW','ROLE','delivery',10578);
+INSERT INTO `ACL` VALUES (957,'SaleGroup','find','READ','ALLOW','ROLE','production',10578);
+INSERT INTO `ACL` VALUES (958,'Worker','canCreateAbsenceInPast','WRITE','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (959,'WorkerRelative','updateAttributes','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (960,'WorkerRelative','crud','WRITE','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (961,'WorkerRelative','findById','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (962,'WorkerRelative','find','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (963,'WorkerRelative','upsert','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (964,'WorkerRelative','filter','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (965,'WorkerIrpf','updateAttributes','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (966,'WorkerIrpf','crud','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (967,'WorkerIrpf','findById','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (968,'WorkerIrpf','find','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (969,'WorkerIrpf','upsert','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (970,'WorkerIrpf','filter','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (971,'DisabilityGrade','updateAttributes','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (972,'DisabilityGrade','crud','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (973,'DisabilityGrade','findById','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (974,'DisabilityGrade','find','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (975,'DisabilityGrade','upsert','*','ALLOW','ROLE','hr',10578);
+INSERT INTO `ACL` VALUES (976,'Entry','upsert','WRITE','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (977,'Entry','updateAttributes','WRITE','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (978,'Entry','isBooked','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (979,'Entry','findById','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (980,'Entry','find','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (981,'Entry','filter','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (982,'Entry','count','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (983,'Entry','getEntry','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (984,'Entry','getBuys','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (985,'Entry','findOne','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (986,'Entry','deleteBuys','WRITE','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (987,'Entry','editLatestBuys','WRITE','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (988,'Entry','importBuys','WRITE','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (989,'Entry','importBuysPreview','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (990,'Entry','lastItemBuys','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (991,'Entry','latestBuysFilter','READ','ALLOW','ROLE','administrative',10578);
+INSERT INTO `ACL` VALUES (992,'Entry','upsert','WRITE','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (993,'Entry','updateAttributes','WRITE','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (994,'Entry','findById','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (995,'Entry','find','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (996,'Entry','filter','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (997,'Entry','count','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (998,'Entry','getEntry','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (999,'Entry','getBuys','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1000,'Entry','findOne','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1001,'Entry','deleteBuys','WRITE','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1002,'Entry','editLatestBuys','WRITE','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1003,'Entry','importBuys','WRITE','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1004,'Entry','importBuysPreview','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1005,'Entry','lastItemBuys','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1006,'Entry','latestBuysFilter','READ','ALLOW','ROLE','buyer',10578);
+INSERT INTO `ACL` VALUES (1007,'ItemShelving','getItemsByReviewOrder','READ','ALLOW','ROLE','production',19294);
+INSERT INTO `ACL` VALUES (1008,'Entry','buyLabelSupplier','READ','ALLOW','ROLE','employee',19295);
+INSERT INTO `ACL` VALUES (1009,'Entry','buyLabel','READ','ALLOW','ROLE','supplier',19295);
INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee');
INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee');
@@ -2424,70 +2543,47 @@ INSERT INTO `cplusTaxBreak` VALUES (7,'E6 - Exenta por otros');
INSERT INTO `claimResponsible` VALUES (1,'Compradores',0,'buy');
INSERT INTO `claimResponsible` VALUES (2,'Proveedor',0,'sup');
-INSERT INTO `claimResponsible` VALUES (3,'Entradores',0,'ent');
INSERT INTO `claimResponsible` VALUES (4,'Camareros',0,'bar');
INSERT INTO `claimResponsible` VALUES (6,'Sacadores',0,'pic');
INSERT INTO `claimResponsible` VALUES (7,'Revisadores',0,'chk');
-INSERT INTO `claimResponsible` VALUES (8,'Calidad general',0,'qas');
INSERT INTO `claimResponsible` VALUES (9,'Encajadores',0,'pck');
INSERT INTO `claimResponsible` VALUES (10,'Clima',0,'wea');
INSERT INTO `claimResponsible` VALUES (11,'Comerciales',1,'com');
INSERT INTO `claimResponsible` VALUES (12,'Clientes',1,'cli');
-INSERT INTO `claimResponsible` VALUES (13,'Administración',0,'adm');
INSERT INTO `claimResponsible` VALUES (14,'Agencia',0,'age');
INSERT INTO `claimResponsible` VALUES (15,'Repartidores',0,'del');
INSERT INTO `claimResponsible` VALUES (16,'Informatica',0,'ite');
INSERT INTO `claimResponsible` VALUES (17,'Transp.origen',0,'tra');
INSERT INTO `claimResponsible` VALUES (18,'Confeccion',0,'con');
INSERT INTO `claimResponsible` VALUES (19,'OTROS',0,'oth');
-INSERT INTO `claimResponsible` VALUES (21,'Gerencia',0,'man');
INSERT INTO `claimResponsible` VALUES (22,'Paletizadores',0,'pal');
INSERT INTO `claimResponsible` VALUES (23,'Preparación Previa',0,'pre');
-INSERT INTO `claimResponsible` VALUES (24,'Almacén PCA',0,'war');
INSERT INTO `claimResponsible` VALUES (25,'Huelga',0,'str');
-INSERT INTO `claimResponsible` VALUES (27,'Prep. por caja',0,'');
+INSERT INTO `claimResponsible` VALUES (27,'Prep. por caja',0,'pbb');
INSERT INTO `claimResponsible` VALUES (45,'Negativo',0,'neg');
-INSERT INTO `claimReason` VALUES (1,'Prisas',0);
-INSERT INTO `claimReason` VALUES (2,'Novato',0);
INSERT INTO `claimReason` VALUES (3,'Exceso de confianza',0);
-INSERT INTO `claimReason` VALUES (4,'Exceso de celo',0);
-INSERT INTO `claimReason` VALUES (5,'Indiferencia',0);
INSERT INTO `claimReason` VALUES (6,'Extraviado o Hurto',0);
INSERT INTO `claimReason` VALUES (7,'Incompetencia',0);
-INSERT INTO `claimReason` VALUES (8,'Ubicación erronea',0);
-INSERT INTO `claimReason` VALUES (9,'Dat.Inctos/Pak.conf',0);
-INSERT INTO `claimReason` VALUES (10,'Datos duplicados',0);
-INSERT INTO `claimReason` VALUES (11,'Fallo stock',0);
-INSERT INTO `claimReason` VALUES (12,'Innovación',0);
INSERT INTO `claimReason` VALUES (13,'Distracción',1);
-INSERT INTO `claimReason` VALUES (15,'Portes indebidos',0);
INSERT INTO `claimReason` VALUES (16,'Baja calidad',0);
INSERT INTO `claimReason` VALUES (17,'Defectuoso',0);
-INSERT INTO `claimReason` VALUES (19,'Endiñado',0);
INSERT INTO `claimReason` VALUES (20,'Calor',0);
INSERT INTO `claimReason` VALUES (21,'Frio',0);
INSERT INTO `claimReason` VALUES (22,'Cambiado',0);
-INSERT INTO `claimReason` VALUES (24,'Cansancio',1);
INSERT INTO `claimReason` VALUES (25,'Mal etiquetado',1);
-INSERT INTO `claimReason` VALUES (26,'Cantidad malentendido',0);
-INSERT INTO `claimReason` VALUES (30,'No revisado',1);
INSERT INTO `claimReason` VALUES (34,'Error fotografia',0);
INSERT INTO `claimReason` VALUES (40,'Fallo Personal VN',0);
-INSERT INTO `claimReason` VALUES (41,'Fallo Personal Cliente',0);
INSERT INTO `claimReason` VALUES (42,'Otros',0);
INSERT INTO `claimReason` VALUES (43,'Precio alto',0);
-INSERT INTO `claimReason` VALUES (44,'Abuso de confianza',0);
INSERT INTO `claimReason` VALUES (45,'Retraso Agencia',0);
INSERT INTO `claimReason` VALUES (46,'Delicado',0);
-INSERT INTO `claimReason` VALUES (47,'Seco',0);
INSERT INTO `claimReason` VALUES (48,'Retraso Reparto',0);
INSERT INTO `claimReason` VALUES (49,'Mal Embalado',0);
INSERT INTO `claimReason` VALUES (50,'Tumbado',0);
INSERT INTO `claimReason` VALUES (51,'Enfermo/Plaga',0);
INSERT INTO `claimReason` VALUES (52,'Mala gestión comercial',0);
INSERT INTO `claimReason` VALUES (53,'Mala gestión comprador',0);
-INSERT INTO `claimReason` VALUES (54,'A2',0);
INSERT INTO `claimReason` VALUES (55,'Entrega 48h o más',0);
INSERT INTO `claimReason` VALUES (56,'Error cliente',0);
INSERT INTO `claimReason` VALUES (57,'A2/B1',0);
@@ -2501,7 +2597,6 @@ INSERT INTO `claimRedelivery` VALUES (5,'Tour');
INSERT INTO `claimRedelivery` VALUES (6,'Fuera Peninsula');
INSERT INTO `claimRedelivery` VALUES (7,'Francia');
-INSERT INTO `claimResult` VALUES (1,'Otros daños');
INSERT INTO `claimResult` VALUES (2,'Roces');
INSERT INTO `claimResult` VALUES (3,'Humedad');
INSERT INTO `claimResult` VALUES (4,'Deshidratacion');
@@ -2510,26 +2605,20 @@ INSERT INTO `claimResult` VALUES (6,'Incompleto (Faltas)');
INSERT INTO `claimResult` VALUES (7,'Error packing');
INSERT INTO `claimResult` VALUES (8,'Error color');
INSERT INTO `claimResult` VALUES (9,'Error medida');
-INSERT INTO `claimResult` VALUES (10,'Error origen');
INSERT INTO `claimResult` VALUES (11,'Envejecido');
-INSERT INTO `claimResult` VALUES (12,'Venta Perdida');
INSERT INTO `claimResult` VALUES (13,'Duplicacion');
INSERT INTO `claimResult` VALUES (14,'Rechazado');
INSERT INTO `claimResult` VALUES (15,'Rotura');
INSERT INTO `claimResult` VALUES (16,'Deterioro/Estropeado');
INSERT INTO `claimResult` VALUES (17,'Podrido');
-INSERT INTO `claimResult` VALUES (18,'Baboso');
-INSERT INTO `claimResult` VALUES (19,'Cocido');
INSERT INTO `claimResult` VALUES (20,'Congelado');
INSERT INTO `claimResult` VALUES (21,'Machacado');
-INSERT INTO `claimResult` VALUES (22,'Error precio');
INSERT INTO `claimResult` VALUES (23,'Manchado');
INSERT INTO `claimResult` VALUES (24,'No entregado');
-INSERT INTO `claimResult` VALUES (25,'Cobro indebido');
INSERT INTO `claimResult` VALUES (26,'Decepcion/Esperaba mas');
INSERT INTO `claimResult` VALUES (27,'Otros');
INSERT INTO `claimResult` VALUES (28,'Baboso/Cocido');
-INSERT INTO `claimResult` VALUES (29,'Video Camara');
+INSERT INTO `claimResult` VALUES (29,'Videocámaras');
INSERT INTO `component` VALUES (10,'Precios Especiales',4,NULL,NULL,1,'specialPrices',0);
INSERT INTO `component` VALUES (14,'porte extra por dia semana',6,NULL,NULL,1,'extraCostPerWeekDay',0);
@@ -2577,64 +2666,71 @@ 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,116,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,130,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,5,NULL,72,0,0,1,1,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (23,'CMA','CAMARA',15,16,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (31,'it','INFORMATICA',6,7,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (35,'finance','FINANZAS',10,11,NULL,0,0,0,1,0,1,'/1/',NULL,1,'begonya@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (36,'labor','LABORAL',12,13,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (36,'labor','LABORAL',12,13,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,37,NULL,72,1,1,1,11,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,1,NULL,NULL,NULL,'ON_PREPARATION');
INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PACKING');
-INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',38,39,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (43,'VT','VENTAS',40,75,NULL,0,0,0,1,17,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (44,'management','GERENCIA',76,77,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',78,79,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',80,81,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'DELIVERY');
-INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',82,83,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE');
-INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',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 (52,NULL,'CARGA AEREA',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 (41,'administration','ADMINISTRACION',38,39,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',40,89,NULL,0,0,0,1,24,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (44,'management','GERENCIA',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 (45,'logistic','LOGISTICA',92,93,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',94,95,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'DELIVERY');
+INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',96,97,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE');
+INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',98,99,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',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 (53,'marketing','MARKETING Y COMUNICACIÓN',41,42,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',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 (54,NULL,'ORNAMENTALES',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 (55,NULL,'TALLER NATURAL',21,22,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',23,24,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',90,93,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD');
-INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',94,95,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',104,107,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD');
+INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',108,109,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',43,44,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'CLAIM');
-INSERT INTO `department` VALUES (61,NULL,'VNH',96,99,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',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 (61,NULL,'VNH',110,113,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',114,115,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',25,26,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',102,103,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',45,46,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',104,105,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',106,107,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',97,98,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',116,117,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',45,46,4250,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',118,119,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',120,121,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',111,112,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',27,28,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',47,48,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,'spainTeam2','EQUIPO ESPAÑA 2',49,50,3797,0,0,0,2,0,43,'/1/43/','es2_equipo',1,'es2@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
-INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',51,52,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',1,'es1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
+INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',49,50,3797,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',51,52,24065,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',53,54,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',55,56,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',57,58,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',108,109,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,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',1,'es3@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
+INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',122,123,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,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/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',29,30,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',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PALLETIZING');
INSERT INTO `department` VALUES (130,NULL,'REVISION',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_CHECKING');
-INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',91,92,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',105,106,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',110,111,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',112,113,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',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 (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,'internationalTeam','EQUIPO INTERNACIONAL',69,70,33320,0,0,0,2,0,43,'/1/43/','int_equipo',1,'international@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (133,'franceTeamManagement','EQUIPO GESTIÓN FRANCIA',63,64,9751,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,8964,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',124,125,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',126,127,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',128,129,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/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (140,'internationalTeam','EQUIPO INTERNACIONAL',69,70,24065,0,0,0,2,0,43,'/1/43/','int_equipo',1,'international@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (141,NULL,'PREVIA',35,36,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (146,NULL,'VERDNACOLOMBIA',3,4,NULL,72,0,0,2,0,22,'/1/22/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (147,'spainTeamAsia','EQUIPO ESPAÑA ASIA',71,72,40214,0,0,0,2,0,43,'/1/43/','esA_equipo',0,'esA@verdnatura.es',0,0,0,0,NULL,NULL,'5500',NULL);
-INSERT INTO `department` VALUES (148,NULL,'CAPTATION FRANCIA',73,74,NULL,0,0,0,2,0,43,'/1/43/',NULL,0,NULL,0,0,0,0,NULL,NULL,'6000',NULL);
+INSERT INTO `department` VALUES (147,'spainTeamAsia','EQUIPO ESPAÑA ASIA',71,72,40214,0,0,0,2,0,43,'/1/43/','esA_equipo',1,'esA@verdnatura.es',0,0,0,0,NULL,NULL,'5500',NULL);
+INSERT INTO `department` VALUES (148,'franceTeamCatchment','EQUIPO CAPTACIÓN FRANCIA',73,74,25178,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,'6000',NULL);
+INSERT INTO `department` VALUES (149,'spainTeamCatchment','EQUIPO ESPAÑA CAPTACIÓN',75,76,1203,0,0,0,2,0,43,'/1/43/','es_captacion_equipo',1,'es_captacion@verdnatura.es',0,0,0,0,NULL,NULL,'5700',NULL);
+INSERT INTO `department` VALUES (150,'spainTeamLevanteIslands','EQUIPO ESPAÑA LEVANTE/ISLAS',77,78,1118,0,0,0,2,0,43,'/1/43/','es_levanteislas_equipo',1,'levanteislas.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5000',NULL);
+INSERT INTO `department` VALUES (151,'spainTeamNorthwest','EQUIPO ESPAÑA NOROESTE',79,80,7102,0,0,0,2,0,43,'/1/43/','es_noroeste_equipo',1,'noroeste.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5300',NULL);
+INSERT INTO `department` VALUES (152,'spainTeamNortheast','EQUIPO ESPAÑA NORESTE',81,82,1118,0,0,0,2,0,43,'/1/43/','es_noreste_equipo',1,'noreste.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5200',NULL);
+INSERT INTO `department` VALUES (153,'spainTeamSouth','EQUIPO ESPAÑA SUR',83,84,36578,0,0,0,2,0,43,'/1/43/','es_sur_equipo',1,'sur.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5400',NULL);
+INSERT INTO `department` VALUES (154,'spainTeamCenter','EQUIPO ESPAÑA CENTRO',85,86,4661,0,0,0,2,0,43,'/1/43/','es_centro_equipo',1,'centro.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5100',NULL);
+INSERT INTO `department` VALUES (155,'spainTeamVip','EQUIPO ESPAÑA VIP',87,88,5432,0,0,0,2,0,43,'/1/43/','es_vip_equipo',1,'vip.verdnatura@gmail.com',0,0,0,0,NULL,NULL,'5600',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);
@@ -2736,7 +2832,6 @@ INSERT INTO `state` VALUES (7,'Sin Acabar',1,0,'NOT_READY',7,0,0,0,0,0,0,4,1,'al
INSERT INTO `state` VALUES (8,'Revisado',8,2,'CHECKED',8,0,1,0,3,0,0,1,0,'warning');
INSERT INTO `state` VALUES (9,'Encajando',9,3,'PACKING',9,0,1,0,0,0,0,1,0,NULL);
INSERT INTO `state` VALUES (10,'Encajado',10,3,'PACKED',10,0,1,0,0,0,0,0,0,NULL);
-INSERT INTO `state` VALUES (11,'Facturado',0,4,'INVOICED',11,0,1,0,0,0,0,0,0,NULL);
INSERT INTO `state` VALUES (12,'Bloqueado',0,0,'BLOCKED',12,0,0,0,0,0,0,4,1,'alert');
INSERT INTO `state` VALUES (13,'En Reparto',11,4,'ON_DELIVERY',13,0,1,0,0,0,0,0,0,NULL);
INSERT INTO `state` VALUES (14,'Preparado',6,2,'PREPARED',14,0,1,0,2,0,0,1,0,'warning');
@@ -2749,19 +2844,15 @@ INSERT INTO `state` VALUES (23,'URGENTE',5,2,'LAST_CALL',23,1,0,1,0,0,0,4,1,'suc
INSERT INTO `state` VALUES (24,'Encadenado',4,0,'CHAINED',24,0,0,0,0,0,0,3,1,'success');
INSERT INTO `state` VALUES (25,'Embarcando',3,0,'BOARDING',25,1,0,0,0,0,0,3,0,'alert');
INSERT INTO `state` VALUES (26,'Prep Previa',5,0,'PREVIOUS_PREPARATION',28,1,0,0,1,0,0,2,0,'warning');
-INSERT INTO `state` VALUES (27,'Prep Asistida',5,2,'ASSISTED_PREPARATION',27,0,0,0,0,0,0,2,0,'success');
INSERT INTO `state` VALUES (28,'Previa OK',3,0,'OK PREVIOUS',28,1,0,1,1,1,1,3,0,'warning');
INSERT INTO `state` VALUES (29,'Previa Impreso',4,0,'PRINTED PREVIOUS',29,1,0,1,0,0,1,2,0,'success');
-INSERT INTO `state` VALUES (30,'Embarcado',4,2,'BOARD',30,0,0,0,2,0,0,3,0,'success');
INSERT INTO `state` VALUES (31,'Polizon Impreso',4,2,'PRINTED STOWAWAY',29,1,0,1,0,0,1,2,0,'success');
-INSERT INTO `state` VALUES (32,'Polizon OK',3,2,'OK STOWAWAY',31,1,0,0,1,1,1,3,0,'warning');
INSERT INTO `state` VALUES (33,'Auto_Impreso',4,0,'PRINTED_AUTO',29,1,0,1,0,0,1,2,0,'success');
INSERT INTO `state` VALUES (34,'Pte Pago',3,0,'WAITING_FOR_PAYMENT',34,0,0,0,0,0,0,4,1,'alert');
INSERT INTO `state` VALUES (35,'Semi-Encajado',9,3,'HALF_PACKED',10,0,1,0,0,0,0,1,0,NULL);
INSERT INTO `state` VALUES (36,'Previa Revisando',3,0,'PREVIOUS_CONTROL',37,1,0,0,4,0,1,2,0,'warning');
INSERT INTO `state` VALUES (37,'Previa Revisado',3,0,'PREVIOUS_CONTROLLED',29,1,0,1,0,0,1,2,0,'warning');
INSERT INTO `state` VALUES (38,'Prep Cámara',6,2,'COOLER_PREPARATION',14,0,0,0,2,0,0,2,0,'warning');
-INSERT INTO `state` VALUES (41,'Prep Parcial',6,2,'PARTIAL_PREPARATION',14,0,0,0,2,0,0,2,0,'warning');
INSERT INTO `state` VALUES (42,'Entregado en parte',13,3,'PARTIAL_DELIVERED',16,0,1,0,0,0,0,0,0,NULL);
INSERT INTO `state` VALUES (43,'Preparación por caja',6,2,'BOX_PICKING',42,0,0,0,2,0,0,2,0,'warning');
@@ -2772,6 +2863,17 @@ INSERT INTO `ticketCanAdvanceConfig` VALUES (1,5);
INSERT INTO `volumeConfig` VALUES (2.67,1.60,0.8,150,0.30,120,57,2.0,50,200,10,167.0);
+INSERT INTO `workerActivityType` VALUES ('CLAIM','RECLAMACIONES');
+INSERT INTO `workerActivityType` VALUES ('DELIVERY','REPARTO');
+INSERT INTO `workerActivityType` VALUES ('FIELD','CAMPOS');
+INSERT INTO `workerActivityType` VALUES ('ON_CHECKING','REVISION');
+INSERT INTO `workerActivityType` VALUES ('ON_PREPARATION','SACADO');
+INSERT INTO `workerActivityType` VALUES ('PACKING','ENCAJADO');
+INSERT INTO `workerActivityType` VALUES ('PALLETIZING','PALETIZADO');
+INSERT INTO `workerActivityType` VALUES ('PREVIOUS','ARTIFICIAL-CÁMARA');
+INSERT INTO `workerActivityType` VALUES ('STOP','PARADA');
+INSERT INTO `workerActivityType` VALUES ('STORAGE','ALMACENAJE');
+
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);
@@ -3101,6 +3203,7 @@ USE `sage`;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
INSERT INTO `TiposIva` VALUES (2,0,'Operaciones no sujetas',0.0000000000,0.0000000000,0.0000000000,'','4770000020','','','','','','','95B21A93-5910-489D-83BB-C32788C9B19D','','','','','','','','','',0);
+INSERT INTO `TiposIva` VALUES (3,0,'IVA ESPECIAL 2%',0.0000000000,2.0000000000,0.0000000000,'4720000002','4770000012','','','','','','','9E6160D5-984E-4643-ACBC-1EBC3BF73360','','','','','','','','','',0);
INSERT INTO `TiposIva` VALUES (4,0,'I.V.A. 4%',0.0000000000,4.0000000000,0.0000000000,'4720000004','4770000004','','6310000000','','','','','9E6160D5-984E-4643-ACBC-1EBC3BF73360','','','','','','','','','',0);
INSERT INTO `TiposIva` VALUES (5,0,'I.V.A. 4% y R.E. 0.5%',0.0000000000,4.0000000000,0.5000000000,'','4770000504','4770000405','','','','','','DBEFA562-63FB-4FFC-8171-64F0C6F065FF','','','','','','','','','',0);
INSERT INTO `TiposIva` VALUES (6,0,'H.P. IVA 4% CEE',0.0000000000,4.0000000000,0.0000000000,'4721000004','4771000004','','','','','','','DD0ECBA8-2EF5-425E-911B-623580BADA77','','','','','','','','','',0);
diff --git a/db/dump/.dump/privileges.sql b/db/dump/.dump/privileges.sql
index 486bec661..f608d0e8a 100644
--- a/db/dump/.dump/privileges.sql
+++ b/db/dump/.dump/privileges.sql
@@ -49,6 +49,7 @@ INSERT IGNORE INTO `db` VALUES ('','geo','developerBoss','Y','Y','Y','Y','N','N'
INSERT IGNORE INTO `db` VALUES ('','floranet','developer','Y','Y','Y','Y','N','N','N','N','N','N','N','N','N','N','N','N','Y','N','N','N');
INSERT IGNORE INTO `db` VALUES ('','tmp','guest','Y','Y','Y','Y','N','Y','N','N','N','N','Y','N','N','N','N','N','N','N','N','N');
INSERT IGNORE INTO `db` VALUES ('','util','salix','Y','Y','Y','Y','N','N','N','N','N','N','Y','N','N','N','N','N','Y','N','N','N');
+INSERT IGNORE INTO `db` VALUES ('','srt','maintenanceBoss','Y','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
INSERT IGNORE INTO `db` VALUES ('','dipole','developerBoss','Y','Y','Y','Y','N','N','Y','N','N','N','N','N','N','N','N','N','Y','N','N','N');
INSERT IGNORE INTO `db` VALUES ('','bi','developerBoss','Y','Y','Y','Y','N','N','Y','N','N','N','N','N','N','N','N','N','Y','N','N','N');
INSERT IGNORE INTO `db` VALUES ('','sage','developerBoss','Y','Y','Y','Y','N','N','Y','N','N','N','N','N','N','N','N','N','Y','N','N','N');
@@ -804,7 +805,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','edi','grafana','supplyResponse','ju
INSERT IGNORE INTO `tables_priv` VALUES ('','cache','customer','last_buy','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','salesAssistant','client','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','invoiceInTax','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','salesAssistant','workerTeam','juan@10.5.1.2','0000-00-00 00:00:00','Select,Insert,Update','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','salesAssistant','workerTeam','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','postgresql','hr','profile_type','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','postgresql','hr','profile_media','alexm@%','0000-00-00 00:00:00','Select,Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','recovery','alexm@%','0000-00-00 00:00:00','Select','');
@@ -834,7 +835,6 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','bi','salesPerson','tarifa_component
INSERT IGNORE INTO `tables_priv` VALUES ('','srt','employee','expeditionLog','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','bs','salesPerson','clientNewBorn','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','saleItemShelving__','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','salesBoss','workerTeam','juan@10.5.1.2','0000-00-00 00:00:00','Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','srt','employee','expedition','alexm@%','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemShelvingStock','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','saleParking__','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
@@ -886,7 +886,6 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','ticketDms','alexm@%
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','salesPerson','ektEntryAssign','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select,Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','intrastat','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','supplierAgencyTerm','alexm@%','0000-00-00 00:00:00','Update','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerAssist','entryConfig','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','packager','franceExpressConfig','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','manager','ticketLog','juan@10.5.1.2','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','ticketCollection','alexm@%','0000-00-00 00:00:00','Delete','');
@@ -941,11 +940,10 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','volumeConfig','alex
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerBoss','ticketTrackingState','alexm@%','0000-00-00 00:00:00','Select,Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','warehouse','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','role','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','workCenter','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','clientCredit','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','worker','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerAssist','workerAppTester','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','propertyGroup','alexm@%','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','propertyGroup','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','worker','alexm@%','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','workerBusinessType','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','workerDepartment','alexm@%','0000-00-00 00:00:00','Select','');
@@ -964,7 +962,6 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','workerMana','alexm@%',
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','salesPerson','workerMana','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','claimManager','ticketPackaging','alexm@%','0000-00-00 00:00:00','Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','claimManager','ticketPackagingStartingStock','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','claimManager','entryConfig','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','officeBoss','ticketPackagingStartingStock','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','workerRelatives','guillermo@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','ticketPackagingStartingStock','alexm@%','0000-00-00 00:00:00','Select','');
@@ -1246,7 +1243,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','bs','deliveryAssistant','m3','alexm
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','ticketDms','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','time','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','v_Articles_botanical','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','workCenter','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','inventoryConfig','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','workerDepartment','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','zoneEvent','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','bi','deliveryAssistant','rotacion','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -1388,7 +1385,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','entry','jenki
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 ('','vn','administrative','farmingDeliveryNote','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
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','');
@@ -1419,13 +1416,10 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financialBoss','accountDetail'
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','accountDetail','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','maintenanceBoss','project','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','maintenanceBoss','machineDetail','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','antenna','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','bufferPool','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','enteringLog','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','expeditionLoading','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','failureLog','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','movingLog','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','sorterLog','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','workerActivityType','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyerSalesAssistant','route','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','workCenter','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerSalesAssistant','Rutas','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','genericAllocation','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','businessReasonEnd','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','buy_edi','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -1463,7 +1457,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleDms','gu
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleInvoiceIn','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleNotes','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','saleGroup','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenanceBoss','bufferLog','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','shelvingLog','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financialBoss','supplierAccount','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','tillSerial','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','stockBuyed','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -1485,7 +1479,6 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemStateTag'
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','material','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','saleUnit','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','origin','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','itemType','jgallego@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','delivery','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemFarmingTag','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemWrappingTag','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
@@ -1494,6 +1487,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemStemTag',
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemBaseTag','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemBreederTag','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemShelvingLog','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemTextureTag','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
/*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */;
/*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */;
@@ -1873,6 +1867,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','buy_getVolumeByE
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_getVolumeByEntry','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','entry_moveNotPrinted','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','buy_getVolume','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','stockBuyedByWorker','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','buy_getsplit','PROCEDURE','juan@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesAssistant','subordinategetlist','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_afterUpsert','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
@@ -1914,7 +1909,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','util','android','debugadd','PROCEDUR
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','copyComponentsFromSaleList','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','duaEntryValueUpdate','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','duaInvoiceInBooking','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemshelvinglog_get','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','expedition_getstate','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','srt','production','expedition_scan','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','productionBoss','saleSplit','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -1925,7 +1919,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','util','grafana','firstdayofyear','FU
INSERT IGNORE INTO `procs_priv` VALUES ('','util','claimManager','dayend','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','employee','log_add','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','srt','employee','moving_between','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','bi','financial','defaultersfromdate','PROCEDURE','juan@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','bi','financial','defaultersfromdate','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','getuser','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','hasanynegativebase','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','marketingBoss','hasanynegativebase','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
@@ -2020,6 +2014,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hr','logshow','PROCEDURE','alex
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyerBoss','supplierpackaging_reportsource','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financialBoss','supplierexpenses','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','grafana','firstdayofweek','FUNCTION','juan@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','stockBuyed_add','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','mail_insert','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','duaParcialMake','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','palletizerBoss','packingsite_startcollection','PROCEDURE','alexm@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2099,7 +2094,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','collection_printst
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','deviceproductionuser_getworker','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','ticket_printlabelprevious','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','ticket_isoutclosurezone','FUNCTION','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','workermachinery_isregistered','FUNCTION','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','ticketstatetoday_setstate','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','device_checklogin','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','worker_getfromhasmistake','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2107,7 +2101,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','sectorcollection_n
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','sectorcollection_get','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','setparking','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','shelvingparking_get','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','machine_getworkerplate','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','report_print','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','saletracking_addprevok','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','sectorcollectionsalegroup_add','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','saletracking_updateischecked','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2116,7 +2110,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','travel_updatepacki
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','freelance_getinfo','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','company_getfiscaldata','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','expedition_getfromroute','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','machineworker_gethistorical','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','buy_getUltimate','FUNCTION','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemplacementsupplyaiming','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','expeditionstate_addbypallet','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','srt','production','expeditionloading_add','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2137,7 +2131,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','srt','delivery','buffer_settypebynam
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expedition_getstate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','srt','delivery','expedition_scan','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_get','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelvinglog_get','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_add','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_getsaledate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemshelving_filterbuyer','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2150,7 +2143,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','collection_printstic
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','deviceproductionuser_getworker','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','ticket_printlabelprevious','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','ticket_isoutclosurezone','FUNCTION','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','workermachinery_isregistered','FUNCTION','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','ticketstatetoday_setstate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','device_checklogin','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','worker_getfromhasmistake','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2158,7 +2150,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','sectorcollection_new
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','sectorcollection_get','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','setparking','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','shelvingparking_get','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','machine_getworkerplate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','buy_getLastWithoutInventory','FUNCTION','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','saletracking_addprevok','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','sectorcollectionsalegroup_add','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','saletracking_updateischecked','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2167,7 +2159,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','travel_updatepacking
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','freelance_getinfo','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','company_getfiscaldata','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expedition_getfromroute','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','machineworker_gethistorical','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesAssistant','zone_getPostalCode','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemplacementsupplyaiming','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expeditionstate_addbypallet','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','srt','delivery','expeditionloading_add','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2257,9 +2249,10 @@ INSERT IGNORE INTO `global_priv` VALUES ('','assetManager','{\"access\":0,\"vers
INSERT IGNORE INTO `global_priv` VALUES ('','buyer','{\"access\": 0, \"version_id\": 101106, \"is_role\": true}');
INSERT IGNORE INTO `global_priv` VALUES ('','buyerAssistant','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','buyerBoss','{\"access\": 0, \"version_id\": 101106, \"is_role\": true}');
+INSERT IGNORE INTO `global_priv` VALUES ('','buyerSalesAssistant','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','claimManager','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','cooler','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
-INSERT IGNORE INTO `global_priv` VALUES ('','coolerAssist','{\"access\":0,\"version_id\":100707,\"is_role\":true}');
+INSERT IGNORE INTO `global_priv` VALUES ('','coolerAssist','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','coolerBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','customer','{\"access\": 0, \"max_questions\": 0, \"max_updates\": 30000, \"max_connections\": 300000, \"max_user_connections\": 400, \"max_statement_time\": 0.000000, \"is_role\": true,\"version_id\":100707}');
INSERT IGNORE INTO `global_priv` VALUES ('','delivery','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
diff --git a/db/dump/.dump/structure.sql b/db/dump/.dump/structure.sql
index e6c0e6674..a4ae460b1 100644
--- a/db/dump/.dump/structure.sql
+++ b/db/dump/.dump/structure.sql
@@ -75,26 +75,6 @@ SET character_set_client = utf8;
1 AS `password` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `accountLog__`
---
-
-DROP TABLE IF EXISTS `accountLog__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `accountLog__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `msg` varchar(255) NOT NULL,
- `pid` varchar(255) NOT NULL,
- `user` varchar(255) NOT NULL,
- `host` varchar(255) NOT NULL,
- `rhost` varchar(255) NOT NULL,
- `time` varchar(255) NOT NULL,
- `summaryId` varchar(30) DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2024-09-02 refs #7819';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `emailUser`
--
@@ -246,8 +226,7 @@ SET character_set_client = utf8;
1 AS `email`,
1 AS `nickname`,
1 AS `lang`,
- 1 AS `role`,
- 1 AS `recoverPass` */;
+ 1 AS `role` */;
SET character_set_client = @saved_cs_client;
--
@@ -423,8 +402,8 @@ CREATE TABLE `user` (
`created` timestamp NOT NULL DEFAULT current_timestamp(),
`updated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`image` varchar(255) DEFAULT NULL,
- `recoverPass` tinyint(3) unsigned NOT NULL DEFAULT 1 COMMENT 'Deprecated',
- `sync` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Deprecated',
+ `recoverPass__` tinyint(3) unsigned NOT NULL DEFAULT 1 COMMENT '@deprecated 2024-11-13',
+ `sync__` tinyint(4) NOT NULL DEFAULT 0 COMMENT '@deprecated 2024-11-13',
`hasGrant` tinyint(1) NOT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
`passExpired` date DEFAULT NULL,
@@ -2955,55 +2934,55 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `analisis_ventas_update`()
-BEGIN
- DECLARE vLastMonth DATE;
-
- SET vLastMonth = util.firstDayOfMonth(TIMESTAMPADD(MONTH, -1, util.VN_CURDATE()));
-
- DELETE FROM analisis_ventas
- WHERE Año > YEAR(vLastMonth)
- OR (Año = YEAR(vLastMonth) AND Mes >= MONTH(vLastMonth));
-
- INSERT INTO analisis_ventas (
- Familia,
- Reino,
- Comercial,
- Comprador,
- Provincia,
- almacen,
- Año,
- Mes,
- Semana,
- Vista,
- Importe
- )
- SELECT
- 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 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;
+BEGIN
+ DECLARE vLastMonth DATE;
+
+ SET vLastMonth = util.firstDayOfMonth(TIMESTAMPADD(MONTH, -1, util.VN_CURDATE()));
+
+ DELETE FROM analisis_ventas
+ WHERE Año > YEAR(vLastMonth)
+ OR (Año = YEAR(vLastMonth) AND Mes >= MONTH(vLastMonth));
+
+ INSERT INTO analisis_ventas (
+ Familia,
+ Reino,
+ Comercial,
+ Comprador,
+ Provincia,
+ almacen,
+ Año,
+ Mes,
+ Semana,
+ Vista,
+ Importe
+ )
+ SELECT
+ 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 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 */ ;
@@ -3021,21 +3000,21 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `clean`()
-BEGIN
- DECLARE vDateShort DATETIME;
- DECLARE vDateLong DATETIME;
- DECLARE vOneYearAgo DATETIME;
-
- SET vDateShort = TIMESTAMPADD(MONTH, -2, util.VN_CURDATE());
- SET vDateLong = TIMESTAMPADD(MONTH, -18,util.VN_CURDATE());
- SET vOneYearAgo = TIMESTAMPADD(YEAR, -1,util.VN_CURDATE());
-
- DELETE FROM bi.Greuge_Evolution
- WHERE (Fecha < vDateShort AND weekday(Fecha) != 1)
- OR Fecha < vOneYearAgo;
-
- DELETE FROM bi.defaulters WHERE `date` < vDateLong;
- DELETE FROM bi.defaulting WHERE `date` < vDateLong;
+BEGIN
+ DECLARE vDateShort DATETIME;
+ DECLARE vDateLong DATETIME;
+ DECLARE vOneYearAgo DATETIME;
+
+ SET vDateShort = TIMESTAMPADD(MONTH, -2, util.VN_CURDATE());
+ SET vDateLong = TIMESTAMPADD(MONTH, -18,util.VN_CURDATE());
+ SET vOneYearAgo = TIMESTAMPADD(YEAR, -1,util.VN_CURDATE());
+
+ DELETE FROM bi.Greuge_Evolution
+ WHERE (Fecha < vDateShort AND weekday(Fecha) != 1)
+ OR Fecha < vOneYearAgo;
+
+ DELETE FROM bi.defaulters WHERE `date` < vDateLong;
+ DELETE FROM bi.defaulting WHERE `date` < vDateLong;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -3224,18 +3203,18 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `facturacion_media_anual_update`()
-BEGIN
- TRUNCATE TABLE bs.clientAnnualConsumption;
-
- REPLACE bi.facturacion_media_anual(Id_Cliente, Consumo)
- SELECT clientFk, avg(Facturacion)
- FROM (
- SELECT clientFk, YEAR(issued) year, MONTH(issued) month, sum(amount) as Facturacion
- FROM vn.invoiceOut
- WHERE issued BETWEEN TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) AND TIMESTAMPADD(DAY, - DAY(util.VN_CURDATE()),util.VN_CURDATE())
- GROUP BY clientFk, year, month
- ) vol
- GROUP BY clientFk;
+BEGIN
+ TRUNCATE TABLE bs.clientAnnualConsumption;
+
+ REPLACE bi.facturacion_media_anual(Id_Cliente, Consumo)
+ SELECT clientFk, avg(Facturacion)
+ FROM (
+ SELECT clientFk, YEAR(issued) year, MONTH(issued) month, sum(amount) as Facturacion
+ FROM vn.invoiceOut
+ WHERE issued BETWEEN TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) AND TIMESTAMPADD(DAY, - DAY(util.VN_CURDATE()),util.VN_CURDATE())
+ GROUP BY clientFk, year, month
+ ) vol
+ GROUP BY clientFk;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -3539,14 +3518,14 @@ BEGIN
bultos)
SELECT r.id,
r.agencyModeFk,
- r.created,
+ r.dated,
SUM(sv.volume / ebv.m3)
FROM vn.route r
JOIN vn.ticket t ON t.routeFk = r.id
LEFT JOIN vn.`zone` z ON z.id = t.zoneFk
JOIN vn.saleVolume sv ON sv.ticketFk = t.id
JOIN vn.expeditionBoxVol ebv ON ebv.code = 'transportBox'
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND z.isVolumetric
GROUP BY r.id;
@@ -3558,12 +3537,12 @@ BEGIN
Bultos)
SELECT r.id,
r.agencyModeFk,
- r.created,
+ r.dated,
SUM(t.packages)
FROM vn.route r
JOIN vn.ticket t ON t.routeFk = r.id
LEFT JOIN vn.`zone` z ON z.id = t.zoneFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND NOT z.isVolumetric
GROUP BY r.id
ON DUPLICATE KEY UPDATE Bultos = Bultos + VALUES(Bultos);
@@ -3580,7 +3559,7 @@ BEGIN
JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk
WHERE ct.code = 'freight'
- AND r.created BETWEEN vDatedFrom AND vDatedTo
+ AND r.dated BETWEEN vDatedFrom AND vDatedTo
GROUP BY r.id
) sub ON sub.routeFk = r.Id_Ruta
SET r.practico = IFNULL(sub.totalPractice / r.Bultos, 0);
@@ -3597,7 +3576,7 @@ BEGIN
JOIN vn.address ad ON ad.id = t.addressFk
JOIN vn.client c ON c.id = ad.clientFk
LEFT JOIN vn.`zone` z ON z.id = t.zoneFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND NOT z.isVolumetric
GROUP BY t.routeFk
) sub ON r.Id_Ruta = sub.routeFk
@@ -3613,7 +3592,7 @@ BEGIN
JOIN vn.saleVolume sf ON sf.ticketFk = t.id
JOIN vn.client c ON c.id = t.clientFk
JOIN vn.`zone` z ON z.id = t.zoneFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND z.isVolumetric
GROUP BY t.routeFk
) sub ON r.Id_Ruta = sub.routeFk
@@ -3628,7 +3607,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
JOIN vn.greuge g ON g.ticketFk = t.id
JOIN vn.greugeType gt ON gt.id = g.greugeTypeFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND gt.code = 'freightDifference'
GROUP BY t.routeFk
) sub ON r.Id_Ruta = sub.routeFk
@@ -4516,29 +4495,29 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `carteras_add`()
-BEGIN
-/**
- * Inserta en la tabla @bs.carteras las ventas desde el año pasado
- * agrupadas por trabajador, año y mes
- */
- DECLARE vYear INT DEFAULT YEAR(util.VN_CURDATE()) - 1;
-
- DELETE FROM bs.carteras WHERE Año >= vYear;
-
- CALL util.time_generate(
- MAKEDATE(vYear, 1),
- (SELECT MAX(fecha) FROM ventas)
- );
-
- INSERT INTO carteras(Año, Mes , CodigoTrabajador, Peso)
- SELECT t.`year`, t.`month`, w.code, SUM(v.importe)
- FROM tmp.time t
- JOIN ventas v on t.dated = v.fecha
- JOIN vn.client c on c.id = v.Id_Cliente
- JOIN vn.worker w ON w.id = c.salesPersonFk
- GROUP BY w.code, t.`year`, t.`month`;
-
- DROP TEMPORARY TABLE tmp.time;
+BEGIN
+/**
+ * Inserta en la tabla @bs.carteras las ventas desde el año pasado
+ * agrupadas por trabajador, año y mes
+ */
+ DECLARE vYear INT DEFAULT YEAR(util.VN_CURDATE()) - 1;
+
+ DELETE FROM bs.carteras WHERE Año >= vYear;
+
+ CALL util.time_generate(
+ MAKEDATE(vYear, 1),
+ (SELECT MAX(fecha) FROM ventas)
+ );
+
+ INSERT INTO carteras(Año, Mes , CodigoTrabajador, Peso)
+ SELECT t.`year`, t.`month`, w.code, SUM(v.importe)
+ FROM tmp.time t
+ JOIN ventas v on t.dated = v.fecha
+ JOIN vn.client c on c.id = v.Id_Cliente
+ JOIN vn.worker w ON w.id = c.salesPersonFk
+ GROUP BY w.code, t.`year`, t.`month`;
+
+ DROP TEMPORARY TABLE tmp.time;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -5198,7 +5177,7 @@ BEGIN
CREATE OR REPLACE TEMPORARY TABLE tVisible
SELECT itemFk, SUM(visible) totalVisible
FROM vn.itemShelving ish
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
JOIN vn.sector sc ON sc.id = p.sectorFk
WHERE sc.warehouseFk = vWarehouseFk
@@ -5465,82 +5444,82 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `nightTask_launchAll`()
-BEGIN
-/**
- * Runs all nightly tasks.
- */
- DECLARE vDone BOOL;
- DECLARE vError VARCHAR(255);
- DECLARE vErrorCode VARCHAR(255);
- DECLARE vSchema VARCHAR(255);
- DECLARE vProcedure VARCHAR(255);
- DECLARE vLogMail VARCHAR(255);
- DECLARE vNightTaskFk INT;
-
- DECLARE vQueue CURSOR FOR
- SELECT id, `schema`, `procedure`
- FROM nightTask
- WHERE finished <= util.VN_CURDATE()
- OR finished IS NULL
- ORDER BY `order`;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND
- SET vDone = TRUE;
-
- SET max_sp_recursion_depth = 3;
-
- SELECT logMail INTO vLogMail
- FROM nightTaskConfig LIMIT 1;
-
- OPEN vQueue;
- l: LOOP
- SET vDone = FALSE;
- FETCH vQueue INTO vNightTaskFk, vSchema, vProcedure;
-
- IF vDone THEN
- LEAVE l;
- END IF;
-
- UPDATE nightTask
- SET `started` = util.VN_NOW(),
- `finished` = NULL,
- `error` = NULL,
- `errorCode` = NULL
- WHERE id = vNightTaskFk;
-
- SET vError = NULL;
- CALL nightTask_launchTask(
- vSchema,
- vProcedure,
- vError,
- vErrorCode
- );
-
- IF vError IS NOT NULL THEN
- IF vLogMail IS NOT NULL THEN
- CALL vn.mail_insert(
- vLogMail,
- NULL,
- CONCAT('Nightly task failed (', vSchema, '.', vProcedure, ')'),
- CONCAT(
- '[', vErrorCode, '] ', vError, CHAR(13, 10), -- Line break
- 'See ', SCHEMA(), '.nightTask table for more info.'
- )
- );
- END IF;
-
- UPDATE nightTask
- SET `error` = vError,
- `errorCode` = vErrorCode
- WHERE id = vNightTaskFk;
- ELSE
- UPDATE nightTask
- SET finished = util.VN_NOW(),
- lastFinished = util.VN_NOW()
- WHERE id = vNightTaskFk;
- END IF;
- END LOOP;
- CLOSE vQueue;
+BEGIN
+/**
+ * Runs all nightly tasks.
+ */
+ DECLARE vDone BOOL;
+ DECLARE vError VARCHAR(255);
+ DECLARE vErrorCode VARCHAR(255);
+ DECLARE vSchema VARCHAR(255);
+ DECLARE vProcedure VARCHAR(255);
+ DECLARE vLogMail VARCHAR(255);
+ DECLARE vNightTaskFk INT;
+
+ DECLARE vQueue CURSOR FOR
+ SELECT id, `schema`, `procedure`
+ FROM nightTask
+ WHERE finished <= util.VN_CURDATE()
+ OR finished IS NULL
+ ORDER BY `order`;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND
+ SET vDone = TRUE;
+
+ SET max_sp_recursion_depth = 3;
+
+ SELECT logMail INTO vLogMail
+ FROM nightTaskConfig LIMIT 1;
+
+ OPEN vQueue;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vQueue INTO vNightTaskFk, vSchema, vProcedure;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ UPDATE nightTask
+ SET `started` = util.VN_NOW(),
+ `finished` = NULL,
+ `error` = NULL,
+ `errorCode` = NULL
+ WHERE id = vNightTaskFk;
+
+ SET vError = NULL;
+ CALL nightTask_launchTask(
+ vSchema,
+ vProcedure,
+ vError,
+ vErrorCode
+ );
+
+ IF vError IS NOT NULL THEN
+ IF vLogMail IS NOT NULL THEN
+ CALL vn.mail_insert(
+ vLogMail,
+ NULL,
+ CONCAT('Nightly task failed (', vSchema, '.', vProcedure, ')'),
+ CONCAT(
+ '[', vErrorCode, '] ', vError, CHAR(13, 10), -- Line break
+ 'See ', SCHEMA(), '.nightTask table for more info.'
+ )
+ );
+ END IF;
+
+ UPDATE nightTask
+ SET `error` = vError,
+ `errorCode` = vErrorCode
+ WHERE id = vNightTaskFk;
+ ELSE
+ UPDATE nightTask
+ SET finished = util.VN_NOW(),
+ lastFinished = util.VN_NOW()
+ WHERE id = vNightTaskFk;
+ END IF;
+ END LOOP;
+ CLOSE vQueue;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -6958,7 +6937,7 @@ proc: BEGIN
WHERE t.landed BETWEEN vInventoryDate AND vStartDate
AND t.warehouseInFk = vWarehouse
AND s.name != 'INVENTARIO'
- AND NOT e.isRaid
+ AND NOT t.isRaid
GROUP BY b.itemFk
) c
JOIN vn.item i ON i.id = c.itemFk
@@ -7285,27 +7264,27 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `cache_calc_end`(IN `v_calc` INT)
-BEGIN
- DECLARE v_cache_name VARCHAR(255);
- DECLARE v_params VARCHAR(255);
-
- -- Libera el bloqueo y actualiza la fecha de ultimo refresco.
-
- UPDATE cache_calc cc JOIN cache c ON c.id = cc.cache_id
- SET
- cc.last_refresh = NOW(),
- cc.expires = ADDTIME(NOW(), c.lifetime),
- cc.connection_id = NULL
- WHERE cc.id = v_calc;
-
- SELECT c.name, ca.params INTO v_cache_name, v_params
- FROM cache c
- JOIN cache_calc ca ON c.id = ca.cache_id
- WHERE ca.id = v_calc;
-
- IF v_cache_name IS NOT NULL THEN
- DO RELEASE_LOCK(CONCAT_WS('/', v_cache_name, IFNULL(v_params, '')));
- END IF;
+BEGIN
+ DECLARE v_cache_name VARCHAR(255);
+ DECLARE v_params VARCHAR(255);
+
+ -- Libera el bloqueo y actualiza la fecha de ultimo refresco.
+
+ UPDATE cache_calc cc JOIN cache c ON c.id = cc.cache_id
+ SET
+ cc.last_refresh = NOW(),
+ cc.expires = ADDTIME(NOW(), c.lifetime),
+ cc.connection_id = NULL
+ WHERE cc.id = v_calc;
+
+ SELECT c.name, ca.params INTO v_cache_name, v_params
+ FROM cache c
+ JOIN cache_calc ca ON c.id = ca.cache_id
+ WHERE ca.id = v_calc;
+
+ IF v_cache_name IS NOT NULL THEN
+ DO RELEASE_LOCK(CONCAT_WS('/', v_cache_name, IFNULL(v_params, '')));
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -7323,89 +7302,89 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `cache_calc_start`(OUT `v_calc` INT, INOUT `v_refresh` INT, IN `v_cache_name` VARCHAR(50), IN `v_params` VARCHAR(100))
-proc: BEGIN
- DECLARE v_valid BOOL;
- DECLARE v_lock_id VARCHAR(100);
- DECLARE v_cache_id INT;
- DECLARE v_expires DATETIME;
- DECLARE v_clean_time DATETIME;
- DECLARE vLastRefresh DATETIME;
-
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- IF v_lock_id IS NOT NULL THEN
- DO RELEASE_LOCK(v_lock_id);
- END IF;
-
- RESIGNAL;
- END;
-
- SET v_params = IFNULL(v_params, '');
-
- -- Si el servidor se ha reiniciado invalida todos los calculos.
-
- SELECT COUNT(*) > 0 INTO v_valid FROM cache_valid;
-
- IF !v_valid
- THEN
- DELETE FROM cache_calc;
- INSERT INTO cache_valid (valid) VALUES (TRUE);
- END IF;
-
- -- Obtiene un bloqueo exclusivo para que no haya problemas de concurrencia.
-
- SET v_lock_id = CONCAT_WS('/', v_cache_name, v_params);
-
- IF !GET_LOCK(v_lock_id, 30)
- THEN
- SET v_calc = NULL;
- SET v_refresh = FALSE;
- LEAVE proc;
- END IF;
-
- -- Comprueba si el calculo solicitado existe y esta actualizado.
-
- SELECT c.id, ca.id, ca.expires, ca.last_refresh
- INTO v_cache_id, v_calc, v_expires, vLastRefresh
- FROM cache c
- LEFT JOIN cache_calc ca
- ON ca.cache_id = c.id AND ca.params = v_params COLLATE 'utf8_general_ci'
- WHERE c.name = v_cache_name COLLATE 'utf8_general_ci';
-
- -- Si existe una calculo valido libera el bloqueo y devuelve su identificador.
-
- IF !v_refresh AND NOW() < v_expires AND vLastRefresh >= CURDATE()
- THEN
- DO RELEASE_LOCK(v_lock_id);
- SET v_refresh = FALSE;
- LEAVE proc;
- END IF;
-
- -- Si el calculo no existe le crea una entrada en la tabla de calculos.
-
- IF v_calc IS NULL
- THEN
- INSERT INTO cache_calc SET
- cache_id = v_cache_id,
- cacheName = v_cache_name,
- params = v_params,
- last_refresh = NULL,
- expires = NULL,
- connection_id = CONNECTION_ID();
-
- SET v_calc = LAST_INSERT_ID();
- ELSE
- UPDATE cache_calc
- SET
- last_refresh = NULL,
- expires = NULL,
- connection_id = CONNECTION_ID()
- WHERE id = v_calc;
- END IF;
-
- -- Si se debe recalcular mantiene el bloqueo y devuelve su identificador.
-
- SET v_refresh = TRUE;
+proc: BEGIN
+ DECLARE v_valid BOOL;
+ DECLARE v_lock_id VARCHAR(100);
+ DECLARE v_cache_id INT;
+ DECLARE v_expires DATETIME;
+ DECLARE v_clean_time DATETIME;
+ DECLARE vLastRefresh DATETIME;
+
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ IF v_lock_id IS NOT NULL THEN
+ DO RELEASE_LOCK(v_lock_id);
+ END IF;
+
+ RESIGNAL;
+ END;
+
+ SET v_params = IFNULL(v_params, '');
+
+ -- Si el servidor se ha reiniciado invalida todos los calculos.
+
+ SELECT COUNT(*) > 0 INTO v_valid FROM cache_valid;
+
+ IF !v_valid
+ THEN
+ DELETE FROM cache_calc;
+ INSERT INTO cache_valid (valid) VALUES (TRUE);
+ END IF;
+
+ -- Obtiene un bloqueo exclusivo para que no haya problemas de concurrencia.
+
+ SET v_lock_id = CONCAT_WS('/', v_cache_name, v_params);
+
+ IF !GET_LOCK(v_lock_id, 30)
+ THEN
+ SET v_calc = NULL;
+ SET v_refresh = FALSE;
+ LEAVE proc;
+ END IF;
+
+ -- Comprueba si el calculo solicitado existe y esta actualizado.
+
+ SELECT c.id, ca.id, ca.expires, ca.last_refresh
+ INTO v_cache_id, v_calc, v_expires, vLastRefresh
+ FROM cache c
+ LEFT JOIN cache_calc ca
+ ON ca.cache_id = c.id AND ca.params = v_params COLLATE 'utf8_general_ci'
+ WHERE c.name = v_cache_name COLLATE 'utf8_general_ci';
+
+ -- Si existe una calculo valido libera el bloqueo y devuelve su identificador.
+
+ IF !v_refresh AND NOW() < v_expires AND vLastRefresh >= CURDATE()
+ THEN
+ DO RELEASE_LOCK(v_lock_id);
+ SET v_refresh = FALSE;
+ LEAVE proc;
+ END IF;
+
+ -- Si el calculo no existe le crea una entrada en la tabla de calculos.
+
+ IF v_calc IS NULL
+ THEN
+ INSERT INTO cache_calc SET
+ cache_id = v_cache_id,
+ cacheName = v_cache_name,
+ params = v_params,
+ last_refresh = NULL,
+ expires = NULL,
+ connection_id = CONNECTION_ID();
+
+ SET v_calc = LAST_INSERT_ID();
+ ELSE
+ UPDATE cache_calc
+ SET
+ last_refresh = NULL,
+ expires = NULL,
+ connection_id = CONNECTION_ID()
+ WHERE id = v_calc;
+ END IF;
+
+ -- Si se debe recalcular mantiene el bloqueo y devuelve su identificador.
+
+ SET v_refresh = TRUE;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -10429,28 +10408,28 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `contact_request`(
- vName VARCHAR(100),
- vPhone VARCHAR(15),
- vEmail VARCHAR(100),
+CREATE DEFINER=`root`@`localhost` PROCEDURE `contact_request`(
+ vName VARCHAR(100),
+ vPhone VARCHAR(15),
+ vEmail VARCHAR(100),
vMessage TEXT)
READS SQL DATA
-BEGIN
-/**
- * Set actions for contact request
- *
- * @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)
- );
+BEGIN
+/**
+ * Set actions for contact request
+ *
+ * @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 ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -10469,27 +10448,27 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `deliveryDate_get`(vPostalCode VARCHAR(15))
READS SQL DATA
-BEGIN
-/**
- * Returns available dates for this postalCode, in the next seven days.
- *
- * @param vPostalCode Delivery address postal code
- */
- DECLARE vCurrentDayOfWeek INT;
-
- SET vCurrentDayOfWeek = DAYOFWEEK(NOW());
-
- SELECT DISTINCT nextDay
- FROM (
- SELECT CURDATE() + INTERVAL IF(
- apc.dayOfWeek >= vCurrentDayOfWeek,
- apc.dayOfWeek - vCurrentDayOfWeek,
- 7 - apc.dayOfWeek
- ) DAY nextDay,
- NOW() + INTERVAL apc.hoursInAdvance HOUR minDeliveryTime
- FROM addressPostCode apc
- WHERE apc.postCode = vPostalCode
- HAVING nextDay > minDeliveryTime) sub;
+BEGIN
+/**
+ * Returns available dates for this postalCode, in the next seven days.
+ *
+ * @param vPostalCode Delivery address postal code
+ */
+ DECLARE vCurrentDayOfWeek INT;
+
+ SET vCurrentDayOfWeek = DAYOFWEEK(NOW());
+
+ SELECT DISTINCT nextDay
+ FROM (
+ SELECT CURDATE() + INTERVAL IF(
+ apc.dayOfWeek >= vCurrentDayOfWeek,
+ apc.dayOfWeek - vCurrentDayOfWeek,
+ 7 - apc.dayOfWeek
+ ) DAY nextDay,
+ NOW() + INTERVAL apc.hoursInAdvance HOUR minDeliveryTime
+ FROM addressPostCode apc
+ WHERE apc.postCode = vPostalCode
+ HAVING nextDay > minDeliveryTime) sub;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -12263,7 +12242,7 @@ BEGIN
JOIN vn.travel t ON t.id = e.travelFk
WHERE t.landed BETWEEN vDateInv AND vDate
AND t.warehouseInFk = vWarehouse
- AND NOT e.isRaid
+ AND NOT t.isRaid
UNION ALL
SELECT b.itemFk, -b.quantity
FROM vn.buy b
@@ -12271,7 +12250,7 @@ BEGIN
JOIN vn.travel t ON t.id = e.travelFk
WHERE t.shipped BETWEEN vDateInv AND util.VN_CURDATE()
AND t.warehouseOutFk = vWarehouse
- AND NOT e.isRaid
+ AND NOT t.isRaid
AND t.isDelivered
UNION ALL
SELECT m.itemFk, -m.quantity
@@ -14114,45 +14093,54 @@ BEGIN
* @param vOrder El identificador del pedido
* @return tmp.orderTax Bases imponibles, IVA y recargo de equivalencia
*/
+ -- No poner create or replace, ya que da problemas
DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany;
CREATE TEMPORARY TABLE tmp.addressCompany
(INDEX (addressFk, companyFk))
ENGINE = MEMORY
SELECT DISTINCT o.address_id addressFk, o.company_id companyFk
FROM tmp.`order` tmpOrder
- JOIN hedera.`order` o ON o.id = tmpOrder.orderFk;
+ JOIN `order` o ON o.id = tmpOrder.orderFk;
- CALL vn.addressTaxArea;
+ CALL vn.addressTaxArea();
-- Calcula el IVA y el recargo desglosado.
-
- DROP TEMPORARY TABLE IF EXISTS tmp.orderTax;
- CREATE TEMPORARY TABLE tmp.orderTax
- (INDEX (orderFk))
+ CREATE OR REPLACE TEMPORARY TABLE tmp.orderTax
+ (PRIMARY KEY (orderFk, code, rate))
ENGINE = MEMORY
- SELECT o.id orderFk,
+ WITH orders AS (
+ SELECT tor.orderFk,
+ oro.amount * oro.price total,
+ s.countryFk,
+ ata.areaFk,
+ itc.taxClassFk
+ FROM hedera.orderRow oro
+ JOIN tmp.order tor ON tor.orderFk = oro.orderFk
+ JOIN hedera.`order` o ON o.id = tor.orderFk
+ JOIN vn.item i ON i.id = oro.itemFk
+ JOIN vn.`client` c ON c.id = o.customer_id
+ JOIN vn.supplier s ON s.id = o.company_id
+ JOIN tmp.addressTaxArea ata ON ata.addressFk = o.address_id
+ AND ata.companyFk = o.company_id
+ JOIN vn.itemTaxCountry itc ON itc.itemFk = i.id
+ AND itc.countryFk = s.countryFk
+ HAVING total
+ )
+ SELECT o.orderFk,
tc.code,
- SUM(m.amount * m.price) taxableBase,
+ SUM(o.total) taxableBase,
pgc.rate
- FROM tmp.`order` tmpOrder
- JOIN `order` o ON o.id = tmpOrder.orderFk
- JOIN orderRow m ON m.orderFk = o.id
- JOIN vn.item i ON i.id = m.itemFk
- JOIN vn.`client` c ON c.id = o.customer_id
- JOIN vn.supplier s ON s.id = o.company_id
- JOIN tmp.addressTaxArea ata
- ON ata.addressFk = o.address_id AND ata.companyFk = o.company_id
- JOIN vn.itemTaxCountry itc
- ON itc.itemFk = i.id AND itc.countryFk = s.countryFk
- JOIN vn.bookingPlanner bp
- ON bp.countryFk = s.countryFk
- AND bp.taxAreaFk = ata.areaFk
- AND bp.taxClassFk = itc.taxClassFk
- JOIN vn.pgc ON pgc.`code` = bp.pgcFk
+ FROM orders o
+ JOIN vn.bookingPlanner bp ON bp.countryFk = o.countryFk
+ AND bp.taxAreaFk = o.areaFk
+ AND bp.taxClassFk = o.taxClassFk
+ JOIN vn.pgc ON pgc.code = bp.pgcFk
JOIN vn.taxClass tc ON tc.id = bp.taxClassFk
- GROUP BY tmpOrder.orderFk, pgc.`code`, pgc.rate
- HAVING taxableBase != 0;
+ GROUP BY o.orderFk, pgc.code, pgc.rate
+ HAVING taxableBase
+ ORDER BY bp.priority;
+ -- No poner create or replace, ya que da problemas
DROP TEMPORARY TABLE IF EXISTS tmp.orderAmount;
CREATE TEMPORARY TABLE tmp.orderAmount
(INDEX (orderFk))
@@ -17515,7 +17503,7 @@ BEGIN
DECLARE vCursor CURSOR FOR
SELECT it.taxableBase,
- CAST((( it.taxableBase / 100) * t.PorcentajeIva) AS DECIMAL (10,2)),
+ CAST(SUM((( it.taxableBase / 100) * t.PorcentajeIva)) AS DECIMAL (10,2)),
t.PorcentajeIva,
it.transactionTypeSageFk,
it.taxTypeSageFk,
@@ -17528,7 +17516,8 @@ BEGIN
JOIN TiposTransacciones tt ON tt.CodigoTransaccion = it.transactionTypeSageFk
LEFT JOIN vn.dua d ON d.id = vInvoiceInFk
WHERE i.id = vInvoiceInFk
- AND d.id IS NULL;
+ AND d.id IS NULL
+ GROUP BY it.taxTypeSageFk;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
@@ -22748,12 +22737,11 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tValues;
CREATE TEMPORARY TABLE tValues
ENGINE = MEMORY
- SELECT
- b.id buyFk,
+ SELECT b.id buyFk,
e.id entryFk,
t.id travelFk,
b.itemFk,
- e.isRaid,
+ t.isRaid,
ADDTIME(t.shipped,
IFNULL(t.shipmentHour, '00:00:00')) shipped,
t.warehouseOutFk,
@@ -22792,7 +22780,7 @@ BEGIN
itemFk,
TIMESTAMPADD(DAY, life, @dated),
quantity,
- IF(isIn, isReceived, isDelivered) AND !isRaid
+ IF(isIn, isReceived, isDelivered) AND NOT isRaid
FROM tValues
WHERE isIn OR !lessThanInventory;
@@ -22807,7 +22795,7 @@ BEGIN
itemFk,
created,
quantity,
- IF(isIn, isDelivered, isReceived) AND !isRaid
+ IF(isIn, isDelivered, isReceived) AND NOT isRaid
FROM tValues
WHERE !isIn OR !lessThanInventory;
@@ -23431,8 +23419,6 @@ DROP TABLE IF EXISTS `config`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (
`id` int(10) unsigned NOT NULL,
- `dbVersion__` char(11) DEFAULT NULL COMMENT '@deprecated 2024-09-02 refs #7819',
- `hasTriggersDisabled__` tinyint(1) NOT NULL DEFAULT 0 COMMENT '@deprecated 2024-09-02 refs #7819',
`environment` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT 'The current Database environment',
`lastDump` datetime DEFAULT NULL COMMENT 'Timestamp of the last data dump',
`mockUtcTime` datetime DEFAULT NULL,
@@ -25910,6 +25896,7 @@ CREATE TABLE `address` (
`customsAgentFk` int(11) DEFAULT NULL,
`incotermsFk` varchar(3) DEFAULT NULL,
`isLogifloraAllowed` tinyint(4) NOT NULL DEFAULT 0,
+ `geoFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `Id_Agencia` (`agencyModeFk`),
@@ -25921,12 +25908,14 @@ CREATE TABLE `address` (
KEY `address_customsAgentFk_idx` (`customsAgentFk`),
KEY `address_incotermsFk_idx` (`incotermsFk`),
KEY `address_fk_editor` (`editorFk`),
+ KEY `address_zoneGeo_FK` (`geoFk`),
CONSTRAINT `address_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE,
CONSTRAINT `address_customsAgentFk` FOREIGN KEY (`customsAgentFk`) REFERENCES `customsAgent` (`id`) ON UPDATE CASCADE,
CONSTRAINT `address_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `address_ibfk_3` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON UPDATE CASCADE,
CONSTRAINT `address_ibfk_4` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `address_incotermsFk` FOREIGN KEY (`incotermsFk`) REFERENCES `incoterms` (`code`) ON UPDATE CASCADE
+ CONSTRAINT `address_incotermsFk` FOREIGN KEY (`incotermsFk`) REFERENCES `incoterms` (`code`) ON UPDATE CASCADE,
+ CONSTRAINT `address_zoneGeo_FK` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -26114,7 +26103,6 @@ CREATE TABLE `agencyMode` (
`inflation` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT 'Este valor se utiliza para aumentar el valor del componente porte.',
`isVolumetric` tinyint(1) NOT NULL DEFAULT 0,
`reportMail` varchar(100) DEFAULT NULL,
- `showAgencyName__` tinyint(1) DEFAULT 1 COMMENT '@deprecated 2024-09-24',
`isActive` tinyint(1) NOT NULL DEFAULT 1,
`isExternalAgency` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'obsoleta',
`flag` blob DEFAULT NULL COMMENT 'obsoleta',
@@ -27748,8 +27736,9 @@ CREATE TABLE `client` (
`businessTypeFk` varchar(20) NOT NULL DEFAULT 'florist',
`rating` int(10) unsigned DEFAULT NULL COMMENT 'información proporcionada por Informa',
`recommendedCredit` int(10) unsigned DEFAULT NULL COMMENT 'información proporcionada por Informa',
- `editorFk` int(10) unsigned DEFAULT NULL,
`hasDailyInvoice` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si el cliente requiere facturación diaria por defecto se copiará lo que tenga country.hasDailyInvoice',
+ `geoFk` int(11) DEFAULT NULL,
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `IF` (`fi`),
KEY `Id_Trabajador` (`salesPersonFk`),
@@ -27771,6 +27760,7 @@ CREATE TABLE `client` (
KEY `codpos` (`postcode`),
KEY `client_fk_editor` (`editorFk`),
KEY `client_isTaxDataChecked_IDX` (`isTaxDataChecked`) USING BTREE,
+ KEY `client_zoneGeo_FK` (`geoFk`),
CONSTRAINT `canal_nuevo_cliente` FOREIGN KEY (`contactChannelFk`) REFERENCES `contactChannel` (`id`) ON UPDATE CASCADE,
CONSTRAINT `client_FK` FOREIGN KEY (`businessTypeFk`) REFERENCES `businessType` (`code`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `client_FK_1` FOREIGN KEY (`bankEntityFk`) REFERENCES `bankEntity` (`id`) ON UPDATE CASCADE,
@@ -27784,6 +27774,7 @@ CREATE TABLE `client` (
CONSTRAINT `client_ibfk_5` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON UPDATE CASCADE,
CONSTRAINT `client_taxTypeSageFk` FOREIGN KEY (`taxTypeSageFk`) REFERENCES `sage`.`TiposIva` (`CodigoIva`) ON UPDATE CASCADE,
CONSTRAINT `client_transactionTypeSageFk` FOREIGN KEY (`transactionTypeSageFk`) REFERENCES `sage`.`TiposTransacciones` (`CodigoTransaccion`) ON UPDATE CASCADE,
+ CONSTRAINT `client_zoneGeo_FK` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE,
CONSTRAINT `typeFk` FOREIGN KEY (`typeFk`) REFERENCES `clientType` (`code`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -28032,7 +28023,7 @@ CREATE TABLE `clientObservation` (
`text` text NOT NULL,
`created` timestamp NOT NULL DEFAULT current_timestamp(),
`editorFk` int(10) unsigned DEFAULT NULL,
- `observationTypeFk` tinyint(3) unsigned DEFAULT NULL,
+ `observationTypeFk` tinyint(3) unsigned NOT NULL DEFAULT 4,
PRIMARY KEY (`id`),
KEY `Id_Trabajador` (`workerFk`),
KEY `Id_Cliente` (`clientFk`),
@@ -29061,13 +29052,11 @@ DROP TABLE IF EXISTS `creditInsurance`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `creditInsurance` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `creditClassification__` int(11) DEFAULT NULL COMMENT '@deprecated 2024-09-11',
`credit` int(11) DEFAULT NULL,
`creationDate` timestamp NOT NULL DEFAULT current_timestamp(),
`grade` tinyint(1) DEFAULT NULL,
`creditClassificationFk` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
- KEY `CreditInsurance_Fk1_idx` (`creditClassification__`),
KEY `creditInsurance_creditClassificationFk` (`creditClassificationFk`),
CONSTRAINT `creditInsurance_creditClassificationFk` FOREIGN KEY (`creditClassificationFk`) REFERENCES `creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Detalla los clientes que tienen seguro de credito';
@@ -29726,6 +29715,7 @@ CREATE TABLE `dua` (
`customsValue` decimal(10,2) DEFAULT NULL,
`companyFk` int(10) unsigned NOT NULL DEFAULT 442,
`ASIEN` double DEFAULT NULL,
+ `comment` text DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code_UNIQUE` (`code`),
KEY `fk_dua_gestdoc1_idx` (`gestdocFk`),
@@ -29788,7 +29778,7 @@ CREATE TABLE `duaInvoiceIn` (
`duaFk` int(11) NOT NULL,
`invoiceInFk` mediumint(8) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `duaFk_UNIQUE` (`duaFk`,`invoiceInFk`),
+ UNIQUE KEY `duaInvoiceIn_unique` (`invoiceInFk`),
KEY `duaInvoiceIn_fk1_idx` (`duaFk`),
KEY `duaInvoiceIn_fk2_idx` (`invoiceInFk`),
CONSTRAINT `duaInvoiceIn_fk1` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -29970,7 +29960,7 @@ CREATE TABLE `entry` (
`isExcludedFromAvailable` tinyint(1) NOT NULL DEFAULT 0,
`isConfirmed` tinyint(1) NOT NULL DEFAULT 0,
`isOrdered` tinyint(1) NOT NULL DEFAULT 0,
- `isRaid` tinyint(1) NOT NULL DEFAULT 0,
+ `isRaid_` tinyint(1) NOT NULL DEFAULT 0 COMMENT '@deprecated 2024-11-05',
`commission` float DEFAULT 0,
`created` timestamp NOT NULL DEFAULT current_timestamp(),
`evaNotes` varchar(45) DEFAULT NULL,
@@ -30137,17 +30127,17 @@ CREATE TABLE `entryType` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `entryVirtual`
+-- Table structure for table `entryVirtual__`
--
-DROP TABLE IF EXISTS `entryVirtual`;
+DROP TABLE IF EXISTS `entryVirtual__`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `entryVirtual` (
+CREATE TABLE `entryVirtual__` (
`entryFk` int(11) NOT NULL,
PRIMARY KEY (`entryFk`),
- CONSTRAINT `entryVirtual_ibfk_1` FOREIGN KEY (`entryFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='entradas que se van moviendo automaticamente al futuro';
+ CONSTRAINT `entryVirtual___ibfk_1` FOREIGN KEY (`entryFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2024-11-05';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -30614,6 +30604,7 @@ CREATE TABLE `expeditionState` (
`typeFk` int(11) NOT NULL,
`userFk` int(10) unsigned DEFAULT NULL,
`isScanned` tinyint(1) NOT NULL DEFAULT 0,
+ `scanOrder` int(11) DEFAULT NULL COMMENT 'Indica la posición al cargar la furgoneta',
PRIMARY KEY (`id`),
KEY `expeditionState_FK` (`expeditionFk`),
KEY `expeditionState_FK_1` (`typeFk`),
@@ -32243,6 +32234,7 @@ CREATE TABLE `itemConfig` (
`defaultPriority` int(11) NOT NULL DEFAULT 2,
`warehouseFk` smallint(6) unsigned DEFAULT NULL,
`downloadMaxAttempts` tinyint(3) DEFAULT NULL COMMENT 'Intentos máximos para que se borre',
+ `defaultPackingTypeFk` varchar(1) DEFAULT 'H',
PRIMARY KEY (`id`),
KEY `itemConfig_FK` (`defaultTag`),
CONSTRAINT `itemConfig_FK` FOREIGN KEY (`defaultTag`) REFERENCES `tag` (`id`),
@@ -32609,7 +32601,7 @@ DROP TABLE IF EXISTS `itemShelving`;
CREATE TABLE `itemShelving` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`itemFk` int(11) NOT NULL,
- `shelvingFk` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `shelvingFk` int(11) NOT NULL,
`visible` int(11) NOT NULL DEFAULT 0,
`created` timestamp NOT NULL DEFAULT current_timestamp(),
`grouping` smallint(5) unsigned DEFAULT NULL,
@@ -32630,8 +32622,8 @@ CREATE TABLE `itemShelving` (
KEY `itemShelvingBuy_FK` (`buyFk`),
CONSTRAINT `itemShelvingBuy_FK` FOREIGN KEY (`buyFk`) REFERENCES `buy` (`id`),
CONSTRAINT `itemShelving_fk1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `itemShelving_fk2` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`code`) ON UPDATE CASCADE,
- CONSTRAINT `itemShelving_fk3` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `itemShelving_fk3` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `itemShelving_shelving_FK` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla utilizada para localizar los artículos dentro de los carros. Usado para la gestión del almacén en el altillo ';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -32690,13 +32682,13 @@ SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;
--
--- Table structure for table `itemShelvingLog`
+-- Table structure for table `itemShelvingLog__`
--
-DROP TABLE IF EXISTS `itemShelvingLog`;
+DROP TABLE IF EXISTS `itemShelvingLog__`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `itemShelvingLog` (
+CREATE TABLE `itemShelvingLog__` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`itemShelvingFk` int(10) unsigned DEFAULT NULL,
`workerFk` int(11) DEFAULT NULL,
@@ -32714,7 +32706,7 @@ CREATE TABLE `itemShelvingLog` (
KEY `itemShelving_Log_FK` (`itemShelvingFk`),
KEY `itemShelvingLog_itemFk_IDX` (`itemFk`) USING BTREE,
KEY `itemShelvingLog_shelvingFk_IDX` (`shelvingFk`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2024-11-26';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -33009,6 +33001,21 @@ SET character_set_client = utf8;
1 AS `taxClassFk` */;
SET character_set_client = @saved_cs_client;
+--
+-- Table structure for table `itemTextureTag`
+--
+
+DROP TABLE IF EXISTS `itemTextureTag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `itemTextureTag` (
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name_UNIQUE` (`name`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Temporary table structure for view `itemTicketOut`
--
@@ -33057,6 +33064,7 @@ CREATE TABLE `itemType` (
`maxRefs` int(10) unsigned DEFAULT NULL COMMENT 'Indica el número máximo de referencias',
`isMergeable` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Articulos que al mergear los tickets se fusionara la linea',
`isFragile` tinyint(1) NOT NULL DEFAULT 0,
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `Tipo_UNIQUE` (`name`,`categoryFk`),
UNIQUE KEY `itemType_UN` (`code`),
@@ -33064,9 +33072,13 @@ CREATE TABLE `itemType` (
KEY `reino_id` (`categoryFk`),
KEY `Tipos_fk3_idx` (`making`),
KEY `temperatureFk` (`temperatureFk`),
+ KEY `itemType_user_FK` (`editorFk`),
+ KEY `itemType_itemPackingType_FK` (`itemPackingTypeFk`),
CONSTRAINT `Tipos_fk3` FOREIGN KEY (`making`) REFERENCES `confectionType` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `Trabajador` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE,
CONSTRAINT `itemType_ibfk_1` FOREIGN KEY (`categoryFk`) REFERENCES `itemCategory` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `itemType_itemPackingType_FK` FOREIGN KEY (`itemPackingTypeFk`) REFERENCES `itemPackingType` (`code`) ON UPDATE CASCADE,
+ CONSTRAINT `itemType_user_FK` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `temperatureFk` FOREIGN KEY (`temperatureFk`) REFERENCES `temperature` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Protege la tabla tipos de updates para los 4 parámetros de los compradores, en funcion del valor del campo CodigoRojo de tblContadores.';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -33099,6 +33111,35 @@ SET character_set_client = utf8;
1 AS `name` */;
SET character_set_client = @saved_cs_client;
+--
+-- Table structure for table `itemTypeLog`
+--
+
+DROP TABLE IF EXISTS `itemTypeLog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `itemTypeLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('ItemType') NOT NULL DEFAULT 'ItemType',
+ `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,
+ `summaryId` varchar(30) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `itemTypeLogUserFk_idx` (`userFk`),
+ KEY `itemTypeLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `itemTypeLog_originFk` (`originFk`,`creationDate`),
+ KEY `itemTypeLog_creationDate_IDX` (`creationDate` DESC) USING BTREE,
+ CONSTRAINT `itemTypeLogUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci `PAGE_COMPRESSED`=1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `itemTypeRestriction`
--
@@ -33423,13 +33464,28 @@ CREATE TABLE `machineDms` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `machineWorker`
+-- Table structure for table `machineWorkerConfig__`
--
-DROP TABLE IF EXISTS `machineWorker`;
+DROP TABLE IF EXISTS `machineWorkerConfig__`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `machineWorker` (
+CREATE TABLE `machineWorkerConfig__` (
+ `id` int(10) unsigned NOT NULL,
+ `maxHours` smallint(5) unsigned NOT NULL COMMENT 'Indicates how many hours a user record is reviewed to update or insert',
+ PRIMARY KEY (`id`),
+ CONSTRAINT `machineWorkerConfig_check` CHECK (`id` = 1)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2024-10-23 not used';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `machineWorker__`
+--
+
+DROP TABLE IF EXISTS `machineWorker__`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `machineWorker__` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`workerFk` int(10) unsigned NOT NULL,
`machineFk` int(11) NOT NULL,
@@ -33440,22 +33496,7 @@ CREATE TABLE `machineWorker` (
KEY `machineWorker_FK` (`workerFk`),
CONSTRAINT `machineWorker_FK` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE,
CONSTRAINT `machineWorker_FK_1` FOREIGN KEY (`machineFk`) REFERENCES `machine` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Registros horarios de vehículos de almacén por empleado';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `machineWorkerConfig`
---
-
-DROP TABLE IF EXISTS `machineWorkerConfig`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `machineWorkerConfig` (
- `id` int(10) unsigned NOT NULL,
- `maxHours` smallint(5) unsigned NOT NULL COMMENT 'Indicates how many hours a user record is reviewed to update or insert',
- PRIMARY KEY (`id`),
- CONSTRAINT `machineWorkerConfig_check` CHECK (`id` = 1)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2024-10-23 not used';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -35363,8 +35404,8 @@ CREATE TABLE `productionConfig` (
`sectorToCode` varchar(15) DEFAULT NULL COMMENT 'Sector destino que se revisa ítems más nuevos al parkinear',
`orderMode` enum('Location','Age') NOT NULL DEFAULT 'Location',
`editorFk` int(10) unsigned DEFAULT NULL,
- `hasNewLabelMrwMethod` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'column to activate the new mrw integration',
`minPlantTrayLength` int(11) NOT NULL DEFAULT 53 COMMENT 'minimum length for plant tray restriction. Avoid to make collection of the ticket with this kind of item',
+ `itemOrderReviewHours` int(11) DEFAULT 24 COMMENT 'Horas que no se tienen en cuenta para comprobar orden en el almacén, null para desactivar revisión',
PRIMARY KEY (`id`),
KEY `productionConfig_FK` (`shortageAddressFk`),
KEY `productionConfig_FK_1` (`clientSelfConsumptionFk`),
@@ -36189,7 +36230,7 @@ CREATE TABLE `route` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`workerFk` int(10) unsigned DEFAULT NULL,
`firstEditorFk` int(10) unsigned DEFAULT NULL,
- `created` date NOT NULL,
+ `created` timestamp NOT NULL DEFAULT current_timestamp(),
`vehicleFk` int(10) unsigned DEFAULT NULL,
`agencyModeFk` int(11) DEFAULT NULL,
`time` datetime DEFAULT NULL,
@@ -36208,6 +36249,7 @@ CREATE TABLE `route` (
`beachFk` int(11) DEFAULT NULL,
`commissionWorkCenterFk` int(11) DEFAULT NULL COMMENT 'WorkerCenter que gestiona la ruta',
`editorFk` int(10) unsigned DEFAULT NULL,
+ `dated` date NOT NULL,
PRIMARY KEY (`id`),
KEY `Id_Agencia` (`agencyModeFk`),
KEY `Fecha` (`created`),
@@ -36267,10 +36309,14 @@ CREATE TABLE `routeCommission` (
`cat4m3` decimal(5,2) DEFAULT NULL,
`cat5m3` decimal(5,2) DEFAULT NULL,
`freelanceYearlyM3` decimal(5,2) DEFAULT NULL,
+ `countryFk` mediumint(8) unsigned DEFAULT NULL,
+ `isKmTruckRate` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `routeCommission_routeFk_idx` (`routeFk`),
KEY `routeCommission_workCenterFk_idx` (`workCenterFk`),
KEY `routeCommission_firstEditorFk` (`firstEditorFk`),
+ KEY `routeCommission_country_FK` (`countryFk`),
+ CONSTRAINT `routeCommission_country_FK` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE,
CONSTRAINT `routeCommission_routeFk` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `routeCommission_workCenterFk` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -36517,7 +36563,7 @@ CREATE TABLE `sale` (
`ticketFk` int(11) NOT NULL,
`concept` varchar(50) DEFAULT NULL,
`quantity` decimal(10,2) NOT NULL DEFAULT 0.00,
- `originalQuantity` double(9,1) DEFAULT NULL COMMENT 'Se utiliza para notificar a través de rocket los cambios de quantity',
+ `originalQuantity` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT 'Se utiliza para notificar a través de rocket los cambios de quantity',
`price` decimal(10,2) NOT NULL DEFAULT 0.00,
`discount` tinyint(2) unsigned NOT NULL DEFAULT 0,
`priceFixed` decimal(10,2) NOT NULL DEFAULT 0.00,
@@ -37062,6 +37108,36 @@ CREATE TABLE `sample` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `saySimpleConfig`
+--
+
+DROP TABLE IF EXISTS `saySimpleConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `saySimpleConfig` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `url` varchar(255) NOT NULL,
+ `defaultChannel` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `saySimpleCountry`
+--
+
+DROP TABLE IF EXISTS `saySimpleCountry`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `saySimpleCountry` (
+ `countryFk` mediumint(8) unsigned NOT NULL,
+ `channel` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`countryFk`),
+ CONSTRAINT `saySimpleCountry_FK` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `scanner`
--
@@ -37391,7 +37467,7 @@ CREATE TABLE `shelvingLog` (
`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('Shelving') NOT NULL DEFAULT 'Shelving',
+ `changedModel` enum('Shelving','ItemShelving') NOT NULL DEFAULT 'Shelving',
`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,
@@ -37466,23 +37542,6 @@ CREATE TABLE `siiTypeInvoiceOut` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tipo de Factura Emitidas en el suministro de inmediato';
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Table structure for table `silexACL__`
---
-
-DROP TABLE IF EXISTS `silexACL__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `silexACL__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `module` varchar(50) NOT NULL,
- `method` varchar(50) NOT NULL,
- `role` varchar(20) NOT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `module_UNIQUE` (`module`,`method`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='@deprecated 2024-08-05 refs #7820';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Table structure for table `sinister`
--
@@ -37867,13 +37926,13 @@ CREATE TABLE `stockBought` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `stockBuyed__`
+-- Table structure for table `stockBuyed`
--
-DROP TABLE IF EXISTS `stockBuyed__`;
+DROP TABLE IF EXISTS `stockBuyed`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `stockBuyed__` (
+CREATE TABLE `stockBuyed` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userFk` int(10) unsigned DEFAULT NULL,
`buyed` decimal(10,2) DEFAULT NULL,
@@ -37943,6 +38002,8 @@ CREATE TABLE `supplier` (
`isPayMethodChecked` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Se ha validado la forma de pago',
`isVies` tinyint(4) NOT NULL DEFAULT 0,
`stamp` longblob DEFAULT NULL,
+ `companySize` enum('small','medium','big') DEFAULT NULL,
+ `geoFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `cuenta` (`account`),
@@ -37958,6 +38019,7 @@ CREATE TABLE `supplier` (
KEY `suppplier_supplierActivityFk` (`supplierActivityFk`),
KEY `supplier_workerFk` (`workerFk`),
KEY `supplier_fk_editor` (`editorFk`),
+ KEY `supplier_zoneGeo_FK` (`geoFk`),
CONSTRAINT `Id_Pais` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE,
CONSTRAINT `pay_dem_id` FOREIGN KEY (`payDemFk`) REFERENCES `payDem` (`id`) ON UPDATE CASCADE,
CONSTRAINT `pay_met_id` FOREIGN KEY (`payMethodFk`) REFERENCES `payMethod` (`id`) ON UPDATE CASCADE,
@@ -37967,6 +38029,7 @@ CREATE TABLE `supplier` (
CONSTRAINT `supplier_transactionFk` FOREIGN KEY (`transactionTypeSageFk`) REFERENCES `sage`.`TiposTransacciones` (`CodigoTransaccion`) ON UPDATE CASCADE,
CONSTRAINT `supplier_withholdingFk` FOREIGN KEY (`withholdingSageFk`) REFERENCES `sage`.`TiposRetencion` (`CodigoRetencion`) ON UPDATE CASCADE,
CONSTRAINT `supplier_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `supplier_zoneGeo_FK` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE,
CONSTRAINT `suppplier_supplierActivityFk` FOREIGN KEY (`supplierActivityFk`) REFERENCES `supplierActivity` (`code`) ON UPDATE CASCADE,
CONSTRAINT `supplierAccountTooShort` CHECK (octet_length(`account`) = 10)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
@@ -38526,7 +38589,7 @@ CREATE TABLE `ticket` (
CONSTRAINT `ticket_ibfk_8` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`),
CONSTRAINT `ticket_ibfk_9` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `ticket_invoiceOut_FK` FOREIGN KEY (`refFk`) REFERENCES `invoiceOut` (`ref`) ON UPDATE CASCADE,
- CONSTRAINT `tickets_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `tickets_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`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 */;
@@ -39470,6 +39533,8 @@ CREATE TABLE `travel` (
`clonedFrom` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
`awbFk` smallint(11) unsigned DEFAULT NULL,
+ `daysInForward` int(10) unsigned DEFAULT NULL COMMENT 'Cuando es una redada, indica el número de días que se añadirán a la fecha de hoy para establecer el landed. NULL si no es una redada',
+ `isRaid` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Redada',
PRIMARY KEY (`id`),
UNIQUE KEY `shipment_1` (`shipped`,`landed`,`warehouseInFk`,`warehouseOutFk`,`agencyModeFk`,`ref`),
KEY `shipment` (`shipped`),
@@ -40211,6 +40276,27 @@ CREATE TABLE `workCenter` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `workCenterCommission`
+--
+
+DROP TABLE IF EXISTS `workCenterCommission`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `workCenterCommission` (
+ `workCenterFk` int(11) NOT NULL,
+ `deliveryManAdjustment` decimal(4,2) DEFAULT NULL COMMENT 'Número de trabajadores para equilibrar los repartidores de diferentes centros.\n Utilizado en repartidores de grafana',
+ `distributionM3Category1` decimal(5,2) DEFAULT NULL,
+ `distributionM3Category2` decimal(5,2) DEFAULT NULL,
+ `distributionCat4M3` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por gestión de la distribución Cat IV',
+ `distributionCat5M3` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por gestión de la distribución Cat V',
+ `deliveryM3Cat4` decimal(5,2) DEFAULT NULL,
+ `deliveryM3Cat5` decimal(5,2) DEFAULT NULL,
+ PRIMARY KEY (`workCenterFk`),
+ CONSTRAINT `workCenterCommission_workCenterFk` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `workCenterHoliday`
--
@@ -40247,7 +40333,6 @@ CREATE TABLE `worker` (
`hasMachineryAuthorized` tinyint(2) DEFAULT 0,
`seniority` date DEFAULT NULL,
`isTodayRelative` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Para el F11. Calcula los problemas de visiblidad en funcion del dia actual',
- `isF11Allowed__` tinyint(1) NOT NULL DEFAULT 0 COMMENT '@deprecated 2024-09-22',
`maritalStatus` enum('S','M') NOT NULL,
`originCountryFk` mediumint(8) unsigned DEFAULT NULL COMMENT 'País de origen',
`educationLevelFk` smallint(6) DEFAULT NULL,
@@ -40480,8 +40565,13 @@ CREATE TABLE `workerDistributionCategory` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`workerFk` int(10) unsigned NOT NULL,
`category` int(11) NOT NULL,
+ `countryFk` mediumint(8) unsigned DEFAULT NULL,
+ `isKmTruckRate` tinyint(1) DEFAULT NULL,
+ `commissionSplitWorkers` int(10) unsigned NOT NULL DEFAULT 1 COMMENT 'Número de enrutadores entr los que se reparte la comsión',
PRIMARY KEY (`id`),
KEY `workerDistributionCategory_workerFk_idx` (`workerFk`),
+ KEY `workerDistributionCategory_country_FK` (`countryFk`),
+ CONSTRAINT `workerDistributionCategory_country_FK` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE,
CONSTRAINT `workerDistributionCategory_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -40794,9 +40884,7 @@ CREATE TABLE `workerRelatives` (
`updated` timestamp NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
KEY `workerRelatives_disabilityGradeFk` (`disabilityGradeFk`),
- KEY `workerRelatives_workerFk` (`workerFk`),
- CONSTRAINT `workerRelatives_disabilityGradeFk` FOREIGN KEY (`disabilityGradeFk`) REFERENCES `disabilityGrade` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `workerRelatives_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `workerIrpf` (`workerFk`) ON DELETE CASCADE ON UPDATE CASCADE
+ KEY `workerRelatives_workerFk` (`workerFk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Modelo 145 IRPF apartado 2 y 3';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -41016,13 +41104,13 @@ CREATE TABLE `workerTimeControlMail` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `workerTimeControlParams`
+-- Table structure for table `workerTimeControlParams__`
--
-DROP TABLE IF EXISTS `workerTimeControlParams`;
+DROP TABLE IF EXISTS `workerTimeControlParams__`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `workerTimeControlParams` (
+CREATE TABLE `workerTimeControlParams__` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dayBreak` int(11) NOT NULL,
`weekBreak` int(11) NOT NULL,
@@ -41038,7 +41126,7 @@ CREATE TABLE `workerTimeControlParams` (
`mailErrorFolder` varchar(45) NOT NULL,
`mailUser` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='All values in seconds';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='@deprecated 2024-11-19';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -41817,24 +41905,6 @@ END */ ;;
/*!50003 SET character_set_client = @saved_cs_client */ ;;
/*!50003 SET character_set_results = @saved_cs_results */ ;;
/*!50003 SET collation_connection = @saved_col_connection */ ;;
-/*!50106 DROP EVENT IF EXISTS `raidUpdate` */;;
-DELIMITER ;;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
-/*!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=`vn`@`localhost`*/ /*!50106 EVENT `raidUpdate` ON SCHEDULE EVERY 1 DAY STARTS '2017-12-29 00:05:00' ON COMPLETION PRESERVE ENABLE DO CALL raidUpdate */ ;;
-/*!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 `route_doRecalc` */;;
DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
@@ -42037,9 +42107,12 @@ BEGIN
SELECT p.geoFk INTO vGeoFk
FROM address a
JOIN town t ON t.provinceFk = a.provinceFk
- JOIN postCode p ON p.townFk = t.id AND p.`code` = a.postalCode
+ JOIN postCode p ON p.townFk = t.id
+ AND (p.code = a.postalCode OR a.postalCode IS NULL)
+ JOIN zoneGeo zg ON zg.id = p.geoFk
WHERE a.id = vSelf
- ORDER BY (a.city SOUNDS LIKE t.`name`) DESC
+ ORDER BY (a.city SOUNDS LIKE t.name) DESC,
+ (p.code = a.postalCode) DESC
LIMIT 1;
RETURN vGeoFk;
@@ -42114,6 +42187,91 @@ 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 `buy_getLastWithoutInventory` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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=`vn`@`localhost` FUNCTION `buy_getLastWithoutInventory`(vItemFk INT,
+ vWarehouseFk INT
+) RETURNS int(11)
+ DETERMINISTIC
+BEGIN
+/**
+ * Retorna la última compra que no sea inventario.
+ *
+ * @param vItemFk Id del artículo
+ * @param vWarehouseFk Id del almacén
+ * @return Id de compra
+ */
+ DECLARE vBuyFk INT;
+
+ SELECT b.id INTO vBuyFk
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE e.id <> (SELECT defaultEntry FROM entryConfig)
+ AND e.supplierFk <> (SELECT supplierFk FROM inventoryConfig)
+ AND e.typeFk <> 'inventory'
+ AND b.itemFk = vItemFk
+ AND (t.warehouseInFk = vWarehouseFk OR t.warehouseInFk IS NULL)
+ ORDER BY ABS(DATEDIFF(util.VN_CURDATE(), t.landed)), e.created DESC
+ LIMIT 1;
+
+ RETURN 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 FUNCTION IF EXISTS `buy_getUltimate` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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=`vn`@`localhost` FUNCTION `buy_getUltimate`(vItemFk INT,
+ vWarehouseFk INT,
+ vDated DATE
+) RETURNS int(11)
+ DETERMINISTIC
+BEGIN
+/**
+ * Calcula las últimas compras realizadas hasta una fecha.
+ *
+ * @param vItemFk Id del artículo
+ * @param vWarehouseFk Id del almacén
+ * @param vDated Compras hasta fecha
+ * @return Id de compra
+ */
+ DECLARE vBuyFk INT;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vDated);
+
+ SELECT buyFk INTO vBuyFk
+ FROM tmp.buyUltimate;
+
+ DROP TEMPORARY TABLE IF EXISTS
+ tmp.buyUltimate,
+ tmp.buyUltimateFromInterval;
+
+ RETURN 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 FUNCTION IF EXISTS `buy_getUnitVolume` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -42397,37 +42555,37 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` FUNCTION `client_getDebt`(`vClient` INT, `vDate` DATE) RETURNS decimal(10,2)
READS SQL DATA
-BEGIN
-/**
- * Returns the risk of a customer.
- *
- * @param vClient client id
- * @param vDate date to check the risk
- * @return Client risk
- */
- DECLARE vDebt DECIMAL(10,2);
- DECLARE vHasDebt BOOLEAN;
-
- SELECT COUNT(*) INTO vHasDebt
- FROM `client` c
- WHERE c.id = vClient AND c.typeFk = 'normal';
-
- IF NOT vHasDebt THEN
- RETURN 0;
- END IF;
-
- CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt (clientFk INT);
- INSERT INTO tmp.clientGetDebt SET clientFk = vClient;
-
- CALL vn.client_getDebt(vDate);
-
- SELECT risk INTO vDebt FROM tmp.risk;
-
- DROP TEMPORARY TABLE
- tmp.clientGetDebt,
- tmp.risk;
-
- RETURN vDebt;
+BEGIN
+/**
+ * Returns the risk of a customer.
+ *
+ * @param vClient client id
+ * @param vDate date to check the risk
+ * @return Client risk
+ */
+ DECLARE vDebt DECIMAL(10,2);
+ DECLARE vHasDebt BOOLEAN;
+
+ SELECT COUNT(*) INTO vHasDebt
+ FROM `client` c
+ WHERE c.id = vClient AND c.typeFk = 'normal';
+
+ IF NOT vHasDebt THEN
+ RETURN 0;
+ END IF;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt (clientFk INT);
+ INSERT INTO tmp.clientGetDebt SET clientFk = vClient;
+
+ CALL vn.client_getDebt(vDate);
+
+ SELECT risk INTO vDebt FROM tmp.risk;
+
+ DROP TEMPORARY TABLE
+ tmp.clientGetDebt,
+ tmp.risk;
+
+ RETURN vDebt;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -42489,6 +42647,45 @@ 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 `client_getGeo` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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=`vn`@`localhost` FUNCTION `client_getGeo`(vSelf INT) RETURNS int(11)
+ DETERMINISTIC
+BEGIN
+/**
+ * Returns the geo for the passed client.
+ *
+ * @param vSelf The address id
+ * @return The geo id
+ */
+ DECLARE vGeoFk INT;
+
+ SELECT p.geoFk INTO vGeoFk
+ FROM client c
+ JOIN town t ON t.provinceFk = c.provinceFk
+ JOIN postCode p ON p.townFk = t.id
+ AND (p.code = c.postcode OR c.postcode IS NULL)
+ JOIN zoneGeo zg ON zg.id = p.geoFk
+ WHERE c.id = vSelf
+ ORDER BY (c.city SOUNDS LIKE t.name) DESC,
+ (p.code = c.postcode) DESC
+ LIMIT 1;
+
+ RETURN vGeoFk;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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 `client_getSalesPerson` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -43038,58 +43235,51 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` FUNCTION `entry_getCommission`(vTravelFk INT,
- vCurrencyFk INT,
- vSupplierFk INT
+ vCurrencyFk INT,
+ vSupplierFk INT
) RETURNS int(11)
READS SQL DATA
BEGIN
- DECLARE vCommission INT;
- DECLARE vCurrentCommission INT;
- DECLARE vIsCurrencyUsd INT;
- DECLARE vLastEntryFk INT;
-
- SELECT count(*) INTO vIsCurrencyUsd
- FROM currency c
- WHERE c.code = 'USD' AND id = vCurrencyFk;
-
- IF NOT vIsCurrencyUsd THEN
-
- SELECT e.id INTO vLastEntryFk
- FROM vn.entry e
- JOIN vn.travel tr ON tr.id = e.travelFk
- WHERE e.supplierFk = vSupplierFk
- ORDER BY tr.landed DESC
- LIMIT 1;
-
- IF vLastEntryFk THEN
-
- SELECT commission INTO vCurrentCommission
- FROM vn.entry
- WHERE id = vLastEntryFk;
-
- ELSE
-
- SELECT commission INTO vCurrentCommission
- FROM supplier s
- WHERE s.id = vSupplierFk;
-
- END IF;
-
- RETURN vCurrentCommission;
-
- ELSE
+ DECLARE vCommission INT;
+ DECLARE vCurrentCommission INT;
+ DECLARE vIsNotEUR INT;
+ DECLARE vLastEntryFk INT;
+ SELECT count(*) INTO vIsNotEUR
+ FROM currency c
+ WHERE c.code <> 'EUR' AND id = vCurrencyFk;
+
+ IF vIsNotEUR THEN
SELECT ROUND(-100 * (1 - (1 / r.value))) INTO vCommission
FROM travel t
LEFT JOIN referenceCurrent r ON r.currencyFk = vCurrencyFk AND r.`dated` <= t.shipped
WHERE t.id = vTravelFk
ORDER BY r.`dated` DESC
LIMIT 1;
-
+
RETURN IFNULL(vCommission, 0);
-
- END IF;
-
+ ELSE
+ SELECT e.id INTO vLastEntryFk
+ FROM `entry` e
+ JOIN travel tr ON tr.id = e.travelFk
+ WHERE e.supplierFk = vSupplierFk
+ ORDER BY tr.landed DESC
+ LIMIT 1;
+
+ IF vLastEntryFk THEN
+ SELECT commission INTO vCurrentCommission
+ FROM `entry`
+ WHERE id = vLastEntryFk;
+
+ ELSE
+ SELECT commission INTO vCurrentCommission
+ FROM supplier s
+ WHERE s.id = vSupplierFk;
+
+ END IF;
+
+ RETURN vCurrentCommission;
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -43719,7 +43909,7 @@ BEGIN
SELECT count(*) INTO vItemCount
FROM vn.sale s
JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
WHERE s.ticketFk = vTicketFk
AND p.sectorFk = vSectorFk;
@@ -44169,7 +44359,7 @@ BEGIN
SELECT count(*) INTO vItemCount
FROM vn.sale s
JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
WHERE s.ticketFk = vTicketFk
AND p.sectorFk = vSectorFk;
@@ -44651,7 +44841,7 @@ BEGIN
JOIN cache.zoneAgencyFriendship zf ON zf.agencyModeFk = r.agencyModeFk
WHERE friendship >= vSignificativeFriendship
AND zf.zoneFk = vZoneFk
- AND r.created = vLanded
+ AND r.dated = vLanded
ORDER BY friendship;
-- Se eliminan aquellas que superan el volumen máximo
@@ -44717,7 +44907,7 @@ BEGIN
JOIN cache.zoneAgencyFriendship zf ON zf.agencyModeFk = r.agencyModeFk
WHERE friendship >= vSignificativeFriendship
AND zf.zoneFk = vZoneFk
- AND r.created = vLanded
+ AND r.dated = vLanded
ORDER BY friendship;
-- Se eliminan aquellas que superan el volumen máximo
@@ -44867,6 +45057,47 @@ 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 `supplier_getGeo` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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=`vn`@`localhost` FUNCTION `supplier_getGeo`(vSelf INT) RETURNS int(11)
+ DETERMINISTIC
+BEGIN
+/**
+ * Returns the geo for the passed supplier.
+ *
+ * @param vSelf The address id
+ * @return The geo id
+ */
+ DECLARE vGeoFk INT;
+
+ SELECT p.geoFk INTO vGeoFk
+ FROM supplier s
+ JOIN town t ON t.provinceFk = s.provinceFk
+ JOIN postCode p ON p.townFk = t.id
+ AND (p.code = s.postCode OR s.postCode IS NULL)
+ LEFT JOIN supplierAddress sad ON sad.supplierFk = s.id
+ JOIN zoneGeo zg ON zg.id = p.geoFk
+ WHERE s.id = vSelf
+ ORDER BY (s.city SOUNDS LIKE t.name) DESC,
+ (p.code = s.postCode) DESC,
+ (p.code = sad.postalCode) DESC
+ LIMIT 1;
+
+ RETURN vGeoFk;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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 `testCIF` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -45754,82 +45985,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 `timeWorkerControl_getDirection` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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=`vn`@`localhost` FUNCTION `timeWorkerControl_getDirection`(vUserFk INT, vTimed DATETIME) RETURNS varchar(6) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
- READS SQL DATA
-BEGIN
-/**
- * Verifica la dirección de la fichada
- * @param vUserFk Identificador del trabajador
- * @param vTimed Hora de la fichada
- * @return Retorna sentido de la fichada 'in, out, middle'
- */
-
- DECLARE vPrevious DATETIME ;
- DECLARE vNext DATETIME ;
- DECLARE vPreviousDirection VARCHAR(3) ;
- DECLARE vNextDirection VARCHAR(3) ;
- DECLARE vDayStayMax INT;
- DECLARE vTimedSeconds INT;
- DECLARE vLastTimeIn INT;
-
- SELECT UNIX_TIMESTAMP(vTimed) INTO vTimedSeconds;
-
- SELECT dayStayMax INTO vDayStayMax
- FROM vn.workerTimeControlParams;
-
- SELECT timed, direction INTO vNext,vNextDirection
- FROM vn.workerTimeControl
- WHERE userFk = vUserFk
- AND direction IN ('in','out')
- AND timed > vTimed
- ORDER BY timed ASC
- LIMIT 1;
-
- SELECT timed, direction INTO vPrevious, vPreviousDirection
- FROM vn.workerTimeControl
- WHERE userFk = vUserFk
- AND direction IN ('in','out')
- AND timed < vTimed
- ORDER BY timed DESC
- LIMIT 1;
-
- IF (vTimedSeconds - UNIX_TIMESTAMP(vPrevious) + UNIX_TIMESTAMP(vNext) - vTimedSeconds)<= vDayStayMax AND vPreviousDirection = 'in' AND vNextDirection = 'out' THEN
- RETURN 'middle';
- END IF;
-
-
- IF (vTimedSeconds> UNIX_TIMESTAMP(vPrevious)) THEN
- IF vPreviousDirection = 'in' THEN
- RETURN 'out';
- ELSE
- SELECT UNIX_TIMESTAMP(MAX(timed)) INTO vLastTimeIn
- FROM vn.workerTimeControl
- WHERE userFk = vUserFk
- AND direction ='in'
- AND timed < vPrevious;
- IF vTimedSeconds - vLastTimeIn <= vDayStayMax THEN
- RETURN 'out';
- END IF;
- END IF;
- END IF;
-
- RETURN 'in';
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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 `time_getSalesYear` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -45976,40 +46131,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 `workerMachinery_isRegistered` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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=`vn`@`localhost` FUNCTION `workerMachinery_isRegistered`(vWorkerFk VARCHAR(10)) RETURNS tinyint(1)
- READS SQL DATA
-BEGIN
-/**
- * Comprueba si existen registros en las últimas horas (maxHours de machineWorkerConfig) del trabajador vWorkerFk y si tiene a nulo la hora outTimed (indica la hora que deja el vehículo)
- *
- * @param vWorkerFk id del trabajador
- * @return Devuelve TRUE/FALSE en caso de que haya o no registros
- */
- IF (SELECT COUNT(*)
- FROM machineWorker m
- WHERE m.workerFk = vWorkerFk
- AND m.inTimed >= TIMESTAMPADD(HOUR , -(SELECT maxHours from machineWorkerConfig), util.VN_NOW()) AND ISNULL(m.outTimed))
- THEN
- RETURN TRUE;
- ELSE
- RETURN FALSE;
- END IF;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP FUNCTION IF EXISTS `workerNigthlyHours_calculate` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -46300,7 +46421,7 @@ BEGIN
AND vWarehouseFk IN (tr.warehouseInFk, 0)
AND b.itemFk = vItemFk
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT tr.isRaid
UNION ALL
SELECT tr.shipped,
NULL,
@@ -46319,7 +46440,7 @@ BEGIN
AND s.id <> (SELECT supplierFk FROM inventoryConfig)
AND b.itemFk = vItemFk
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT tr.isRaid
UNION ALL
SELECT t.shipped,
NULL,
@@ -46342,7 +46463,7 @@ BEGIN
FROM tHistoricalPast
WHERE `date` < vDate;
- SELECT p1.*, NULL v_virtual
+ SELECT p1.*, NULL v_virtual
FROM (
SELECT vDate `date`,
vCalculatedInventory input,
@@ -46357,7 +46478,7 @@ BEGIN
FROM tHistoricalPast
WHERE `date` >= vDate
) p1;
-
+
DROP TEMPORARY TABLE tHistoricalPast;
END ;;
DELIMITER ;
@@ -46911,7 +47032,7 @@ CREATE DEFINER=`vn`@`localhost` PROCEDURE `available_traslate`(
vWarehouseShipment INT)
proc: BEGIN
/**
- * Calcular la disponibilidad dependiendo del almacen
+ * Calcular la disponibilidad dependiendo del almacen
* de origen y destino según la fecha.
*
* @param vWarehouseLanding Almacén de llegada
@@ -46948,10 +47069,10 @@ proc: BEGIN
WHERE t.landed BETWEEN vDatedInventory AND vDatedFrom
AND t.warehouseInFk = vWarehouseLanding
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT t.isRaid
GROUP BY c.itemFk;
- -- Tabla con el ultimo dia de last_buy para cada producto
+ -- Tabla con el ultimo dia de last_buy para cada producto
-- que hace un replace de la anterior.
CALL buy_getUltimate (NULL, vWarehouseShipment, util.VN_CURDATE());
@@ -46963,7 +47084,7 @@ proc: BEGIN
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
+ AND NOT tr.isRaid
ON DUPLICATE KEY UPDATE tItemRange.dated = GREATEST(tItemRange.dated,
tr.landed);
@@ -47000,7 +47121,7 @@ proc: BEGIN
JOIN tItemRangeLive ir ON ir.itemFk = b.itemFk
WHERE NOT e.isExcludedFromAvailable
AND b.quantity <> 0
- AND NOT e.isRaid
+ AND NOT t.isRaid
AND t.warehouseInFk = vWarehouseLanding
AND t.landed >= vDatedFrom
AND (ir.dated IS NULL OR t.landed <= ir.dated)
@@ -47994,7 +48115,7 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `buy_getUltimate`(
vItemFk INT,
- vWarehouseFk SMALLINT,
+ vWarehouseFk INT,
vDated DATE
)
BEGIN
@@ -49547,7 +49668,7 @@ BEGIN
AND ts.id IS NULL;
DELETE FROM claim WHERE ticketCreated < v4Years;
-- Robert ubicacion anterior de travelLog comentario para debug
- DELETE FROM zoneEvent WHERE `type` = 'day' AND dated < v3Months;
+ DELETE FROM zoneEvent WHERE dated < v2Months OR ended < v2Months;
DELETE b FROM buy b
JOIN entryConfig e ON e.defaultEntry = b.entryFk
WHERE b.created < v2Months;
@@ -49758,7 +49879,7 @@ BEGIN
JOIN agencyMode am ON am.id = tr.agencyModeFk
WHERE NOT b.quantity
AND am.code = 'logiflora'
- AND e.isRaid;
+ AND tr.daysInForward;
START TRANSACTION;
@@ -51071,7 +51192,7 @@ BEGIN
AND s.semaphore = 1
GROUP BY st.saleFk) st ON st.saleFk = ts.saleFk
JOIN itemShelving ish ON ish.itemFk = ts.itemFk
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector sc ON sc.id = p.sectorFk
JOIN sectorType st ON st.id = sc.typeFk
@@ -51221,93 +51342,93 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `collection_addWithReservation`(
- vItemFk INT,
- vQuantity INT,
- vTicketFk INT,
- vSaleGroupFk INT,
- vSectorFk INT
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `collection_addWithReservation`(
+ vItemFk INT,
+ vQuantity INT,
+ vTicketFk INT,
+ vSaleGroupFk INT,
+ vSectorFk INT
)
-BEGIN
-/**
- * En el ámbito de las colecciones se añade una línea de sale a un ticket
- * de una colección en caso de tener disponible y se realiza la reserva.
- *
- * @param vItemFk id of item
- * @param vQuantity quantity to be added to the ticket
- * @param vTicketFk ticket to which the sales line is added
- * @param vSaleGroupFk saleGroupFk id to add saleGroupDetail
- */
-
- DECLARE vWarehouseFk INT;
- DECLARE vCacheAvailableFk INT;
- DECLARE vAvailable INT;
- DECLARE vSaleFk INT;
- DECLARE vConcept VARCHAR(50);
- DECLARE vItemName VARCHAR(50);
- DECLARE vHasThrow BOOLEAN DEFAULT FALSE;
-
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- SELECT t.warehouseFk INTO vWarehouseFk
- FROM ticket t
- JOIN ticketCollection tc ON tc.ticketFk = t.id
- WHERE t.id = vTicketFk;
-
- CALL cache.available_refresh(
- vCacheAvailableFk,
- FALSE,
- vWarehouseFk,
- util.VN_CURDATE());
-
- SELECT available INTO vAvailable
- FROM cache.available
- WHERE calc_id = vCacheAvailableFk
- AND item_id = vItemFk;
-
- IF vAvailable < vQuantity THEN
- SET vHasThrow = TRUE;
- ELSE
- SELECT `name`,
- CONCAT(getUser(), ' ', DATE_FORMAT(util.VN_NOW(), '%H:%i'), ' ', name)
- INTO vItemName, vConcept
- FROM item
- WHERE id = vItemFk;
-
- START TRANSACTION;
-
- INSERT INTO sale
- SET itemFk = vItemFk,
- ticketFk = vTicketFk,
- concept = vConcept,
- quantity = vQuantity,
- isAdded = TRUE;
-
- SELECT LAST_INSERT_ID() INTO vSaleFk;
-
- CALL sale_calculateComponent(vSaleFk, NULL);
- CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk);
-
- IF NOT EXISTS (SELECT TRUE FROM itemShelvingSale WHERE saleFk = vSaleFk LIMIT 1) THEN
- SET vHasThrow = TRUE;
- END IF;
- END IF;
-
- IF vHasThrow THEN
- CALL util.throw("There is no available for the selected item");
- END IF;
-
- IF vSaleGroupFk THEN
- INSERT INTO saleGroupDetail
- SET saleFk = vSaleFk,
- saleGroupFk = vSaleGroupFk;
- END IF;
-
- COMMIT;
+BEGIN
+/**
+ * En el ámbito de las colecciones se añade una línea de sale a un ticket
+ * de una colección en caso de tener disponible y se realiza la reserva.
+ *
+ * @param vItemFk id of item
+ * @param vQuantity quantity to be added to the ticket
+ * @param vTicketFk ticket to which the sales line is added
+ * @param vSaleGroupFk saleGroupFk id to add saleGroupDetail
+ */
+
+ DECLARE vWarehouseFk INT;
+ DECLARE vCacheAvailableFk INT;
+ DECLARE vAvailable INT;
+ DECLARE vSaleFk INT;
+ DECLARE vConcept VARCHAR(50);
+ DECLARE vItemName VARCHAR(50);
+ DECLARE vHasThrow BOOLEAN DEFAULT FALSE;
+
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ SELECT t.warehouseFk INTO vWarehouseFk
+ FROM ticket t
+ JOIN ticketCollection tc ON tc.ticketFk = t.id
+ WHERE t.id = vTicketFk;
+
+ CALL cache.available_refresh(
+ vCacheAvailableFk,
+ FALSE,
+ vWarehouseFk,
+ util.VN_CURDATE());
+
+ SELECT available INTO vAvailable
+ FROM cache.available
+ WHERE calc_id = vCacheAvailableFk
+ AND item_id = vItemFk;
+
+ IF vAvailable < vQuantity THEN
+ SET vHasThrow = TRUE;
+ ELSE
+ SELECT `name`,
+ CONCAT(getUser(), ' ', DATE_FORMAT(util.VN_NOW(), '%H:%i'), ' ', name)
+ INTO vItemName, vConcept
+ FROM item
+ WHERE id = vItemFk;
+
+ START TRANSACTION;
+
+ INSERT INTO sale
+ SET itemFk = vItemFk,
+ ticketFk = vTicketFk,
+ concept = vConcept,
+ quantity = vQuantity,
+ isAdded = TRUE;
+
+ SELECT LAST_INSERT_ID() INTO vSaleFk;
+
+ CALL sale_calculateComponent(vSaleFk, NULL);
+ CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk);
+
+ IF NOT EXISTS (SELECT TRUE FROM itemShelvingSale WHERE saleFk = vSaleFk LIMIT 1) THEN
+ SET vHasThrow = TRUE;
+ END IF;
+ END IF;
+
+ IF vHasThrow THEN
+ CALL util.throw("There is no available for the selected item");
+ END IF;
+
+ IF vSaleGroupFk THEN
+ INSERT INTO saleGroupDetail
+ SET saleFk = vSaleFk,
+ saleGroupFk = vSaleGroupFk;
+ END IF;
+
+ COMMIT;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -51324,145 +51445,145 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `collection_assign`(
- vUserFk INT,
- OUT vCollectionFk INT
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `collection_assign`(
+ vUserFk INT,
+ OUT vCollectionFk INT
)
-BEGIN
-/**
- * Comprueba si existen colecciones libres que se ajustan
- * al perfil del usuario y le asigna la más antigua.
- * Añade un registro al semillero de colecciones.
- *
- * @param vUserFk Id de usuario
- * @param vCollectionFk Id de colección
- */
- DECLARE vHasTooMuchCollections BOOL;
- DECLARE vDone BOOL DEFAULT FALSE;
- DECLARE vCollectionWorker INT;
- DECLARE vMaxNotAssignedCollectionLifeTime TIME;
-
- DECLARE vCollections CURSOR FOR
- WITH collections AS (
- SELECT tc.collectionFk,
- SUM(sv.volume) volume,
- c.saleTotalCount,
- c.itemPackingTypeFk,
- c.trainFk,
- c.warehouseFk,
- c.wagons
- FROM vn.ticketCollection tc
- JOIN vn.collection c ON c.id = tc.collectionFk
- JOIN vn.saleVolume sv ON sv.ticketFk = tc.ticketFk
- WHERE c.workerFk IS NULL
- AND sv.shipped >= util.VN_CURDATE()
- GROUP BY tc.collectionFk
- ) SELECT c.collectionFk
- FROM collections c
- JOIN vn.operator o
- WHERE o.workerFk = vUserFk
- AND (c.saleTotalCount <= o.linesLimit OR o.linesLimit IS NULL)
- AND (c.itemPackingTypeFk = o.itemPackingTypeFk OR o.itemPackingTypeFk IS NULL)
- AND o.numberOfWagons = c.wagons
- AND o.trainFk = c.trainFk
- AND o.warehouseFk = c.warehouseFk;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- -- Si hay colecciones sin terminar, sale del proceso
-
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- CALL collection_get(vUserFk);
-
- SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, pc.maxNotAssignedCollectionLifeTime
- INTO vHasTooMuchCollections, vMaxNotAssignedCollectionLifeTime
- FROM productionConfig pc
- LEFT JOIN tmp.collection ON TRUE;
-
- DROP TEMPORARY TABLE tmp.collection;
-
- IF vHasTooMuchCollections THEN
- CALL util.throw('Hay colecciones pendientes');
- END IF;
-
- -- Se eliminan las colecciones sin asignar que estan obsoletas
-
- INSERT INTO ticketTracking(stateFk, ticketFk)
- SELECT s.id, tc.ticketFk
- FROM `collection` c
- JOIN ticketCollection tc ON tc.collectionFk = c.id
- JOIN `state` s ON s.code = 'PRINTED_AUTO'
- WHERE c.workerFk IS NULL
- AND TIMEDIFF(util.VN_NOW(), c.created) > vMaxNotAssignedCollectionLifeTime;
-
- DELETE FROM `collection`
- WHERE workerFk IS NULL
- AND TIMEDIFF(util.VN_NOW(), created) > vMaxNotAssignedCollectionLifeTime;
-
- -- Se añade registro al semillero
-
- INSERT INTO collectionHotbed(userFk) VALUES(vUserFk);
-
- -- Comprueba si hay colecciones disponibles que se ajustan a su configuracion
-
- OPEN vCollections;
- l: LOOP
- SET vDone = FALSE;
- FETCH vCollections INTO vCollectionFk;
-
- IF vDone THEN
- LEAVE l;
- END IF;
-
- BEGIN
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- SET vCollectionFk = NULL;
- RESIGNAL;
- END;
-
- START TRANSACTION;
-
- SELECT workerFk INTO vCollectionWorker
- FROM `collection`
- WHERE id = vCollectionFk FOR UPDATE;
-
- IF vCollectionWorker IS NULL THEN
- UPDATE `collection`
- SET workerFk = vUserFk
- WHERE id = vCollectionFk;
-
- COMMIT;
- LEAVE l;
- END IF;
-
- ROLLBACK;
- END;
- END LOOP;
- CLOSE vCollections;
-
- IF vCollectionFk IS NULL THEN
- CALL collection_new(vUserFk, vCollectionFk);
-
- START TRANSACTION;
-
- SELECT workerFk INTO vCollectionWorker
- FROM `collection`
- WHERE id = vCollectionFk FOR UPDATE;
-
- IF vCollectionWorker IS NULL THEN
- UPDATE `collection`
- SET workerFk = vUserFk
- WHERE id = vCollectionFk;
- END IF;
-
- COMMIT;
- END IF;
+BEGIN
+/**
+ * Comprueba si existen colecciones libres que se ajustan
+ * al perfil del usuario y le asigna la más antigua.
+ * Añade un registro al semillero de colecciones.
+ *
+ * @param vUserFk Id de usuario
+ * @param vCollectionFk Id de colección
+ */
+ DECLARE vHasTooMuchCollections BOOL;
+ DECLARE vDone BOOL DEFAULT FALSE;
+ DECLARE vCollectionWorker INT;
+ DECLARE vMaxNotAssignedCollectionLifeTime TIME;
+
+ DECLARE vCollections CURSOR FOR
+ WITH collections AS (
+ SELECT tc.collectionFk,
+ SUM(sv.volume) volume,
+ c.saleTotalCount,
+ c.itemPackingTypeFk,
+ c.trainFk,
+ c.warehouseFk,
+ c.wagons
+ FROM vn.ticketCollection tc
+ JOIN vn.collection c ON c.id = tc.collectionFk
+ JOIN vn.saleVolume sv ON sv.ticketFk = tc.ticketFk
+ WHERE c.workerFk IS NULL
+ AND sv.shipped >= util.VN_CURDATE()
+ GROUP BY tc.collectionFk
+ ) SELECT c.collectionFk
+ FROM collections c
+ JOIN vn.operator o
+ WHERE o.workerFk = vUserFk
+ AND (c.saleTotalCount <= o.linesLimit OR o.linesLimit IS NULL)
+ AND (c.itemPackingTypeFk = o.itemPackingTypeFk OR o.itemPackingTypeFk IS NULL)
+ AND o.numberOfWagons = c.wagons
+ AND o.trainFk = c.trainFk
+ AND o.warehouseFk = c.warehouseFk;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+ -- Si hay colecciones sin terminar, sale del proceso
+
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ CALL collection_get(vUserFk);
+
+ SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, pc.maxNotAssignedCollectionLifeTime
+ INTO vHasTooMuchCollections, vMaxNotAssignedCollectionLifeTime
+ FROM productionConfig pc
+ LEFT JOIN tmp.collection ON TRUE;
+
+ DROP TEMPORARY TABLE tmp.collection;
+
+ IF vHasTooMuchCollections THEN
+ CALL util.throw('Hay colecciones pendientes');
+ END IF;
+
+ -- Se eliminan las colecciones sin asignar que estan obsoletas
+
+ INSERT INTO ticketTracking(stateFk, ticketFk)
+ SELECT s.id, tc.ticketFk
+ FROM `collection` c
+ JOIN ticketCollection tc ON tc.collectionFk = c.id
+ JOIN `state` s ON s.code = 'PRINTED_AUTO'
+ WHERE c.workerFk IS NULL
+ AND TIMEDIFF(util.VN_NOW(), c.created) > vMaxNotAssignedCollectionLifeTime;
+
+ DELETE FROM `collection`
+ WHERE workerFk IS NULL
+ AND TIMEDIFF(util.VN_NOW(), created) > vMaxNotAssignedCollectionLifeTime;
+
+ -- Se añade registro al semillero
+
+ INSERT INTO collectionHotbed(userFk) VALUES(vUserFk);
+
+ -- Comprueba si hay colecciones disponibles que se ajustan a su configuracion
+
+ OPEN vCollections;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vCollections INTO vCollectionFk;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ BEGIN
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ SET vCollectionFk = NULL;
+ RESIGNAL;
+ END;
+
+ START TRANSACTION;
+
+ SELECT workerFk INTO vCollectionWorker
+ FROM `collection`
+ WHERE id = vCollectionFk FOR UPDATE;
+
+ IF vCollectionWorker IS NULL THEN
+ UPDATE `collection`
+ SET workerFk = vUserFk
+ WHERE id = vCollectionFk;
+
+ COMMIT;
+ LEAVE l;
+ END IF;
+
+ ROLLBACK;
+ END;
+ END LOOP;
+ CLOSE vCollections;
+
+ IF vCollectionFk IS NULL THEN
+ CALL collection_new(vUserFk, vCollectionFk);
+
+ START TRANSACTION;
+
+ SELECT workerFk INTO vCollectionWorker
+ FROM `collection`
+ WHERE id = vCollectionFk FOR UPDATE;
+
+ IF vCollectionWorker IS NULL THEN
+ UPDATE `collection`
+ SET workerFk = vUserFk
+ WHERE id = vCollectionFk;
+ END IF;
+
+ COMMIT;
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -51530,146 +51651,146 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `collection_getAssigned`(
- vUserFk INT,
- OUT vCollectionFk INT
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `collection_getAssigned`(
+ vUserFk INT,
+ OUT vCollectionFk INT
)
-BEGIN
-/**
- * Comprueba si existen colecciones libres que se ajustan
- * al perfil del usuario y le asigna la más antigua.
- * Añade un registro al semillero de colecciones.
- *
- * @param vUserFk Id de usuario
- * @param vCollectionFk Id de colección
- */
- DECLARE vHasTooMuchCollections BOOL;
- DECLARE vDone BOOL DEFAULT FALSE;
- DECLARE vCollectionWorker INT;
- DECLARE vMaxNotAssignedCollectionLifeTime TIME;
-
- DECLARE vCollections CURSOR FOR
- WITH collections AS (
- SELECT tc.collectionFk,
- SUM(sv.volume) volume,
- c.saleTotalCount,
- c.itemPackingTypeFk,
- c.trainFk,
- c.warehouseFk,
- c.wagons
- FROM vn.ticketCollection tc
- JOIN vn.collection c ON c.id = tc.collectionFk
- JOIN vn.saleVolume sv ON sv.ticketFk = tc.ticketFk
- WHERE c.workerFk IS NULL
- AND sv.shipped >= util.VN_CURDATE()
- GROUP BY tc.collectionFk
- ) SELECT c.collectionFk
- FROM collections c
- JOIN vn.operator o
- WHERE o.workerFk = vUserFk
- AND (c.saleTotalCount <= o.linesLimit OR o.linesLimit IS NULL)
- AND (c.itemPackingTypeFk = o.itemPackingTypeFk OR o.itemPackingTypeFk IS NULL)
- AND o.numberOfWagons = c.wagons
- AND o.trainFk = c.trainFk
- AND o.warehouseFk = c.warehouseFk;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- -- Si hay colecciones sin terminar, sale del proceso
-
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- CALL collection_get(vUserFk);
-
- SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, pc.maxNotAssignedCollectionLifeTime
- INTO vHasTooMuchCollections, vMaxNotAssignedCollectionLifeTime
- FROM productionConfig pc
- LEFT JOIN tmp.collection ON TRUE;
-
- DROP TEMPORARY TABLE tmp.collection;
-
- IF vHasTooMuchCollections THEN
- CALL util.throw('Hay colecciones pendientes');
- END IF;
-
- -- Se eliminan las colecciones sin asignar que estan obsoletas
-
- INSERT INTO ticketTracking(stateFk, ticketFk)
- SELECT s.id, tc.ticketFk
- FROM `collection` c
- JOIN ticketCollection tc ON tc.collectionFk = c.id
- JOIN `state` s ON s.code = 'PRINTED_AUTO'
- WHERE c.workerFk IS NULL
- AND TIMEDIFF(util.VN_NOW(), c.created) > vMaxNotAssignedCollectionLifeTime;
-
- DELETE FROM `collection`
- WHERE workerFk IS NULL
- AND TIMEDIFF(util.VN_NOW(), created) > vMaxNotAssignedCollectionLifeTime;
-
- -- Se añade registro al semillero
-
- INSERT INTO collectionHotbed(userFk) VALUES(vUserFk);
-
- -- Comprueba si hay colecciones disponibles que se ajustan a su configuracion
-
- OPEN vCollections;
- l: LOOP
- SET vDone = FALSE;
- FETCH vCollections INTO vCollectionFk;
-
- IF vDone THEN
- LEAVE l;
- END IF;
-
- BEGIN
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- SET vCollectionFk = NULL;
- RESIGNAL;
- END;
-
- START TRANSACTION;
-
- SELECT workerFk INTO vCollectionWorker
- FROM `collection`
- WHERE id = vCollectionFk FOR UPDATE;
-
- IF vCollectionWorker IS NULL THEN
- UPDATE `collection`
- SET workerFk = vUserFk
- WHERE id = vCollectionFk;
-
- COMMIT;
- LEAVE l;
- END IF;
-
- ROLLBACK;
- END;
- END LOOP;
- CLOSE vCollections;
-
- IF vCollectionFk IS NULL THEN
- CALL collection_new(vUserFk, vCollectionFk);
-
- START TRANSACTION;
-
- SELECT workerFk INTO vCollectionWorker
- FROM `collection`
- WHERE id = vCollectionFk FOR UPDATE;
-
- IF vCollectionWorker IS NULL THEN
- UPDATE `collection`
- SET workerFk = vUserFk
- WHERE id = vCollectionFk;
- END IF;
-
- COMMIT;
- END IF;
- CALL itemShelvingSale_addByCollection(vCollectionFk);
+BEGIN
+/**
+ * Comprueba si existen colecciones libres que se ajustan
+ * al perfil del usuario y le asigna la más antigua.
+ * Añade un registro al semillero de colecciones.
+ *
+ * @param vUserFk Id de usuario
+ * @param vCollectionFk Id de colección
+ */
+ DECLARE vHasTooMuchCollections BOOL;
+ DECLARE vDone BOOL DEFAULT FALSE;
+ DECLARE vCollectionWorker INT;
+ DECLARE vMaxNotAssignedCollectionLifeTime TIME;
+
+ DECLARE vCollections CURSOR FOR
+ WITH collections AS (
+ SELECT tc.collectionFk,
+ SUM(sv.volume) volume,
+ c.saleTotalCount,
+ c.itemPackingTypeFk,
+ c.trainFk,
+ c.warehouseFk,
+ c.wagons
+ FROM vn.ticketCollection tc
+ JOIN vn.collection c ON c.id = tc.collectionFk
+ JOIN vn.saleVolume sv ON sv.ticketFk = tc.ticketFk
+ WHERE c.workerFk IS NULL
+ AND sv.shipped >= util.VN_CURDATE()
+ GROUP BY tc.collectionFk
+ ) SELECT c.collectionFk
+ FROM collections c
+ JOIN vn.operator o
+ WHERE o.workerFk = vUserFk
+ AND (c.saleTotalCount <= o.linesLimit OR o.linesLimit IS NULL)
+ AND (c.itemPackingTypeFk = o.itemPackingTypeFk OR o.itemPackingTypeFk IS NULL)
+ AND o.numberOfWagons = c.wagons
+ AND o.trainFk = c.trainFk
+ AND o.warehouseFk = c.warehouseFk;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+ -- Si hay colecciones sin terminar, sale del proceso
+
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ CALL collection_get(vUserFk);
+
+ SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, pc.maxNotAssignedCollectionLifeTime
+ INTO vHasTooMuchCollections, vMaxNotAssignedCollectionLifeTime
+ FROM productionConfig pc
+ LEFT JOIN tmp.collection ON TRUE;
+
+ DROP TEMPORARY TABLE tmp.collection;
+
+ IF vHasTooMuchCollections THEN
+ CALL util.throw('Hay colecciones pendientes');
+ END IF;
+
+ -- Se eliminan las colecciones sin asignar que estan obsoletas
+
+ INSERT INTO ticketTracking(stateFk, ticketFk)
+ SELECT s.id, tc.ticketFk
+ FROM `collection` c
+ JOIN ticketCollection tc ON tc.collectionFk = c.id
+ JOIN `state` s ON s.code = 'PRINTED_AUTO'
+ WHERE c.workerFk IS NULL
+ AND TIMEDIFF(util.VN_NOW(), c.created) > vMaxNotAssignedCollectionLifeTime;
+
+ DELETE FROM `collection`
+ WHERE workerFk IS NULL
+ AND TIMEDIFF(util.VN_NOW(), created) > vMaxNotAssignedCollectionLifeTime;
+
+ -- Se añade registro al semillero
+
+ INSERT INTO collectionHotbed(userFk) VALUES(vUserFk);
+
+ -- Comprueba si hay colecciones disponibles que se ajustan a su configuracion
+
+ OPEN vCollections;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vCollections INTO vCollectionFk;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ BEGIN
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ SET vCollectionFk = NULL;
+ RESIGNAL;
+ END;
+
+ START TRANSACTION;
+
+ SELECT workerFk INTO vCollectionWorker
+ FROM `collection`
+ WHERE id = vCollectionFk FOR UPDATE;
+
+ IF vCollectionWorker IS NULL THEN
+ UPDATE `collection`
+ SET workerFk = vUserFk
+ WHERE id = vCollectionFk;
+
+ COMMIT;
+ LEAVE l;
+ END IF;
+
+ ROLLBACK;
+ END;
+ END LOOP;
+ CLOSE vCollections;
+
+ IF vCollectionFk IS NULL THEN
+ CALL collection_new(vUserFk, vCollectionFk);
+
+ START TRANSACTION;
+
+ SELECT workerFk INTO vCollectionWorker
+ FROM `collection`
+ WHERE id = vCollectionFk FOR UPDATE;
+
+ IF vCollectionWorker IS NULL THEN
+ UPDATE `collection`
+ SET workerFk = vUserFk
+ WHERE id = vCollectionFk;
+ END IF;
+
+ COMMIT;
+ END IF;
+ CALL itemShelvingSale_addByCollection(vCollectionFk);
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -51717,7 +51838,9 @@ BEGIN
t.warehouseFk,
w.id salesPersonFk,
IFNULL(ob.description,'') observaciones,
- cc.rgb
+ cc.rgb,
+ p.code parkingCode,
+ IF (ps.ticketFk, TRUE, FALSE) isAdvanced
FROM vn.ticket t
LEFT JOIN vn.ticketCollection tc ON t.id = tc.ticketFk
LEFT JOIN vn.collection c2 ON c2.id = tc.collectionFk
@@ -51729,7 +51852,10 @@ BEGIN
LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk
LEFT JOIN vn.client c ON c.id = t.clientFk
LEFT JOIN vn.worker w ON w.id = c.salesPersonFk
- LEFT JOIN observation ob ON ob.ticketFk = t.id
+ LEFT JOIN observation ob ON ob.ticketFk = t.id
+ LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id
+ LEFT JOIN vn.parking p ON tp.parkingFk = p.id
+ LEFT JOIN vn.packingSiteAdvanced ps ON ps.ticketFk = t.id
WHERE t.id = vParamFk
AND t.shipped >= vYesterday
UNION
@@ -51739,7 +51865,9 @@ BEGIN
t.warehouseFk,
w.id salesPersonFk,
ob.description,
- IF(NOT (vItemPackingTypeFk <=> 'V'), cc.rgb, NULL) `rgb`
+ IF(NOT (vItemPackingTypeFk <=> 'V'), cc.rgb, NULL) `rgb`,
+ p.code parkingCode,
+ IF (ps.ticketFk, TRUE, FALSE) isAdvanced
FROM vn.ticket t
JOIN vn.ticketCollection tc ON t.id = tc.ticketFk
LEFT JOIN vn.collection c2 ON c2.id = tc.collectionFk
@@ -51751,7 +51879,10 @@ BEGIN
LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk
LEFT JOIN vn.client c ON c.id = t.clientFk
LEFT JOIN vn.worker w ON w.id = c.salesPersonFk
- LEFT JOIN observation ob ON ob.ticketFk = t.id
+ LEFT JOIN observation ob ON ob.ticketFk = t.id
+ LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id
+ LEFT JOIN vn.parking p ON tp.parkingFk = p.id
+ LEFT JOIN vn.packingSiteAdvanced ps ON ps.ticketFk = t.id
WHERE tc.collectionFk = vParamFk
UNION
SELECT sg.ticketFk,
@@ -51760,7 +51891,9 @@ BEGIN
t.warehouseFk,
c.salesPersonFk,
ob.description,
- NULL `rgb`
+ NULL `rgb`,
+ p.code parkingCode,
+ IF (ps.ticketFk, TRUE, FALSE) isAdvanced
FROM vn.sectorCollection sc
JOIN vn.sectorCollectionSaleGroup ss ON ss.sectorCollectionFk = sc.id
JOIN vn.saleGroup sg ON sg.id = ss.saleGroupFk
@@ -51768,7 +51901,10 @@ BEGIN
LEFT JOIN vn.zone z ON z.id = t.zoneFk
LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk
LEFT JOIN observation ob ON ob.ticketFk = t.id
- LEFT JOIN vn.client c ON c.id = t.clientFk
+ LEFT JOIN vn.client c ON c.id = t.clientFk
+ LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id
+ LEFT JOIN vn.parking p ON tp.parkingFk = p.id
+ LEFT JOIN vn.packingSiteAdvanced ps ON ps.ticketFk = t.id
WHERE sc.id = vParamFk
AND t.shipped >= vYesterday
GROUP BY ticketFk;
@@ -54483,7 +54619,6 @@ BEGIN
supplierFk,
dated,
isExcludedFromAvailable,
- isRaid,
commission,
currencyFk,
companyFk,
@@ -54494,7 +54629,6 @@ BEGIN
supplierFk,
dated,
isExcludedFromAvailable,
- isRaid,
commission,
currencyFk,
companyFk,
@@ -54701,7 +54835,7 @@ CREATE DEFINER=`vn`@`localhost` PROCEDURE `entry_getTransfer`(
BEGIN
/**
* Retorna los artículos trasladables a partir de una entrada.
- *
+ *
* @param vSelf Id de entrada
*/
DECLARE vDateShipped DATE;
@@ -54862,7 +54996,7 @@ BEGIN
LEFT JOIN tmp.buyUltimateFromInterval bufi ON bufi.itemFk = i.id
LEFT JOIN buy b3 ON b3.id = bufi.buyFk
WHERE ic.display
- AND NOT e.isRaid
+ AND NOT tr.isRaid
AND (ti.visible OR ti.available)
ORDER BY i.typeFk, i.name, i.id, i.size, i.category, o.name;
@@ -54924,17 +55058,19 @@ BEGIN
*
* @param vSelf Id de entrada
*/
- DECLARE vIsEditable BOOL;
+ DECLARE vIsNotEditable BOOL DEFAULT FALSE;
- SELECT e.isBooked INTO vIsEditable
+ SELECT TRUE INTO vIsNotEditable
FROM `entry` e
- JOIN entryType et ON et.code = e.typeFk
- WHERE NOT et.isInformal
- AND e.id = vSelf;
+ LEFT JOIN entryType et ON et.code = e.typeFk
+ WHERE e.id = vSelf
+ AND e.isBooked
+ AND (e.typeFk IS NULL OR NOT et.isInformal);
- IF vIsEditable AND NOT IFNULL(@isModeInventory, FALSE) THEN
+ IF vIsNotEditable AND NOT IFNULL(@isModeInventory, FALSE) THEN
CALL util.throw(CONCAT('Entry ', vSelf, ' is not editable'));
END IF;
+
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -55255,12 +55391,17 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `entry_splitByShelving`(vShelvingFk VARCHAR(3), vFromEntryFk INT, vToEntryFk INT)
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `entry_splitByShelving`(
+ vShelvingCode VARCHAR(10),
+ vFromEntryFk INT,
+ vToEntryFk INT
+)
BEGIN
/**
- * Divide las compras entre dos entradas de acuerdo con lo ubicado en una matr�cula
+ * Divide las compras entre dos entradas de
+ * acuerdo con lo ubicado en una matricula.
*
- * @param vShelvingFk Identificador de vn.shelving
+ * @param vShelvingCode Código de vn.shelving
* @param vFromEntryFk Entrada origen
* @param vToEntryFk Entrada destino
*/
@@ -55270,16 +55411,17 @@ BEGIN
DECLARE vDone BOOLEAN DEFAULT FALSE;
DECLARE cur CURSOR FOR
- SELECT bb.id buyFk,
+ SELECT bb.id buyFk,
LEAST(bb.stickers, FLOOR(ish.visible / ish.packing)) ishStickers,
bb.stickers buyStickers
FROM itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN (SELECT b.id, b.itemFk, b.stickers
FROM buy b
WHERE b.entryFk = vFromEntryFk
ORDER BY b.stickers DESC
LIMIT 10000000000000000000) bb ON bb.itemFk = ish.itemFk
- WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_general_ci
+ WHERE sh.code = vShelvingCode COLLATE utf8_general_ci
AND NOT ish.isSplit
GROUP BY ish.id;
@@ -55363,9 +55505,10 @@ BEGIN
UPDATE buy SET printedStickers = vIshStickers WHERE id = LAST_INSERT_ID();
END IF;
- UPDATE itemShelving
- SET isSplit = TRUE
- WHERE shelvingFk = vShelvingFk COLLATE utf8_general_ci;
+ UPDATE itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ SET ish.isSplit = TRUE
+ WHERE sh.code = vShelvingCode COLLATE utf8_general_ci;
END LOOP;
CLOSE cur;
END ;;
@@ -55480,7 +55623,7 @@ BEGIN
FROM vn.entry e
JOIN vn.travel t ON t.id = e.travelFk
JOIN vn.warehouse w ON w.id = t.warehouseInFk
- WHERE t.shipped >= util.VN_CURDATE()
+ WHERE t.landed >= util.VN_CURDATE()
AND e.currencyFk = vCurrency
AND NOT e.isBooked;
@@ -55491,7 +55634,7 @@ BEGIN
SET e.commission = vComission;
SELECT `name` INTO vCurrencyName
- FROM currency
+ FROM currency
WHERE id = vCurrency;
CALL entry_recalc();
@@ -55930,12 +56073,12 @@ CREATE DEFINER=`vn`@`localhost` PROCEDURE `expeditionScan_Put`(
vExpeditionFk INT
)
BEGIN
- IF NOT (SELECT TRUE FROM expedition WHERE id = vExpeditionFk LIMIT 1) THEN
- CALL util.throw('Expedition not exists');
+ IF NOT EXISTS (SELECT id FROM expeditionPallet WHERE id = vPalletFk) THEN
+ CALL util.throw('Pallet not exists');
END IF;
- IF NOT (SELECT TRUE FROM expeditionPallet WHERE id = vPalletFk LIMIT 1) THEN
- CALL util.throw('Pallet not exists');
+ IF NOT EXISTS (SELECT id FROM expedition WHERE id = vExpeditionFk) THEN
+ CALL util.throw('Expedition not exists');
END IF;
REPLACE expeditionScan(expeditionFk, palletFk)
@@ -56159,7 +56302,8 @@ BEGIN
a.nickname,
sub2.itemPackingTypeConcat,
est.code,
- es.isScanned
+ es2.isScanned,
+ es2.scanOrder
FROM expedition e
JOIN ticket t ON t.id = e.ticketFk
JOIN ticketState ts ON ts.ticketFk = e.ticketFk
@@ -56181,8 +56325,9 @@ BEGIN
SELECT MAX(id)
FROM expeditionState es
WHERE expeditionFk = e.id)
+ LEFT JOIN expeditionState es2 ON es2.id = es.id
WHERE t.routeFk = vRouteFk AND e.freightItemFk <> FALSE
- ORDER BY r.created, t.priority DESC;
+ ORDER BY r.dated, t.priority DESC;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -56261,6 +56406,114 @@ 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 `expedition_selfConsumptionPackaging` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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=`vn`@`localhost` PROCEDURE `expedition_selfConsumptionPackaging`(
+ vSelf INT,
+ vAction ENUM('add', 'remove')
+)
+proc:BEGIN
+/**
+ * Maneja el consumo de cajas para autoconsumo, permitiendo
+ * añadir o quitar cajas utilizadas según la acción indicada.
+ *
+ * @param vSelf Id de expedición
+ */
+ DECLARE vClientFk INT;
+ DECLARE vAddressFk INT;
+ DECLARE vItemFk INT;
+ DECLARE vItemName VARCHAR(50);
+ DECLARE vWarehouseFk INT;
+ DECLARE vCreated DATE;
+ DECLARE vTicketFk INT;
+ DECLARE vSaleFk INT;
+ DECLARE vQuantity INT;
+
+ IF vAction NOT IN ('add', 'remove') THEN
+ CALL util.throw('Action not supported');
+ END IF;
+
+ SELECT pc.clientSelfConsumptionFk,
+ pc.addressSelfConsumptionFk,
+ i.id,
+ i.name,
+ t.warehouseFk,
+ e.created
+ INTO vClientFk,
+ vAddressFk,
+ vItemFk,
+ vItemName,
+ vWarehouseFk,
+ vCreated
+ FROM expedition e
+ LEFT JOIN packaging p ON p.id = e.packagingFk
+ LEFT JOIN item i ON i.id = p.itemFk
+ JOIN ticket t ON t.id = e.ticketFk
+ JOIN productionConfig pc
+ WHERE e.id = vSelf;
+
+ IF vClientFk IS NULL OR vItemFk IS NULL THEN
+ LEAVE proc;
+ END IF;
+
+ SET vCreated = DATE(vCreated);
+
+ SELECT id INTO vTicketFk
+ FROM ticket
+ WHERE shipped BETWEEN vCreated AND util.dayEnd(vCreated)
+ AND clientFk = vClientFk
+ AND addressFk = vAddressFk
+ AND warehouseFk = vWarehouseFk
+ AND nickname = 'CAJAS AUTOCONSUMO'
+ LIMIT 1;
+
+ IF vTicketFk IS NULL AND vAction = 'add' THEN
+ INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk)
+ VALUES (vClientFk, vWarehouseFk, vCreated, 'CAJAS AUTOCONSUMO', vAddressFk);
+
+ SET vTicketFk = LAST_INSERT_ID();
+ END IF;
+
+ SELECT id, quantity INTO vSaleFk, vQuantity
+ FROM sale
+ WHERE itemFk = vItemFk
+ AND ticketFk = vTicketFk
+ LIMIT 1;
+
+ IF vAction = 'add' THEN
+ IF vSaleFk IS NOT NULL THEN
+ UPDATE sale
+ SET quantity = quantity + 1
+ WHERE id = vSaleFk;
+ ELSE
+ INSERT INTO sale(itemFk, ticketFk, concept, quantity)
+ VALUES (vItemFk, vTicketFk, vItemName, 1);
+ END IF;
+ ELSE
+ IF vSaleFk IS NOT NULL THEN
+ IF vQuantity > 1 THEN
+ UPDATE sale
+ SET quantity = quantity - 1
+ WHERE id = vSaleFk;
+ ELSE
+ DELETE FROM sale WHERE id = vSaleFk;
+ END IF;
+ END IF;
+ END IF;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `expedition_StateGet` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -56819,7 +57072,7 @@ BEGIN
JOIN travel tr ON tr.id = e.travelFk
WHERE tr.warehouseInFk = vWarehouseFk
AND tr.landed BETWEEN vDateLastInventory AND vDateYesterday
- AND NOT isRaid
+ AND NOT tr.isRaid
GROUP BY b.itemFk;
-- Transfers
@@ -56832,7 +57085,7 @@ BEGIN
JOIN travel tr ON tr.id = e.travelFk
WHERE tr.warehouseOutFk = vWarehouseFk
AND tr.shipped BETWEEN vDateLastInventory AND vDateYesterday
- AND NOT isRaid
+ AND NOT tr.isRaid
GROUP BY b.itemFk
) sub
ON DUPLICATE KEY UPDATE quantity = IFNULL(quantity, 0) + sub.quantityOut;
@@ -57850,7 +58103,7 @@ BEGIN
) eWithheld ON TRUE
WHERE tii.taxTypeSageFk IS NOT NULL
AND (tii.taxCode IS NULL OR tii.taxCode NOT IN ('import10', 'import21'))
- GROUP BY tii.PorcentajeIva, tii.expenseFk;
+ GROUP BY tii.CuentaIvaRepercutido;
-- Línea iva inversor sujeto pasivo
INSERT INTO XDiario(
@@ -57915,7 +58168,7 @@ BEGIN
AND NOT(tii.isVies
AND c.nontaxableTransactionTypeFk = tii.transactionTypeSageFk
AND tii.taxCode = 'nonTaxable')
- GROUP BY tii.PorcentajeIva, tii.expenseFk;
+ GROUP BY tii.CuentaIvaRepercutido;
-- Actualización del registro original
UPDATE invoiceIn ii
@@ -59198,7 +59451,11 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemPlacementSupplyAiming`(vShelvingFk VARCHAR(10), quantity INT, vItemFk INT)
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemPlacementSupplyAiming`(
+ vShelvingCode VARCHAR(10),
+ vQuantity INT,
+ vItemFk INT
+)
BEGIN
SELECT ish.itemFk,
@@ -59208,21 +59465,21 @@ BEGIN
ish.itemShelvingFk,
ish.shelving,
ish.stock,
- LEAST(ish.stock,quantity) as total,
+ LEAST(ish.stock,vQuantity) total,
CONCAT(
- CAST(FLOOR(LEAST(ish.stock,quantity) / ish.packing) AS DECIMAL(10,0)),
+ CAST(FLOOR(LEAST(ish.stock, vQuantity) / ish.packing) AS DECIMAL(10,0)),
' x ',
ish.packing,
IF (
- LEAST(ish.stock,quantity) MOD ish.packing,
- CONCAT(' + ',CAST(LEAST(ish.stock,quantity) MOD ish.packing AS DECIMAL(10,0))),
+ LEAST(ish.stock, vQuantity) MOD ish.packing,
+ CONCAT(' + ',CAST(LEAST(ish.stock, vQuantity) MOD ish.packing AS DECIMAL(10,0))),
''
),
' = ',
- LEAST(ish.stock,quantity)
- ) as proposal
- FROM vn.itemShelvingPlacementSupplyStock ish
- WHERE ish.shelving = vShelvingFk COLLATE utf8_general_ci
+ LEAST(ish.stock, vQuantity)
+ ) proposal
+ FROM itemShelvingPlacementSupplyStock ish
+ WHERE ish.shelving = vShelvingCode COLLATE utf8_general_ci
AND ish.itemFk = vItemFk;
END ;;
@@ -59264,7 +59521,9 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemPlacementSupplyGetOrder`(vSector INT )
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemPlacementSupplyGetOrder`(
+ vSectorFk INT
+)
BEGIN
DECLARE vId INT;
@@ -59272,31 +59531,35 @@ BEGIN
DECLARE vNextParkingFk INT;
SELECT sh.parkingFk INTO vLastParkingFk
- FROM vn.itemShelvingPlacementSupply isps
- JOIN vn.itemShelving ish ON ish.id = isps.itemShelvingFk
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ FROM itemShelvingPlacementSupply isps
+ JOIN itemShelving ish ON ish.id = isps.itemShelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
WHERE isps.userFk = getUser()
ORDER BY isps.created DESC
LIMIT 1;
- SET vNextParkingFk = vn.itemShelvingPlacementSupply_ClosestGet(vLastParkingFk);
+ SET vNextParkingFk = itemShelvingPlacementSupply_ClosestGet(vLastParkingFk);
SELECT ipsl.id INTO vId
- FROM vn.itemPlacementSupplyList ipsl
- JOIN vn.itemShelvingPlacementSupplyStock ispss ON ispss.itemFk = ipsl.itemFk
+ FROM itemPlacementSupplyList ipsl
+ JOIN itemShelvingPlacementSupplyStock ispss ON ispss.itemFk = ipsl.itemFk
WHERE ipsl.saldo > 0
AND (ipsl.repoUserFk is NULL OR ipsl.repoUserFk = getUser())
- AND ipsl.sectorFk = vSector
- ORDER BY ipsl.repoUserFk DESC, ipsl.priority DESC, (ispss.parkingFk = vNextParkingFk) DESC, ispss.parking DESC, ipsl.created
+ AND ipsl.sectorFk = vSectorFk
+ ORDER BY ipsl.repoUserFk DESC,
+ ipsl.priority DESC,
+ (ispss.parkingFk = vNextParkingFk) DESC,
+ ispss.parking DESC,
+ ipsl.created
LIMIT 1;
- UPDATE vn.itemPlacementSupply
+ UPDATE itemPlacementSupply
SET repoUserFk = getUser()
WHERE id = vId;
- SELECT * FROM vn.itemPlacementSupplyList
+ SELECT * FROM itemPlacementSupplyList
WHERE id = vId
- AND sectorFk = vSector;
+ AND sectorFk = vSectorFk;
END ;;
DELIMITER ;
@@ -59314,7 +59577,10 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemPlacementSupplyStockGetTargetList`(vItemFk INT,vSectorFk INT)
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemPlacementSupplyStockGetTargetList`(
+ vItemFk INT,
+ vSectorFk INT
+)
BEGIN
/**
* Devuelve la lista de ubicaciones para itemFk en ese sector. Se utiliza en la preparación previa.
@@ -59328,11 +59594,11 @@ BEGIN
SUM(ish.visible) stockTotal,
ish.created,
p.pickingOrder
- FROM vn.itemShelving ish
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
- JOIN vn.parking p ON p.id = sh.parkingFk
- JOIN vn.sector sc ON sc.id = p.sectorFk
- JOIN vn.warehouse w ON w.id = sc.warehouseFk
+ FROM itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ JOIN parking p ON p.id = sh.parkingFk
+ JOIN sector sc ON sc.id = p.sectorFk
+ JOIN warehouse w ON w.id = sc.warehouseFk
WHERE ish.visible > 0
AND ish.itemFk = vItemFk
GROUP BY ish.id
@@ -59501,54 +59767,6 @@ BEGIN
DELETE FROM vn.itemShelving WHERE id = vId;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingLog_get` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb4 */ ;
-/*!50003 SET character_set_results = utf8mb4 */ ;
-/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingLog_get`(vShelvingFk VARCHAR(10) )
-BEGIN
-
-/**
- * Devuelve el log de los item en cada carro
- *
- * @param vShelvingFk Matrícula del carro
- *
- */
-
- SELECT isl.itemShelvingFk,
- isl.created,
- isl.accion,
- isl.itemFk,
- isl.shelvingFk,
- isl.quantity,
- isl.visible,
- isl.available,
- isl.grouping,
- isl.packing,
- isl.stars,
- item.longName,
- item.size,
- item.subName,
- worker.code,
- isl.accion
- FROM item
- JOIN itemShelvingLog isl ON item.id = isl.itemFk
- JOIN worker ON isl.workerFk = worker.id
- WHERE shelvingFk = vShelvingFk OR isl.itemFk = vShelvingFk
- ORDER BY isl.created DESC;
-
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -59586,7 +59804,7 @@ BEGIN
LEFT JOIN (
SELECT itemFk, sum(cast(visible / packing AS DECIMAL(10,0))) AS etiquetas
FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
LEFT JOIN parking pk ON pk.id = sh.parkingFk
WHERE ish.created BETWEEN vFromTimed AND vToTimed
GROUP BY itemFk
@@ -60050,53 +60268,53 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_addByCollection`(
- vCollectionFk INT(11)
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_addByCollection`(
+ vCollectionFk INT(11)
)
-BEGIN
-/**
- * Reserva cantidades con ubicaciones para el contenido de una colección
- *
- * @param vCollectionFk Identificador de collection
- */
- DECLARE vDone BOOL DEFAULT FALSE;
- DECLARE vSaleFk INT;
- DECLARE vSales CURSOR FOR
- WITH sales AS (
- SELECT s.id saleFk, s.quantity, SUM(IFNULL(iss.quantity, 0)) quantityReserved
- FROM vn.ticketCollection tc
- JOIN vn.sale s ON s.ticketFk = tc.ticketFk
- LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id
- WHERE tc.collectionFk = vCollectionFk
- GROUP BY s.id
- HAVING quantity <> quantityReserved
- ), trackedSales AS (
- SELECT sa.saleFk
- FROM sales sa
- JOIN vn.saleTracking st ON st.saleFk = sa.saleFk
- JOIN vn.`state` s ON s.id = st.stateFk
- WHERE st.isChecked
- AND s.`code` IN ('PREVIOUS_PREPARATION', 'OK PREVIOUS', 'OK STOWAWAY')
- GROUP BY sa.saleFk
- ) SELECT s.saleFk
- FROM sales s
- LEFT JOIN trackedSales ts ON ts.saleFk = s.saleFk
- WHERE ts.saleFk IS NULL;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
-
- OPEN vSales;
- l: LOOP
- SET vDone = FALSE;
- FETCH vSales INTO vSaleFk;
-
- IF vDone THEN
- LEAVE l;
- END IF;
-
- CALL itemShelvingSale_addBySale(vSaleFk, NULL);
- END LOOP;
- CLOSE vSales;
+BEGIN
+/**
+ * Reserva cantidades con ubicaciones para el contenido de una colección
+ *
+ * @param vCollectionFk Identificador de collection
+ */
+ DECLARE vDone BOOL DEFAULT FALSE;
+ DECLARE vSaleFk INT;
+ DECLARE vSales CURSOR FOR
+ WITH sales AS (
+ SELECT s.id saleFk, s.quantity, SUM(IFNULL(iss.quantity, 0)) quantityReserved
+ FROM vn.ticketCollection tc
+ JOIN vn.sale s ON s.ticketFk = tc.ticketFk
+ LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id
+ WHERE tc.collectionFk = vCollectionFk
+ GROUP BY s.id
+ HAVING quantity <> quantityReserved
+ ), trackedSales AS (
+ SELECT sa.saleFk
+ FROM sales sa
+ JOIN vn.saleTracking st ON st.saleFk = sa.saleFk
+ JOIN vn.`state` s ON s.id = st.stateFk
+ WHERE st.isChecked
+ AND s.`code` IN ('PREVIOUS_PREPARATION', 'OK PREVIOUS', 'OK STOWAWAY')
+ GROUP BY sa.saleFk
+ ) SELECT s.saleFk
+ FROM sales s
+ LEFT JOIN trackedSales ts ON ts.saleFk = s.saleFk
+ WHERE ts.saleFk IS NULL;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+
+ OPEN vSales;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vSales INTO vSaleFk;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ CALL itemShelvingSale_addBySale(vSaleFk, NULL);
+ END LOOP;
+ CLOSE vSales;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -60141,7 +60359,7 @@ proc: BEGIN
ish.available
FROM sale s
JOIN itemShelving ish ON ish.itemFk = s.itemFk
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector sc ON sc.id = p.sectorFk
JOIN productionConfig pc
@@ -60175,7 +60393,7 @@ proc: BEGIN
FROM sale s
LEFT JOIN itemShelvingSale iss ON iss.saleFk = s.id
LEFT JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
- LEFT JOIN shelving sh ON sh.code = ish.shelvingFk
+ LEFT JOIN shelving sh ON sh.id = ish.shelvingFk
LEFT JOIN parking p ON p.id = sh.parkingFk
WHERE s.id = vSaleFk;
@@ -60437,56 +60655,56 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_doReserve`()
-proc: BEGIN
-/**
- * Genera reservas de la tabla vn.itemShelvingSaleReserve
- */
- DECLARE vDone BOOL;
- DECLARE vSaleFk INT;
- DECLARE vSectorFk INT;
-
- DECLARE vSales CURSOR FOR
- SELECT DISTINCT saleFk, sectorFk FROM tSale;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND
- SET vDone = TRUE;
-
- DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
- BEGIN
- DO RELEASE_LOCK('vn.itemShelvingSale_doReserve');
- ROLLBACK;
- RESIGNAL;
- END;
-
- IF !GET_LOCK('vn.itemShelvingSale_doReserve', 0) THEN
- LEAVE proc;
- END IF;
-
- CREATE OR REPLACE TEMPORARY TABLE tSale
- ENGINE = MEMORY
- SELECT id, saleFk, sectorFk FROM itemShelvingSaleReserve;
-
- OPEN vSales;
-
- myLoop: LOOP
- SET vDone = FALSE;
- FETCH vSales INTO vSaleFk, vSectorFk;
-
- IF vDone THEN
- LEAVE myLoop;
- END IF;
-
- CALL itemShelvingSale_addBySale (vSaleFk, vSectorFk);
- END LOOP;
-
- CLOSE vSales;
-
- DELETE iss FROM itemShelvingSaleReserve iss
- JOIN tSale s ON s.id = iss.id AND s.sectorFk = iss.sectorFk;
-
- DROP TEMPORARY TABLE tSale;
-
- DO RELEASE_LOCK('vn.itemShelvingSale_doReserve');
+proc: BEGIN
+/**
+ * Genera reservas de la tabla vn.itemShelvingSaleReserve
+ */
+ DECLARE vDone BOOL;
+ DECLARE vSaleFk INT;
+ DECLARE vSectorFk INT;
+
+ DECLARE vSales CURSOR FOR
+ SELECT DISTINCT saleFk, sectorFk FROM tSale;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND
+ SET vDone = TRUE;
+
+ DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
+ BEGIN
+ DO RELEASE_LOCK('vn.itemShelvingSale_doReserve');
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ IF !GET_LOCK('vn.itemShelvingSale_doReserve', 0) THEN
+ LEAVE proc;
+ END IF;
+
+ CREATE OR REPLACE TEMPORARY TABLE tSale
+ ENGINE = MEMORY
+ SELECT id, saleFk, sectorFk FROM itemShelvingSaleReserve;
+
+ OPEN vSales;
+
+ myLoop: LOOP
+ SET vDone = FALSE;
+ FETCH vSales INTO vSaleFk, vSectorFk;
+
+ IF vDone THEN
+ LEAVE myLoop;
+ END IF;
+
+ CALL itemShelvingSale_addBySale (vSaleFk, vSectorFk);
+ END LOOP;
+
+ CLOSE vSales;
+
+ DELETE iss FROM itemShelvingSaleReserve iss
+ JOIN tSale s ON s.id = iss.id AND s.sectorFk = iss.sectorFk;
+
+ DROP TEMPORARY TABLE tSale;
+
+ DO RELEASE_LOCK('vn.itemShelvingSale_doReserve');
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -60571,37 +60789,37 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_setPicked`(
- vSaleGroupFk INT(10)
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_setPicked`(
+ vSaleGroupFk INT(10)
)
-BEGIN
-/**
- * Gestiona la reserva de un vn.saleGroup actualizando vn.itemShelvingSale.isPicked
- * y cambiando el estado de la vn.sale
- *
- * @param vSaleGroupFk Id saleGroupFk
- */
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- IF NOT (SELECT COUNT(*) FROM saleGroup WHERE id = vSaleGroupFk) THEN
- CALL util.throw('Sale group not exists');
- END IF;
-
- START TRANSACTION;
-
- UPDATE itemShelvingSale iss
- JOIN sale s ON s.id = iss.saleFk
- JOIN saleGroupDetail sg ON sg.saleFk = s.id
- SET iss.isPicked = TRUE
- WHERE sg.saleGroupFk = vSaleGroupFk;
-
- CALL saleTracking_addPreparedSaleGroup(vSaleGroupFk);
-
- COMMIT;
+BEGIN
+/**
+ * Gestiona la reserva de un vn.saleGroup actualizando vn.itemShelvingSale.isPicked
+ * y cambiando el estado de la vn.sale
+ *
+ * @param vSaleGroupFk Id saleGroupFk
+ */
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ IF NOT (SELECT COUNT(*) FROM saleGroup WHERE id = vSaleGroupFk) THEN
+ CALL util.throw('Sale group not exists');
+ END IF;
+
+ START TRANSACTION;
+
+ UPDATE itemShelvingSale iss
+ JOIN sale s ON s.id = iss.saleFk
+ JOIN saleGroupDetail sg ON sg.saleFk = s.id
+ SET iss.isPicked = TRUE
+ WHERE sg.saleGroupFk = vSaleGroupFk;
+
+ CALL saleTracking_addPreparedSaleGroup(vSaleGroupFk);
+
+ COMMIT;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -60618,114 +60836,124 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_setQuantity`(
- vItemShelvingSaleFk INT(10),
- vQuantity DECIMAL(10,0),
- vIsItemShelvingSaleEmpty BOOLEAN,
- vSectorFk INT
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_setQuantity`(
+ vItemShelvingSaleFk INT(10),
+ vQuantity DECIMAL(10,0),
+ vIsItemShelvingSaleEmpty BOOLEAN,
+ vSectorFk INT,
+ vShelvingFk VARCHAR(10)
)
-BEGIN
-/**
- * Gestiona la reserva de un itemShelvingFk, actualizando isPicked y quantity
- * en itemShelvingSale y sale.isPicked en caso necesario.
- * Si la reserva de la ubicación es fallida, se regulariza la situación
- *
- * @param vItemShelvingSaleFk Id itemShelvingSaleFK
- * @param vQuantity Cantidad real que se ha cogido de la ubicación
- * @param vIsItemShelvingSaleEmpty determina si la ubicación itemShelvingSale se ha
- * quedado vacio tras el movimiento
- * @param vSectorFk Id del sector
- */
- DECLARE vSaleFk INT;
- DECLARE vItemShelvingFk INT;
- DECLARE vReservedQuantity INT;
- DECLARE vRemainingQuantity INT;
- DECLARE vItemFk INT;
- DECLARE vTotalQuantity INT;
- DECLARE vStateCode VARCHAR(45);
-
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- IF vQuantity > vReservedQuantity
- OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
- OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
- CALL util.throw('The quantity cannot be different from the reserved');
- END IF;
-
- IF (SELECT isPicked FROM itemShelvingSale WHERE id = vItemShelvingSaleFk) THEN
- CALL util.throw('Reservation completed');
- END IF;
-
- SELECT s.itemFk,
- iss.saleFk,
- iss.itemShelvingFk,
- SUM(IFNULL(iss.quantity,0)),
- IF(sgd.id, 'PREVIOUS_PREPARATION', 'PREPARED')
- INTO vItemFk,
- vSaleFk,
- vItemShelvingFk,
- vReservedQuantity,
- vStateCode
- FROM itemShelvingSale iss
- JOIN sale s ON s.id = iss.saleFk
- LEFT JOIN vn.saleGroupDetail sgd ON sgd.saleFk = iss.saleFk
- WHERE iss.id = vItemShelvingSaleFk
- AND NOT iss.isPicked;
-
- IF vQuantity > vReservedQuantity
- OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
- OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
- CALL util.throw('The quantity cannot be different from the reserved');
- END IF;
-
- START TRANSACTION;
-
- UPDATE itemShelvingSale
- SET isPicked = TRUE,
- quantity = vQuantity
- WHERE id = vItemShelvingSaleFk;
-
- SELECT id INTO vItemShelvingFk
- FROM itemShelving
- WHERE id = vItemShelvingFk
- FOR UPDATE;
-
- UPDATE itemShelving
- SET visible = GREATEST(0, visible - vQuantity)
- WHERE id = vItemShelvingFk;
-
- SELECT SUM(IF(isPicked OR id = vItemShelvingSaleFk, 0, quantity)), SUM(quantity)
- INTO vRemainingQuantity, vTotalQuantity
- FROM itemShelvingSale
- WHERE saleFk = vSaleFk;
-
- IF vRemainingQuantity = 0 AND NOT vIsItemShelvingSaleEmpty THEN
- CALL saleTracking_new(
- vSaleFk,
- TRUE,
- vTotalQuantity,
- `account`.`myUser_getId`(),
- NULL,
- vStateCode,
- TRUE);
-
- UPDATE sale s
- SET s.quantity = vTotalQuantity,
- isPicked = TRUE
- WHERE s.id = vSaleFk;
- END IF;
-
- COMMIT;
-
- IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN
- INSERT INTO itemShelvingSaleReserve (saleFk, sectorFk)
- SELECT vSaleFk, vSectorFk;
- CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk);
- END IF;
+BEGIN
+/**
+ * Gestiona la reserva de un itemShelvingFk, actualizando isPicked y quantity
+ * en itemShelvingSale y sale.isPicked en caso necesario.
+ * Si la reserva de la ubicación es fallida, se regulariza la situación
+ *
+ * @param vItemShelvingSaleFk Id itemShelvingSaleFK
+ * @param vQuantity Cantidad real que se ha cogido de la ubicación
+ * @param vIsItemShelvingSaleEmpty determina si la ubicación itemShelvingSale se ha
+ * quedado vacio tras el movimiento
+ * @param vSectorFk Id del sector
+ */
+ DECLARE vSaleFk INT;
+ DECLARE vItemShelvingFk INT;
+ DECLARE vReservedQuantity INT;
+ DECLARE vRemainingQuantity INT;
+ DECLARE vItemFk INT;
+ DECLARE vTotalQuantity INT;
+ DECLARE vStateCode VARCHAR(45);
+ DECLARE vCurrentShelvingFk VARCHAR(10);
+
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ IF vQuantity > vReservedQuantity
+ OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
+ OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
+ CALL util.throw('The quantity cannot be different from the reserved');
+ END IF;
+
+ IF (SELECT isPicked FROM itemShelvingSale WHERE id = vItemShelvingSaleFk) THEN
+ CALL util.throw('Reservation completed');
+ END IF;
+
+ SELECT s.itemFk,
+ iss.saleFk,
+ iss.itemShelvingFk,
+ SUM(IFNULL(iss.quantity,0)),
+ IF(sgd.id, 'PREVIOUS_PREPARATION', 'PREPARED'),
+ sh.code
+ INTO vItemFk,
+ vSaleFk,
+ vItemShelvingFk,
+ vReservedQuantity,
+ vStateCode,
+ vCurrentShelvingFk
+ FROM itemShelvingSale iss
+ JOIN sale s ON s.id = iss.saleFk
+ JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
+ LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = iss.saleFk
+ LEFT JOIN shelving sh ON sh.id = ish.shelvingFk
+ WHERE iss.id = vItemShelvingSaleFk
+ AND NOT iss.isPicked;
+
+ IF NOT (vCurrentShelvingFk <=> vShelvingFk) THEN
+ CALL util.throw('The shelving can not be different from the shelving reserved');
+ END IF;
+
+ IF vQuantity > vReservedQuantity
+ OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
+ OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
+ CALL util.throw('The quantity cannot be different from the reserved');
+ END IF;
+
+ START TRANSACTION;
+
+ UPDATE itemShelvingSale
+ SET isPicked = TRUE,
+ quantity = vQuantity
+ WHERE id = vItemShelvingSaleFk;
+
+ SELECT id INTO vItemShelvingFk
+ FROM itemShelving
+ WHERE id = vItemShelvingFk
+ FOR UPDATE;
+
+ UPDATE itemShelving
+ SET visible = GREATEST(0, visible - vQuantity)
+ WHERE id = vItemShelvingFk;
+
+ SELECT SUM(IF(isPicked OR id = vItemShelvingSaleFk, 0, quantity)), SUM(quantity)
+ INTO vRemainingQuantity, vTotalQuantity
+ FROM itemShelvingSale
+ WHERE saleFk = vSaleFk;
+
+ IF vRemainingQuantity = 0 AND NOT vIsItemShelvingSaleEmpty THEN
+ CALL saleTracking_new(
+ vSaleFk,
+ TRUE,
+ vTotalQuantity,
+ `account`.`myUser_getId`(),
+ NULL,
+ vStateCode,
+ TRUE);
+
+ UPDATE sale s
+ SET s.quantity = vTotalQuantity,
+ isPicked = TRUE
+ WHERE s.id = vSaleFk;
+ END IF;
+
+ COMMIT;
+
+ IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN
+ INSERT INTO itemShelvingSaleReserve (saleFk, sectorFk)
+ SELECT vSaleFk, vSectorFk;
+ CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk);
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -60742,63 +60970,63 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_unpicked`(
- vSelf INT(11)
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingSale_unpicked`(
+ vSelf INT(11)
)
-BEGIN
-/**
- * Desmarca una línea que ya estaba sacada, devolviendo la cantidad al itemShelving
- *
- * @param vSelf Identificador del itemShelvingSale
- */
- DECLARE vSaleFk INT;
- DECLARE vReservedQuantity INT;
- DECLARE vIsSaleGroup BOOL;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- IF (SELECT NOT isPicked FROM itemShelvingSale WHERE id = vSelf) THEN
- CALL util.throw('Reserva no completada');
- END IF;
-
- SELECT ish.saleFk, ish.quantity, IF(sg.id, TRUE, FALSE)
- INTO vSaleFk, vReservedQuantity, vIsSaleGroup
- FROM itemShelvingSale ish
- LEFT JOIN saleGroupDetail sg ON sg.saleFk = ish.saleFk
- WHERE ish.id = vSelf;
-
- /*IF vIsSaleGroup THEN
- CALL util.throw('Can not unpicked a sale group');
- END IF;*/
-
- START TRANSACTION;
-
- UPDATE itemShelvingSale
- SET isPicked = FALSE
- WHERE id = vSelf;
-
- UPDATE sale s
- JOIN itemShelvingSale ish ON ish.saleFk = s.id
- SET s.isPicked = FALSE
- WHERE ish.id = vSelf;
-
- UPDATE itemShelvingSale iss
- JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
- SET ish.visible = ish.visible + iss.quantity
- WHERE iss.id = vSelf;
-
- CALL saleTracking_new(
- vSaleFk,
- FALSE,
- vReservedQuantity,
- `account`.`myUser_getId`(),
- NULL,
- 'ON_PREPARATION',
- TRUE);
- COMMIT;
+BEGIN
+/**
+ * Desmarca una línea que ya estaba sacada, devolviendo la cantidad al itemShelving
+ *
+ * @param vSelf Identificador del itemShelvingSale
+ */
+ DECLARE vSaleFk INT;
+ DECLARE vReservedQuantity INT;
+ DECLARE vIsSaleGroup BOOL;
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ IF (SELECT NOT isPicked FROM itemShelvingSale WHERE id = vSelf) THEN
+ CALL util.throw('Reserva no completada');
+ END IF;
+
+ SELECT ish.saleFk, ish.quantity, IF(sg.id, TRUE, FALSE)
+ INTO vSaleFk, vReservedQuantity, vIsSaleGroup
+ FROM itemShelvingSale ish
+ LEFT JOIN saleGroupDetail sg ON sg.saleFk = ish.saleFk
+ WHERE ish.id = vSelf;
+
+ /*IF vIsSaleGroup THEN
+ CALL util.throw('Can not unpicked a sale group');
+ END IF;*/
+
+ START TRANSACTION;
+
+ UPDATE itemShelvingSale
+ SET isPicked = FALSE
+ WHERE id = vSelf;
+
+ UPDATE sale s
+ JOIN itemShelvingSale ish ON ish.saleFk = s.id
+ SET s.isPicked = FALSE
+ WHERE ish.id = vSelf;
+
+ UPDATE itemShelvingSale iss
+ JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
+ SET ish.visible = ish.visible + iss.quantity
+ WHERE iss.id = vSelf;
+
+ CALL saleTracking_new(
+ vSaleFk,
+ FALSE,
+ vReservedQuantity,
+ `account`.`myUser_getId`(),
+ NULL,
+ 'ON_PREPARATION',
+ TRUE);
+ COMMIT;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -60816,7 +61044,7 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_add`(
- vShelvingFk VARCHAR(8),
+ vShelvingCode VARCHAR(10),
vBarcode VARCHAR(22),
vQuantity INT,
vPackagingFk VARCHAR(10),
@@ -60828,7 +61056,7 @@ BEGIN
/**
* Añade registro o lo actualiza si ya existe.
*
- * @param vShelvingFk matrícula del carro
+ * @param vShelvingCode matrícula del carro
* @param vBarcode el id del registro
* @param vQuantity indica la cantidad del producto
* @param vPackagingFk el packaging del producto en itemShelving, NULL para coger el de la ultima compra
@@ -60839,10 +61067,15 @@ BEGIN
**/
DECLARE vItemFk INT;
DECLARE vBuyFk INT;
+ DECLARE vShelvingFk INT;
SELECT id INTO vBuyFk
FROM buy WHERE id = vBarcode;
+ SELECT id INTO vShelvingFk
+ FROM shelving
+ WHERE code COLLATE utf8_unicode_ci = vShelvingCode;
+
SELECT barcodeToItem(vBarcode) INTO vItemFk;
IF vBuyFk IS NULL THEN
@@ -60856,7 +61089,7 @@ BEGIN
END IF;
IF (SELECT COUNT(*) FROM itemShelving
- WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
+ WHERE shelvingFk = vShelvingFk
AND itemFk = vItemFk
AND packing = vPacking
AND buyFk = vBuyFk) THEN
@@ -60864,7 +61097,9 @@ BEGIN
UPDATE itemShelving
SET visible = visible + vQuantity,
available = available + vQuantity
- WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking;
+ WHERE shelvingFk = vShelvingFk
+ AND itemFk = vItemFk
+ AND packing = vPacking;
ELSE
@@ -60902,31 +61137,40 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_addByClaim`(vClaimFk INT, vShelvingFk VARCHAR(3))
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_addByClaim`(
+ vClaimFk INT,
+ vShelvingCode VARCHAR(10)
+)
BEGIN
/**
* Insert items of claim into itemShelving.
*
* @param vClaimFk The claim
- * @param vShelvingFk The shelving
+ * @param vShelvingCode The shelving code
* @table tmp.buyUltimate
*/
DECLARE vWarehouseFk INT;
+ DECLARE vShelvingFk INT;
SELECT t.warehouseFk INTO vWarehouseFk
FROM claim c
JOIN ticket t ON t.id = c.ticketFk
WHERE c.id = vClaimFk;
+ SELECT id INTO vShelvingFk
+ FROM shelving
+ WHERE code COLLATE utf8_unicode_ci = vShelvingCode;
+
CALL buy_getUltimate(NULL, vWarehouseFk, util.VN_CURDATE());
INSERT INTO itemShelving (itemFk, shelvingFk, packing, `grouping`, visible)
- SELECT s.itemFk, vShelvingFk, b.packing, b.`grouping`, cb.quantity AS visible
+ SELECT s.itemFk, vShelvingFk, b.packing, b.`grouping`, cb.quantity visible
FROM claim c
JOIN claimBeginning cb ON c.id = cb.claimFk
JOIN sale s ON s.id = cb.saleFk
JOIN ticket t ON t.id = s.ticketFk
- JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk AND bu.warehouseFk = t.warehouseFk
+ JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
+ AND bu.warehouseFk = t.warehouseFk
JOIN buy b ON b.id = bu.buyFk
WHERE c.id = vClaimFk;
END ;;
@@ -60946,7 +61190,7 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_addList`(
- vShelvingFk VARCHAR(3),
+ vShelvingCode VARCHAR(10),
vList TEXT,
vIsChecking BOOL,
vWarehouseFk INT
@@ -60959,7 +61203,7 @@ BEGIN
* Cuando es TRUE sólo inserta los elementos de la colección que no están ya en
* ese shelving, actualizando los valores del campo itemShelving.isChecked
*
- * @param vShelvingFk Identificador de shelving
+ * @param vShelvingCode Código de shelving
* @param vList JSON array con esta estructura: '[value1, value2, ...]'
* @param vIsChecking Define si hay que añadir o comprobar los items
* @param vWarehouseFk Identificador de warehouse
@@ -60970,6 +61214,11 @@ BEGIN
DECLARE vPath VARCHAR(6);
DECLARE vItemFk INT;
DECLARE vIsChecked BOOL;
+ DECLARE vShelvingFk INT;
+
+ SELECT id INTO vShelvingFk
+ FROM shelving
+ WHERE code COLLATE utf8_unicode_ci = vShelvingCode;
WHILE vCounter < vListLength DO
SET vPath = CONCAT('$[', vCounter, ']');
@@ -60980,17 +61229,17 @@ BEGIN
SELECT IF(COUNT(*), TRUE, FALSE) INTO vIsChecked
FROM itemShelving
- WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
+ WHERE shelvingFk = vShelvingFk
AND itemFk = vItemFk;
END IF;
IF NOT vIsChecking OR NOT vIsChecked THEN
- CALL itemShelving_add(vShelvingFk, vBarcode, 1, NULL, NULL, NULL, vWarehouseFk);
+ CALL itemShelving_add(vShelvingCode, vBarcode, 1, NULL, NULL, NULL, vWarehouseFk);
END IF;
UPDATE itemShelving
SET isChecked = vIsChecked
- WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
+ WHERE shelvingFk = vShelvingFk
AND itemFk = vItemFk
AND isChecked IS NULL;
@@ -61111,17 +61360,20 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_get`(IN vSelf VARCHAR(8))
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_get`(
+ vShelvingCode VARCHAR(10)
+)
BEGIN
/**
-* Lista artículos de itemshelving
+* Lista artículos de itemShelving.
*
-* @param vSelf matrícula del carro
+* @param vShelvingCode Matrícula del carro
**/
SELECT ish.itemFk item,
- IFNULL(i.longName, CONCAT(i.name, ' ', i.size)) description,
+ i.name,
+ i.longName,
+ i.size,
ish.visible,
- CEIL(ish.visible/ish.packing) stickers,
ish.packing,
ish.grouping,
p.code,
@@ -61129,13 +61381,15 @@ BEGIN
s.priority,
ish.isChecked,
ic.url,
- ish.available
+ ish.available,
+ ish.buyFk,
+ ish.shelvingFk
FROM itemShelving ish
JOIN item i ON i.id = ish.itemFk
- JOIN shelving s ON vSelf = s.code COLLATE utf8_unicode_ci
- LEFT JOIN parking p ON s.parkingFk = p.id
+ JOIN shelving s ON s.id = ish.shelvingFk
+ LEFT JOIN parking p ON p.id = s.parkingFk
JOIN hedera.imageConfig ic
- WHERE ish.shelvingFk COLLATE utf8_unicode_ci = vSelf;
+ WHERE s.code COLLATE utf8_unicode_ci = vShelvingCode;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -61152,23 +61406,33 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_getAlternatives`(vShelvingFk VARCHAR(10))
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_getAlternatives`(
+ vShelvingCode VARCHAR(10)
+)
BEGIN
/**
- * Devuelve un listado de posibles ubicaciones alternativas a ubicar los item de la matricula
- * del carro que se le ha pasado.
+ * Devuelve un listado de posibles ubicaciones alternativas a ubicar
+ * los item de la matricula del carro que se le ha pasado.
*
- * @param vShelvingFk matricula del carro
+ * @param vShelvingCode Matricula del carro
*/
- SELECT is2.id,is2.shelvingFk , p.code, is2.itemFk , is2.visible, p.pickingOrder
+ DECLARE vShelvingFk INT;
+
+ SELECT id INTO vShelvingFk
+ FROM shelving
+ WHERE code COLLATE utf8_unicode_ci = vShelvingCode;
+
+ SELECT is2.id,is2.shelvingFk, p.code, is2.itemFk , is2.visible, p.pickingOrder
FROM itemShelving is2
- JOIN shelving sh ON sh.code = is2.shelvingFk
+ JOIN shelving sh ON sh.id = is2.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector s ON s.id = p.sectorFk
- LEFT JOIN operator o ON o.sectorFk = s.id AND o.workerFk = account.myUser_getId()
+ LEFT JOIN operator o ON o.sectorFk = s.id
+ AND o.workerFk = account.myUser_getId()
JOIN warehouse wh ON wh.id = s.warehouseFk
- JOIN itemShelving is3 ON is3.itemFk = is2.itemFk AND is3.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci
- WHERE is2.shelvingFk <> vShelvingFk COLLATE utf8_unicode_ci
+ JOIN itemShelving is3 ON is3.itemFk = is2.itemFk
+ AND is3.shelvingFk = vShelvingFk
+ WHERE is2.shelvingFk <> vShelvingFk
GROUP BY is2.id
ORDER BY p.pickingOrder DESC;
END ;;
@@ -61204,7 +61468,7 @@ BEGIN
ish.itemFk itemFk,
sh.priority
FROM vn.itemShelving ish
- JOIN vn.shelving sh ON sh.`code` = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking pk ON pk.id = sh.parkingFk
WHERE ish.itemFk = vItemFk
ORDER BY sh.priority DESC, created ASC;
@@ -61226,14 +61490,14 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_getItemDetails`(
vBarcodeItem INT,
- vShelvingFK VARCHAR(10)
+ vShelvingCode 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
+ * @param vShelvingCode Ubicación actual del artículo
*/
DECLARE vIsItem BOOL;
DECLARE vBuyFk INT;
@@ -61263,19 +61527,20 @@ BEGIN
WITH visible AS(
SELECT itemFk,
IFNULL(buyingValue, 0) +
- IFNULL(freightValue, 0) +
- IFNULL(comissionValue, 0) +
- IFNULL(packageValue, 0) itemCost
- FROM vn.buy b
+ IFNULL(freightValue, 0) +
+ IFNULL(comissionValue, 0) +
+ IFNULL(packageValue, 0) itemCost
+ FROM vn.buy b
WHERE b.id = vBuyFk
) SELECT v.itemFk,
- vShelvingFK,
+ vShelvingCode,
v.itemCost,
SUM(ish.visible) visible
FROM vn.itemShelving ish
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFK
JOIN visible v
- WHERE ish.shelvingFK = vShelvingFK COLLATE utf8mb3_general_ci
- AND ish.itemFk = v.itemFk;
+ WHERE sh.code = vShelvingCode COLLATE utf8mb3_general_ci
+ AND ish.itemFk = v.itemFk;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -61292,168 +61557,174 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_getSaleDate`(vShelvingFk VARCHAR(3))
-BEGIN
-
- /* Devuelve la mínima fecha en que se necesita cada producto en esa matrícula.
- *
- * @param vShelvingFk Matrícula del carro o pallet
- */
-
- DECLARE vWarehouseFk INT;
- DECLARE vStockScopeDays INT;
-
- SELECT s.warehouseFk, stockScopeDays
- INTO vWarehouseFk, vStockScopeDays
- FROM sector s
- JOIN operator o ON s.id = o.sectorFk
- JOIN productionConfig pc
- WHERE o.workerFk = account.myUser_getId();
-
- IF vWarehouseFk IS NULL
- THEN CALL util.throw('WarehouseFk not setted');
- END IF;
-
- IF vStockScopeDays IS NULL
- THEN CALL util.throw('StockScopeDays not setted');
- END IF;
-
- CREATE OR REPLACE TEMPORARY TABLE tmp.tItems
- (PRIMARY KEY (itemFk))
- ENGINE = MEMORY
- SELECT itemFk, SUM(visible) visible
- FROM itemShelving
- WHERE shelvingFk = vShelvingFk COLLATE utf8_unicode_ci
- GROUP BY itemFk;
-
- CREATE OR REPLACE TEMPORARY TABLE tmp.tStockByDay
- (INDEX (itemFk, dated))
- ENGINE = MEMORY
- SELECT dated,
- SUM(t3.amount) OVER (PARTITION BY t3.itemFk ORDER BY dated) stock,
- t3.itemFk
- FROM (
- SELECT t.itemFk, dated, SUM(amount) amount
- FROM (
- SELECT t2.itemFk, t2.amount, t2.dated
- FROM (
- SELECT item_id itemFk, amount, util.VN_CURDATE() dated
- FROM cache.stock s
- JOIN tmp.tItems i ON i.itemFk = s.item_id
- WHERE s.warehouse_id = vWarehouseFk
- UNION ALL
- SELECT ish.itemFk, - SUM(ish.visible), util.VN_CURDATE()
- FROM itemShelving ish
- JOIN tmp.tItems i ON i.itemFk = ish.itemFk
- JOIN shelving sh ON sh.code = ish.shelvingFk
- JOIN parking p ON sh.parkingFk = p.id
- JOIN sector s ON s.id = p.sectorFk
- WHERE s.isReserve
- GROUP BY ish.itemFk
- UNION ALL
- SELECT iei.itemFk, SUM(quantity), landed
- FROM itemEntryIn iei
- JOIN tmp.tItems i ON i.itemFk = iei.itemFk
- WHERE iei.landed BETWEEN util.VN_CURDATE() AND util.VN_CURDATE() + INTERVAL vStockScopeDays DAY
- AND iei.warehouseInFk = vWarehouseFk
- AND NOT isVirtualStock
- GROUP BY iei.itemFk, iei.landed
- UNION ALL
- SELECT ieo.itemFk, SUM(quantity), shipped
- FROM itemEntryOut ieo
- JOIN tmp.tItems i ON i.itemFk = ieo.itemFk
- WHERE ieo.shipped BETWEEN util.VN_CURDATE() AND util.VN_CURDATE() + INTERVAL vStockScopeDays DAY
- AND ieo.warehouseOutFk = vWarehouseFk
- GROUP BY ieo.itemFk, ieo.shipped
- UNION ALL
- SELECT i.itemFk, SUM(ito.quantity), DATE(ito.shipped)
- FROM itemTicketOut ito
- JOIN tmp.tItems i ON i.itemFk = ito.itemFk
- WHERE ito.shipped BETWEEN util.VN_CURDATE() AND util.VN_CURDATE() + INTERVAL vStockScopeDays DAY
- AND ito.warehouseFk = vWarehouseFk
- GROUP BY ito.itemFk, ito.shipped
- ) t2
- JOIN tmp.tItems i ON i.itemFk = t2.itemFk)t
- GROUP BY t.itemFk, dated
- ) t3;
-
- -- Se restan las entradas de hoy
- UPDATE tmp.tStockByDay sbd
- JOIN (SELECT iei.itemFk, SUM(quantity) todayEntry
- FROM itemEntryIn iei
- JOIN tmp.tItems i ON i.itemFk = iei.itemFk
- WHERE iei.landed = util.VN_CURDATE()
- AND iei.warehouseInFk = vWarehouseFk
- AND NOT iei.isVirtualStock) sub ON sub.itemFk = sbd.itemFk
- SET sbd.stock = sbd.stock - sub.todayEntry
- WHERE sbd.dated = util.VN_CURDATE();
-
- -- Se añaden las lineas de venta servidas
- UPDATE tmp.tStockByDay sbd
- JOIN (SELECT s.itemFK, SUM(quantity) amount
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- WHERE t.warehouseFk = vWarehouseFk
- AND t.shipped BETWEEN util.VN_CURDATE() AND util.midnight()
- AND s.isPicked
- GROUP BY s.itemFk) sub ON sub.itemFk = sbd.itemFk
- SET sbd.stock = sbd.stock + sub.amount;
-
- -- Se añaden los items ubicados hoy
- UPDATE tmp.tStockByDay sbd
- JOIN (SELECT ish.itemFK, SUM(ish.visible) amount
- FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
- JOIN parking p ON p.id = sh.parkingFk
- JOIN sector s ON s.id = p.sectorFk
- WHERE s.warehouseFk = vWarehouseFk
- AND NOT s.isReserve
- AND ish.created BETWEEN util.VN_CURDATE() AND util.midnight()
- GROUP BY ish.itemFk) sub ON sub.itemFk = sbd.itemFk
- SET sbd.stock = sbd.stock + sub.amount;
-
- SELECT ts.itemFk,
- i.longName,
- IF(ts.stock<=0, ts.dated, NULL) dated,
- ts.stock,
- sub4.visible,
- sub4.shelvingFk
- FROM(
- SELECT IFNULL(sub2.minDated, sub.minDated) dated,
- IFNULL(sub2.itemFk, sub.itemFk) itemFk
- FROM(SELECT sbd.itemFk,
- MIN(dated) minDated,
- sbd.stock
- FROM tmp.tItems ti
- LEFT JOIN tmp.tStockByDay sbd ON sbd.itemFk = ti.itemFk
- GROUP BY itemFk)sub
- LEFT JOIN (
- SELECT sbd.itemFk,
- MIN(dated) minDated,
- sbd.stock
- FROM tmp.tItems ti
- LEFT JOIN tmp.tStockByDay sbd ON sbd.itemFk = ti.itemFk
- WHERE sbd.stock <= 0
- GROUP BY itemFk)sub2 ON sub2.itemFk =sub.itemFk
- WHERE sub2.itemFk IS NOT NULL
- OR (sub2.itemFk IS NULL AND sub.itemFk IS NOT NULL)) sub3
- LEFT JOIN tmp.tStockByDay ts ON ts.itemFk = sub3.itemFk AND ts.dated = sub3.dated
- JOIN (SELECT ish.itemFk,
- ish.visible,
- p.sectorFk,
- ish.shelvingFk
- FROM itemShelving ish
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
- LEFT JOIN parking p ON p.id = parkingFk
- LEFT JOIN vn.sector s ON s.id = p.sectorFk
- WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci
- ) sub4 ON sub4.itemFk = ts.itemFk
- LEFT JOIN sector s ON s.id = sub4.sectorFk
- LEFT JOIN item i ON i.id = ts.itemFk
- WHERE NOT s.isReserve;
-
- DROP TEMPORARY TABLE tmp.tStockByDay, tmp.tItems;
-
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_getSaleDate`(
+ vShelvingCode VARCHAR(10)
+)
+BEGIN
+/**
+ * Devuelve la mínima fecha en que se necesita cada producto en esa matrícula.
+ *
+ * @param vShelvingCode Matrícula del carro o pallet
+ */
+ DECLARE vWarehouseFk INT;
+ DECLARE vStockScopeDays INT;
+ DECLARE vShelvingFk INT;
+
+ SELECT id INTO vShelvingFk
+ FROM shelving
+ WHERE code COLLATE utf8_unicode_ci = vShelvingCode;
+
+ SELECT s.warehouseFk, stockScopeDays
+ INTO vWarehouseFk, vStockScopeDays
+ FROM sector s
+ JOIN operator o ON s.id = o.sectorFk
+ JOIN productionConfig pc
+ WHERE o.workerFk = account.myUser_getId();
+
+ IF vWarehouseFk IS NULL
+ THEN CALL util.throw('WarehouseFk not setted');
+ END IF;
+
+ IF vStockScopeDays IS NULL
+ THEN CALL util.throw('StockScopeDays not setted');
+ END IF;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.tItems
+ (PRIMARY KEY (itemFk))
+ ENGINE = MEMORY
+ SELECT itemFk, SUM(visible) visible
+ FROM itemShelving
+ WHERE shelvingFk = vShelvingFk
+ GROUP BY itemFk;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.tStockByDay
+ (INDEX (itemFk, dated))
+ ENGINE = MEMORY
+ SELECT dated,
+ SUM(t3.amount) OVER (PARTITION BY t3.itemFk ORDER BY dated) stock,
+ t3.itemFk
+ FROM (
+ SELECT t.itemFk, dated, SUM(amount) amount
+ FROM (
+ SELECT t2.itemFk, t2.amount, t2.dated
+ FROM (
+ SELECT item_id itemFk, amount, util.VN_CURDATE() dated
+ FROM cache.stock s
+ JOIN tmp.tItems i ON i.itemFk = s.item_id
+ WHERE s.warehouse_id = vWarehouseFk
+ UNION ALL
+ SELECT ish.itemFk, - SUM(ish.visible), util.VN_CURDATE()
+ FROM itemShelving ish
+ JOIN tmp.tItems i ON i.itemFk = ish.itemFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ JOIN parking p ON sh.parkingFk = p.id
+ JOIN sector s ON s.id = p.sectorFk
+ WHERE s.isReserve
+ GROUP BY ish.itemFk
+ UNION ALL
+ SELECT iei.itemFk, SUM(quantity), landed
+ FROM itemEntryIn iei
+ JOIN tmp.tItems i ON i.itemFk = iei.itemFk
+ WHERE iei.landed BETWEEN util.VN_CURDATE() AND util.VN_CURDATE() + INTERVAL vStockScopeDays DAY
+ AND iei.warehouseInFk = vWarehouseFk
+ AND NOT isVirtualStock
+ GROUP BY iei.itemFk, iei.landed
+ UNION ALL
+ SELECT ieo.itemFk, SUM(quantity), shipped
+ FROM itemEntryOut ieo
+ JOIN tmp.tItems i ON i.itemFk = ieo.itemFk
+ WHERE ieo.shipped BETWEEN util.VN_CURDATE() AND util.VN_CURDATE() + INTERVAL vStockScopeDays DAY
+ AND ieo.warehouseOutFk = vWarehouseFk
+ GROUP BY ieo.itemFk, ieo.shipped
+ UNION ALL
+ SELECT i.itemFk, SUM(ito.quantity), DATE(ito.shipped)
+ FROM itemTicketOut ito
+ JOIN tmp.tItems i ON i.itemFk = ito.itemFk
+ WHERE ito.shipped BETWEEN util.VN_CURDATE() AND util.VN_CURDATE() + INTERVAL vStockScopeDays DAY
+ AND ito.warehouseFk = vWarehouseFk
+ GROUP BY ito.itemFk, ito.shipped
+ ) t2
+ JOIN tmp.tItems i ON i.itemFk = t2.itemFk)t
+ GROUP BY t.itemFk, dated
+ ) t3;
+
+ -- Se restan las entradas de hoy
+ UPDATE tmp.tStockByDay sbd
+ JOIN (SELECT iei.itemFk, SUM(quantity) todayEntry
+ FROM itemEntryIn iei
+ JOIN tmp.tItems i ON i.itemFk = iei.itemFk
+ WHERE iei.landed = util.VN_CURDATE()
+ AND iei.warehouseInFk = vWarehouseFk
+ AND NOT iei.isVirtualStock) sub ON sub.itemFk = sbd.itemFk
+ SET sbd.stock = sbd.stock - sub.todayEntry
+ WHERE sbd.dated = util.VN_CURDATE();
+
+ -- Se añaden las lineas de venta servidas
+ UPDATE tmp.tStockByDay sbd
+ JOIN (SELECT s.itemFK, SUM(quantity) amount
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE t.warehouseFk = vWarehouseFk
+ AND t.shipped BETWEEN util.VN_CURDATE() AND util.midnight()
+ AND s.isPicked
+ GROUP BY s.itemFk) sub ON sub.itemFk = sbd.itemFk
+ SET sbd.stock = sbd.stock + sub.amount;
+
+ -- Se añaden los items ubicados hoy
+ UPDATE tmp.tStockByDay sbd
+ JOIN (SELECT ish.itemFK, SUM(ish.visible) amount
+ FROM itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ JOIN parking p ON p.id = sh.parkingFk
+ JOIN sector s ON s.id = p.sectorFk
+ WHERE s.warehouseFk = vWarehouseFk
+ AND NOT s.isReserve
+ AND ish.created BETWEEN util.VN_CURDATE() AND util.midnight()
+ GROUP BY ish.itemFk) sub ON sub.itemFk = sbd.itemFk
+ SET sbd.stock = sbd.stock + sub.amount;
+
+ SELECT ts.itemFk,
+ i.longName,
+ IF(ts.stock<=0, ts.dated, NULL) dated,
+ ts.stock,
+ sub4.visible,
+ sub4.shelvingFk
+ FROM(
+ SELECT IFNULL(sub2.minDated, sub.minDated) dated,
+ IFNULL(sub2.itemFk, sub.itemFk) itemFk
+ FROM(SELECT sbd.itemFk,
+ MIN(dated) minDated,
+ sbd.stock
+ FROM tmp.tItems ti
+ LEFT JOIN tmp.tStockByDay sbd ON sbd.itemFk = ti.itemFk
+ GROUP BY itemFk)sub
+ LEFT JOIN (
+ SELECT sbd.itemFk,
+ MIN(dated) minDated,
+ sbd.stock
+ FROM tmp.tItems ti
+ LEFT JOIN tmp.tStockByDay sbd ON sbd.itemFk = ti.itemFk
+ WHERE sbd.stock <= 0
+ GROUP BY itemFk)sub2 ON sub2.itemFk =sub.itemFk
+ WHERE sub2.itemFk IS NOT NULL
+ OR (sub2.itemFk IS NULL AND sub.itemFk IS NOT NULL)) sub3
+ LEFT JOIN tmp.tStockByDay ts ON ts.itemFk = sub3.itemFk AND ts.dated = sub3.dated
+ JOIN (SELECT ish.itemFk,
+ ish.visible,
+ p.sectorFk,
+ ish.shelvingFk
+ FROM itemShelving ish
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
+ LEFT JOIN parking p ON p.id = parkingFk
+ LEFT JOIN vn.sector s ON s.id = p.sectorFk
+ WHERE ish.shelvingFk = vShelvingFk
+ ) sub4 ON sub4.itemFk = ts.itemFk
+ LEFT JOIN sector s ON s.id = sub4.sectorFk
+ LEFT JOIN item i ON i.id = ts.itemFk
+ WHERE NOT s.isReserve;
+
+ DROP TEMPORARY TABLE tmp.tStockByDay, tmp.tItems;
+
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -61513,7 +61784,7 @@ BEGIN
JOIN item i ON i.id = ish.itemFk
JOIN itemType it ON it.id = i.typeFk
JOIN tmp.stockMisfit sm ON sm.itemFk = ish.itemFk
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
LEFT JOIN (
SELECT s.itemFk, sum(s.quantity) notPrepared
@@ -61549,7 +61820,7 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_selfConsumption`(
- vShelvingFk VARCHAR(10) COLLATE utf8_general_ci,
+ vShelvingCode VARCHAR(10) COLLATE utf8_general_ci,
vItemFk INT,
vQuantity INT
)
@@ -61558,9 +61829,9 @@ BEGIN
* Leave the indicated amount on the shelve
* and create a ticket with the difference.
*
- * @param vShelvingFk id of the shelve where the item is located.
- * @param vItemFk article of which the self-consumption ticket is to be created.
- * @param vQuantity amount that will stay on the shelve
+ * @param vShelvingCode Code of the shelve where the item is located
+ * @param vItemFk Item of which the self-consumption ticket is to be created
+ * @param vQuantity Amount that will stay on the shelve
*/
DECLARE vVisible INT;
DECLARE vClientFk INT;
@@ -61570,6 +61841,11 @@ BEGIN
DECLARE vAgencyModeFk INT;
DECLARE vItemShelvingFk INT;
DECLARE vAddressFk INT;
+ DECLARE vShelvingFk INT;
+
+ SELECT id INTO vShelvingFk
+ FROM shelving
+ WHERE code = vShelvingCode;
SELECT c.id,
pc.clientSelfConsumptionFk,
@@ -61586,7 +61862,7 @@ BEGIN
JOIN parking p ON p.sectorFk = s.id
JOIN shelving s2 ON s2.parkingFk = p.id
JOIN productionConfig pc
- WHERE s2.code = vShelvingFk;
+ WHERE s2.id = vShelvingFk;
IF vClientFk IS NULL THEN
CALL util.throw('The company does not have a customer assigned');
@@ -61596,7 +61872,7 @@ BEGIN
CALL util.throw('The shelf cannot have NULL or negative quantities');
END IF;
- IF vShelvingFk IS NULL THEN
+ IF vShelvingCode IS NULL THEN
CALL util.throw('The shelf is necessary');
END IF;
@@ -61653,7 +61929,7 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelving_transfer`(
vItemShelvingFk INT,
- vShelvingFk VARCHAR(10)
+ vShelvingCode VARCHAR(10)
)
BEGIN
/**
@@ -61661,9 +61937,14 @@ BEGIN
* fusionando si coincide el packing y la fecha.
*
* @param vItemShelvingFk Identificador de itemShelving
- * @param vShelvingFk Identificador de shelving
+ * @param vShelvingCode Código de shelving
*/
DECLARE vNewItemShelvingFk INT;
+ DECLARE vShelvingFk INT;
+
+ SELECT id INTO vShelvingFk
+ FROM shelving
+ WHERE code COLLATE utf8_unicode_ci = vShelvingCode;
SELECT MAX(ish.id) INTO vNewItemShelvingFk
FROM itemShelving ish
@@ -61678,7 +61959,7 @@ BEGIN
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;
+ WHERE ish.shelvingFk = vShelvingFk;
IF vNewItemShelvingFk THEN
UPDATE itemShelving ish
@@ -61690,9 +61971,7 @@ BEGIN
DELETE FROM itemShelving
WHERE id = vItemShelvingFk;
ELSE
- IF (SELECT EXISTS(SELECT id FROM shelving
- WHERE code = vShelvingFk COLLATE utf8_unicode_ci)) THEN
-
+ IF (SELECT EXISTS(SELECT id FROM shelving WHERE id = vShelvingFk)) THEN
UPDATE itemShelving
SET shelvingFk = vShelvingFk
WHERE id = vItemShelvingFk;
@@ -62772,7 +63051,7 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `item_devalueA2`(
vSelf INT,
- vShelvingFK VARCHAR(10),
+ vShelvingCode VARCHAR(10) COLLATE utf8mb3_general_ci,
vBuyingValue DECIMAL(10,4),
vQuantity INT
)
@@ -62783,7 +63062,7 @@ BEGIN
* de almacén y shelvings correspondientes
*
* @param vSelf Id de artículo a devaluar
- * @param vShelvingFK Ubicación actual del artículo
+ * @param vShelvingCode Código de shelving / ubicación
* @param vBuyingValue Nuevo precio de coste
* @param vQuantity Cantidad del ítem a pasar a A2
*/
@@ -62880,10 +63159,11 @@ BEGIN
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
+ SELECT ish.id, ish.visible INTO vTargetItemShelvingFk, vCurrentVisible
+ FROM itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ WHERE sh.code = vShelvingCode
+ AND ish.itemFk = vSelf
LIMIT 1;
IF vCurrentVisible IS NULL THEN
@@ -63159,16 +63439,17 @@ BEGIN
userFk,
isChecked)
SELECT vItemA2Fk,
- shelvingFk,
+ ish.shelvingFk,
vQuantity ,
- `grouping`,
- packing,
- packagingFk,
+ ish.`grouping`,
+ ish.packing,
+ ish.packagingFk,
account.myUser_getId(),
- isChecked
- FROM itemShelving
- WHERE itemFK = vSelf
- AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
+ ish.isChecked
+ FROM itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ WHERE ish.itemFK = vSelf
+ AND sh.code = vShelvingCode
ON DUPLICATE KEY UPDATE
visible = vQuantity + VALUES(visible);
@@ -63193,50 +63474,50 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `item_getAtp`(vDated DATE)
-BEGIN
-/**
- * Calcula el valor mínimo acumulado para cada artículo ordenado por fecha y
- * almacén.
- *
- * @param vDated Si no hay movimientos en la fecha indicada, debe devolver 0
- * @table tmp.itemCalc(itemFk, wareHouseFk, dated, quantity)
- * @return tmp.itemAtp(itemFk, warehouseFk, quantity)
- */
- CREATE OR REPLACE TEMPORARY TABLE tItemOrdered
- (UNIQUE(itemFk, warehouseFk, dated))
- ENGINE = MEMORY
- SELECT itemFk, warehouseFk, dated, SUM(quantity) quantity
- FROM (
- SELECT itemFk, warehouseFk, dated, quantity
- FROM tmp.itemCalc
- UNION ALL
- SELECT itemFk, warehouseFk, vDated, 0
- FROM (SELECT DISTINCT itemFk, warehouseFk FROM tmp.itemCalc) t2
- ) t1
- GROUP BY itemFk, warehouseFk, dated
- ORDER BY itemFk, warehouseFk, dated;
-
- SET @lastItemFk := 0;
- SET @lastWareHouseFk := 0;
- SET @lastQuantity := 0;
-
- CREATE OR REPLACE TEMPORARY TABLE tmp.itemAtp
- (INDEX (itemFk, wareHouseFk))
- SELECT itemFk, wareHouseFk, MIN(quantityAccumulated) quantity
- FROM (
- SELECT
- itemFk,
- IF(itemFk <> @lastItemFk OR wareHouseFk <> @lastWareHouseFk,
- @lastQuantity := quantity,
- @lastQuantity := @lastQuantity + quantity) quantityAccumulated,
- wareHouseFk,
- @lastItemFk := itemFk,
- @lastWareHouseFk := wareHouseFk
- FROM tItemOrdered
- )sub
- GROUP BY itemFk, wareHouseFk;
-
- DROP TEMPORARY TABLE tItemOrdered;
+BEGIN
+/**
+ * Calcula el valor mínimo acumulado para cada artículo ordenado por fecha y
+ * almacén.
+ *
+ * @param vDated Si no hay movimientos en la fecha indicada, debe devolver 0
+ * @table tmp.itemCalc(itemFk, wareHouseFk, dated, quantity)
+ * @return tmp.itemAtp(itemFk, warehouseFk, quantity)
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tItemOrdered
+ (UNIQUE(itemFk, warehouseFk, dated))
+ ENGINE = MEMORY
+ SELECT itemFk, warehouseFk, dated, SUM(quantity) quantity
+ FROM (
+ SELECT itemFk, warehouseFk, dated, quantity
+ FROM tmp.itemCalc
+ UNION ALL
+ SELECT itemFk, warehouseFk, vDated, 0
+ FROM (SELECT DISTINCT itemFk, warehouseFk FROM tmp.itemCalc) t2
+ ) t1
+ GROUP BY itemFk, warehouseFk, dated
+ ORDER BY itemFk, warehouseFk, dated;
+
+ SET @lastItemFk := 0;
+ SET @lastWareHouseFk := 0;
+ SET @lastQuantity := 0;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.itemAtp
+ (INDEX (itemFk, wareHouseFk))
+ SELECT itemFk, wareHouseFk, MIN(quantityAccumulated) quantity
+ FROM (
+ SELECT
+ itemFk,
+ IF(itemFk <> @lastItemFk OR wareHouseFk <> @lastWareHouseFk,
+ @lastQuantity := quantity,
+ @lastQuantity := @lastQuantity + quantity) quantityAccumulated,
+ wareHouseFk,
+ @lastItemFk := itemFk,
+ @lastWareHouseFk := wareHouseFk
+ FROM tItemOrdered
+ )sub
+ GROUP BY itemFk, wareHouseFk;
+
+ DROP TEMPORARY TABLE tItemOrdered;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -63304,16 +63585,16 @@ BEGIN
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()
+ JOIN vn.state st ON st.`code` = IF(tr.landed < util.VN_CURDATE()
OR (util.VN_CURDATE() AND tr.isReceived),
'DELIVERED',
'FREE')
WHERE tr.landed >= vDateInventory
AND tr.warehouseInFk = vWarehouseFk
- AND (s.id <> vSupplierInventoryFk OR vDated IS NULL)
+ AND (s.id <> vSupplierInventoryFk OR vDated IS NULL)
AND b.itemFk = vItemFk
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT tr.isRaid
),
entriesOut AS (
SELECT 'entry',
@@ -63349,7 +63630,7 @@ BEGIN
AND b.itemFk = vItemFk
AND NOT e.isExcludedFromAvailable
AND NOT w.isFeedStock
- AND NOT e.isRaid
+ AND NOT tr.isRaid
),
sales AS (
WITH itemSales AS (
@@ -63401,10 +63682,10 @@ BEGIN
NULL
FROM itemSales s
LEFT JOIN vn.state stPrep ON stPrep.`code` = 'PREPARED'
- LEFT JOIN vn.saleTracking stk ON stk.saleFk = s.saleFk
+ LEFT JOIN vn.saleTracking stk ON stk.saleFk = s.saleFk
AND stk.stateFk = stPrep.id
GROUP BY s.saleFk
- ),
+ ),
orders AS (
SELECT 'order' originType,
o.id originId,
@@ -63469,9 +63750,9 @@ BEGIN
t.`in` invalue,
t.`out`,
@a := @a + IFNULL(t.`in`, 0) - IFNULL(t.`out`, 0) balance,
- @currentLineFk := IF (@shipped < util.VN_CURDATE()
+ @currentLineFk := IF (@shipped < util.VN_CURDATE()
OR (@shipped = util.VN_CURDATE() AND (t.isPicked OR a.`code` >= 'ON_PREPARATION')),
- t.lineFk,
+ t.lineFk,
@currentLineFk) lastPreparedLineFk,
t.isTicket,
t.lineFk,
@@ -63508,21 +63789,21 @@ BEGIN
UNION ALL
SELECT originType,
originId,
- shipped,
- alertlevel,
- stateName,
+ shipped,
+ alertlevel,
+ stateName,
reference,
entityType,
- entityId,
+ entityId,
entityName,
- `in`,
- `out`,
- @a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0),
- 0,
- isTicket,
- lineFk,
- isPicked,
- clientType,
+ `in`,
+ `out`,
+ @a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0),
+ 0,
+ isTicket,
+ lineFk,
+ isPicked,
+ clientType,
claimFk,
`order`
FROM tItemDiary
@@ -63589,7 +63870,6 @@ BEGIN
i.minimum `min`,
p.name producer,
o.code origin,
- v.visible - IFNULL(vVisibleItemShelving, 0) unlocated,
a.available,
vVisibleItemShelving,
v.visible,
@@ -63770,7 +64050,7 @@ BEGIN
AND NOT e.isExcludedFromAvailable
AND b.quantity <> 0
AND (vItemFk IS NULL OR b.itemFk = vItemFk)
- AND NOT e.isRaid
+ AND NOT t.isRaid
UNION ALL
SELECT r.itemFk,
r.shipment,
@@ -64127,22 +64407,22 @@ BEGIN
ALTER TABLE tmp.itemInventory
ADD `buy_date` datetime NOT NULL;
-
+
CREATE OR REPLACE TEMPORARY TABLE lastBuyScope
SELECT i.id, MAX(t.landed) lastLanded
- FROM item i
- JOIN buy b ON b.itemFk = i.id
+ FROM item i
+ JOIN buy b ON b.itemFk = i.id
JOIN entry e ON e.id = b.entryFk
- JOIN travel t ON t.id = e.travelFk
+ JOIN travel t ON t.id = e.travelFk
JOIN supplier s ON s.id = e.supplierFk
JOIN warehouse w ON w.id = t.warehouseInFk
WHERE t.landed BETWEEN (vDated + INTERVAL - vLastBuyScope DAY) AND vDated
AND NOT s.name = 'INVENTARIO'
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
AND w.isComparative
- AND NOT e.isRaid
+ AND NOT t.isRaid
GROUP BY i.id;
-
+
UPDATE tmp.itemInventory y
JOIN lastBuyScope lbs ON lbs.id = y.id
SET y.buy_date = lbs.lastLanded;
@@ -64531,7 +64811,7 @@ BEGIN
LIMIT 1;
SET vHasNotInventory = (vInventoried IS NULL);
-
+
IF vHasNotInventory THEN
SELECT landed INTO vInventoryClone
FROM travel tr
@@ -64556,7 +64836,7 @@ BEGIN
PRIMARY KEY (warehouseInventory, itemFk) USING HASH
)
ENGINE = MEMORY;
-
+
-- Inventario inicial
IF vHasNotInventory THEN
INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
@@ -64615,7 +64895,7 @@ BEGIN
JOIN warehouse w ON w.id = tr.warehouseInFk
WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd
AND IF(tr.landed = util.VN_CURDATE(), tr.isReceived, TRUE)
- AND NOT e.isRaid
+ AND NOT tr.isRaid
AND w.valuatedInventory
AND t.isInventory
AND e.supplierFk <> vInventorySupplierFk
@@ -64637,7 +64917,7 @@ BEGIN
JOIN itemCategory ic ON ic.id = t.categoryFk
JOIN warehouse w ON w.id = tr.warehouseOutFk
WHERE tr.shipped BETWEEN vInventoried AND vDateDayEnd
- AND NOT e.isRaid
+ AND NOT tr.isRaid
AND w.valuatedInventory
AND t.isInventory
AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
@@ -64665,7 +64945,7 @@ BEGIN
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + s.quantity * IF(vHasNotInventory, 1, -1);
-- Volver a poner lo que esta aun en las estanterias
- IF vDated = util.VN_CURDATE() THEN
+ IF vDated = util.VN_CURDATE() THEN
INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
SELECT w.id,
s.itemFk,
@@ -64702,14 +64982,14 @@ BEGIN
JOIN warehouse wIn ON wIn.id = tr.warehouseInFk
JOIN warehouse wOut ON wOut.id = tr.warehouseOutFk
WHERE vDated >= tr.shipped AND vDated < tr.landed
- AND NOT isRaid
+ AND NOT tr.isRaid
AND wIn.valuatedInventory
AND t.isInventory
AND e.isConfirmed
AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity);
-
+
CALL buy_getUltimate (NULL, NULL, vDateDayEnd);
DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity;
@@ -64739,7 +65019,7 @@ BEGIN
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
+ JOIN itemCategory ic ON ic.id = tp.categoryFk
WHERE w.valuatedInventory
AND ti.total > 0;
@@ -65078,155 +65358,6 @@ set @cajas := 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 `machineWorker_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=`vn`@`localhost` PROCEDURE `machineWorker_add`(vPlate VARCHAR(10), vWorkerFk INT)
-BEGIN
-
-/**
- * Inserta registro si el vWorkerFk no ha registrado nada en las últimas 12 horas
- * @param vPlate número de matrícula
- * @param vWorkerFk id del worker
- *
-*/
- UPDATE vn.machineWorker mw
- JOIN vn.machine m ON m.id = mw.machineFk
- SET mw.outTimed = util.VN_NOW()
- WHERE (mw.workerFk = vWorkerFk OR m.plate = vPlate)
- AND ISNULL(mw.outTimed);
-
- INSERT INTO machineWorker (machineFk, workerFk)
- SELECT m.id, vWorkerFk
- FROM machine m
- WHERE m.plate= vPlate;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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 `machineWorker_getHistorical` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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=`vn`@`localhost` PROCEDURE `machineWorker_getHistorical`(vPlate VARCHAR(20), vWorkerFk INT)
-BEGIN
-/**
- * Obtiene historial de la matrícula vPlate que el trabajador vWorkerFk escanea,
- * si es jefe de producción muestra el historial completo.
- *
- * @param vPlate número de matrícula
- * @param vWorkerFk id del trabajador
- *
-*/
- DECLARE vWorkerName VARCHAR(255) DEFAULT account.user_getNameFromId(vWorkerFk);
-
- SELECT mw.inTimed,account.user_getNameFromId(mw.workerFk) as workerName, mw.outTimed
- FROM machineWorker mw
- JOIN machine m ON m.plate = vPlate
- WHERE mw.machineFk = m.id
- AND mw.workerFk = IF(account.user_hasRole(vWorkerName, 'coolerAssist'), mw.workerFk, vWorkerFk)
- ORDER BY mw.inTimed DESC;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `machineWorker_update` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb4 */ ;
-/*!50003 SET character_set_results = utf8mb4 */ ;
-/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `machineWorker_update`(vPlate VARCHAR(10), vWorkerFk INT)
-BEGIN
-
-/**
- * Actualiza el registro correspondiente si el vWorkerFk se ha registrado en las últimas horas (campo maxHours de machineWorkerConfig) con vPlate,
- *
- * @param vPlate número de matrícula
- * @param vWorkerFk id del trabajador
- *
-*/
-
- DECLARE vMachineFk INT(10);
- DECLARE vMaxHours INT(10);
-
- SELECT m.id INTO vMachineFk
- FROM machine m
- WHERE m.plate = vPlate;
-
- SELECT maxHours INTO vMaxHours
- FROM machineWorkerConfig;
-
- IF (SELECT COUNT(*)
- FROM machineWorker m
- WHERE m.workerFk = vWorkerFk
- AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, util.VN_NOW()) AND ISNULL(m.outTimed)) THEN
-
- UPDATE machineWorker m
- SET m.outTimed = CURRENT_TIMESTAMP()
- WHERE m.workerFk = vWorkerFk
- AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, util.VN_NOW())
- AND ISNULL(m.outTimed)
- AND m.machineFk = vMachineFk;
-
- 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 `machine_getWorkerPlate` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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=`vn`@`localhost` PROCEDURE `machine_getWorkerPlate`(vWorkerFk INT)
-BEGIN
-/**
- * Selecciona la matrícula del vehículo del workerfk
- *
- * @param vWorkerFk el id del trabajador
- */
- SELECT m.plate
- FROM machine m
- JOIN machineWorker mw ON mw.machineFk = m.id
- WHERE mw.inTimed >= TIMESTAMPADD(HOUR , -12,util.VN_NOW())
- AND ISNULL(mw.outTimed)
- AND mw.workerFk = vWorkerFk;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -65485,7 +65616,7 @@ proc: BEGIN
AND IFNULL(vWarehouseFk, t.warehouseInFk) = t.warehouseInFk
AND w.isComparative
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT t.isRaid
UNION ALL
SELECT b.itemFk, - b.quantity
FROM buy b
@@ -65496,7 +65627,7 @@ proc: BEGIN
AND IFNULL(vWarehouseFk, t.warehouseOutFk) = t.warehouseOutFk
AND w.isComparative
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT t.isRaid
) sub
GROUP BY itemFk;
@@ -65546,7 +65677,7 @@ proc: BEGIN
AND IFNULL(vWarehouseFk, t.warehouseInFk) = t.warehouseInFk
AND w.isComparative
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT t.isRaid
UNION ALL
SELECT b.itemFk, t.shipped, - b.quantity
FROM buy b
@@ -65557,7 +65688,7 @@ proc: BEGIN
AND IFNULL(vWarehouseFk, t.warehouseOutFk) = t.warehouseOutFk
AND w.isComparative
AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
+ AND NOT t.isRaid
) sub
GROUP BY sub.itemFk, sub.dated;
@@ -66732,7 +66863,7 @@ proc: BEGIN
st.code = 'previousPrepared' isPreviousPrepared,
sc.itemPackingTypeFk
FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector sc ON sc.id = p.sectorFk
JOIN sectorType st ON st.id = sc.typeFk
@@ -67204,50 +67335,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 `raidUpdate` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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=`vn`@`localhost` PROCEDURE `raidUpdate`()
-BEGIN
-/**
- * Actualiza el travel de las entradas de redadas
- */
- UPDATE entry e
- JOIN entryVirtual ev ON ev.entryFk = e.id
- JOIN travel t ON t.id = e.travelFk
- JOIN (
- SELECT *
- FROM (
- SELECT t.id, t.landed, tt.warehouseInFk, tt.warehouseOutFk
- FROM travel t
- JOIN (
- SELECT t.warehouseInFk, t.warehouseOutFk
- FROM entryVirtual ev
- JOIN entry e ON e.id = ev.entryFk
- JOIN travel t ON t.id = e.travelFk
- GROUP BY t.warehouseInFk, t.warehouseOutFk
- ) tt ON t.warehouseInFk = tt.warehouseInFk AND t.warehouseOutFk = tt.warehouseOutFk
- WHERE shipped > util.VN_CURDATE() AND NOT isDelivered
- ORDER BY t.landed
- LIMIT 10000000000000000000
- ) t
- GROUP BY t.warehouseInFk, t.warehouseOutFk
- ) tt ON t.warehouseInFk = tt.warehouseInFk AND t.warehouseOutFk = tt.warehouseOutFk
- SET e.travelFk = t.id;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `rangeDateInfo` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -67817,7 +67904,7 @@ BEGIN
rm.ticketFree = 0,
rm.ticketProduction = 0,
rm.ticketPacked = 0,
- rm.dated = r.created;
+ rm.dated = r.dated;
UPDATE routesMonitor rm
JOIN (
@@ -67974,8 +68061,10 @@ BEGIN
*/
DECLARE vIsUpdatable, vIsFreelance BOOL DEFAULT 0;
DECLARE vAgencyModePricePercentage DOUBLE;
+ DECLARE vIsKmTruckRate BOOL;
+ DECLARE vCountryFk INT;
- SELECT r.created >= rc.cutoffDated INTO vIsUpdatable
+ SELECT r.dated >= rc.cutoffDated INTO vIsUpdatable
FROM route r
JOIN routeConfig rc
WHERE r.id = vSelf;
@@ -67984,10 +68073,17 @@ BEGIN
DELETE FROM routeCommission
WHERE routeFk = vSelf;
- SELECT w.isFreelance INTO vIsFreelance
+ SELECT w.isFreelance, v.isKmTruckRate, p.countryFk INTO vIsFreelance, vIsKmTruckRate, vCountryFk
FROM route r
JOIN worker w ON w.id = r.workerFk
- WHERE r.id = vSelf;
+ JOIN vehicle v ON v.id = r.vehicleFk
+ LEFT JOIN ticket t ON t.routeFk = r.id
+ LEFT JOIN address a ON a.id = t.addressFk
+ LEFT JOIN province p ON p.id = a.provinceFk
+ WHERE r.id = vSelf
+ GROUP BY p.countryFk
+ ORDER BY COUNT(*) DESC
+ LIMIT 1;
SELECT ampp.percentage INTO vAgencyModePricePercentage
FROM route r
@@ -68002,7 +68098,9 @@ BEGIN
workCenterFk,
freelanceYearlyM3,
cat4m3,
- cat5m3
+ cat5m3,
+ isKmTruckRate,
+ countryFk
)
SELECT vSelf,
r.commissionWorkCenterFk,
@@ -68014,11 +68112,14 @@ BEGIN
IFNULL(r.m3, 0),
0
),
- rc.distributionCat4M3 * IFNULL(r.m3, 0),
- rc.distributionCat5M3 * IFNULL(r.m3, 0)
+ IFNULL(wc.distributionCat4M3, rc.distributionCat4M3) * IFNULL(r.m3, 0),
+ IFNULL(wc.distributionCat5M3, rc.distributionCat5M3) * IFNULL(r.m3, 0),
+ vIsKmTruckRate,
+ vCountryFk
FROM route r
JOIN vehicle v ON v.id = r.vehicleFk
JOIN routeConfig rc
+ LEFT JOIN workCenterCommission wc ON wc.workCenterFk = r.commissionWorkCenterFk
WHERE r.id = vSelf
AND r.workerFk
AND r.commissionWorkCenterFk;
@@ -68031,21 +68132,28 @@ BEGIN
yearlyKm,
yearlyM3,
cat4m3,
- cat5m3
+ cat5m3,
+ isKmTruckRate,
+ countryFk
)
SELECT vSelf,
r.commissionWorkCenterFk,
(r.kmEnd - r.kmStart) *
IF(v.isKmTruckRate, rc.kmHeavy, rc.kmLight),
IFNULL(r.m3, 0) *
- IF(v.isKmTruckRate, rc.deliveryM3Cat5, rc.deliveryM3Cat4),
+ IF(v.isKmTruckRate,
+ IFNULL(wc.deliveryM3Cat5, rc.deliveryM3Cat5),
+ IFNULL(wc.deliveryM3Cat4, rc.deliveryM3Cat4)),
(r.kmEnd - r.kmStart) * rc.kmYearly,
IFNULL(r.m3, 0) * rc.m3Yearly,
- rc.distributionCat4M3 * IFNULL(r.m3, 0),
- rc.distributionCat5M3 * IFNULL(r.m3, 0)
+ IFNULL(wc.distributionCat4M3, rc.distributionCat4M3) * IFNULL(r.m3, 0),
+ IFNULL(wc.distributionCat5M3, rc.distributionCat5M3) * IFNULL(r.m3, 0),
+ vIsKmTruckRate,
+ vCountryFk
FROM route r
JOIN vehicle v ON v.id = r.vehicleFk
JOIN routeConfig rc
+ LEFT JOIN workCenterCommission wc ON wc.workCenterFk = r.commissionWorkCenterFk
WHERE r.id = vSelf
AND r.kmStart
AND r.kmEnd
@@ -68814,7 +68922,7 @@ BEGIN
DECLARE vQuantity INT;
DECLARE vRemainder INT DEFAULT 0;
DECLARE vRemainderSaleFk INT;
- DECLARE vShelving VARCHAR(10);
+ DECLARE vShelvingFk VARCHAR(10);
DECLARE vTicketFk INT;
SELECT s.quantity,
@@ -68861,7 +68969,7 @@ w1: WHILE vQuantity >= vPacking DO
p.pickingOrder,
ish.created
FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
LEFT JOIN itemShelvingSale iss
ON iss.itemShelvingFk = ish.id
@@ -69049,9 +69157,9 @@ w1: WHILE vQuantity >= vPacking DO
CALL dipole.expedition_Add(vExpeditionFk,vPrinterFk, TRUE);
SELECT shelvingFk, p.code
- INTO vShelving, vParkingCode
+ INTO vShelvingFk, vParkingCode
FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
WHERE ish.id = vItemShelvingFk;
@@ -69060,7 +69168,7 @@ w1: WHILE vQuantity >= vPacking DO
itemFk = vItemFk,
quantity = vPacking,
longName = vConcept,
- shelvingFk = vShelving,
+ shelvingFk = vShelvingFk,
parkingCode = vParkingCode,
phone = RIGHT(phone,vMaxPhoneLength),
street = RIGHT(street, vMAxStreetLength)
@@ -69162,7 +69270,7 @@ BEGIN
AND iss.created >= vDated
GROUP BY iss.itemShelvingFk, s.itemFk) tISS
ON tISS.itemFk = ish.itemFk AND tISS.itemShelvingFk = ish.id
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN tmp.productionBuffer pb ON pb.ticketFk = s.ticketFk
JOIN agencyMode am ON am.id = pb.agencyModeFk
@@ -69427,7 +69535,7 @@ BEGIN
SUM(ish.visible) visible,
s.warehouseFk warehouseFk
FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector s ON s.id = p.sectorFk
GROUP BY ish.itemFk, s.warehouseFk;
@@ -69467,7 +69575,7 @@ BEGIN
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
WHERE IFNULL(v.visible, 0) < s.quantity
- AND IFNULL(av.available, 0) < s.quantity
+ AND IFNULL(av.available, 0) < 0
AND IFNULL(issw.visible, 0) < s.quantity
AND NOT s.isPicked
AND NOT s.reserved
@@ -69530,7 +69638,7 @@ BEGIN
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
WHERE IFNULL(v.visible, 0) < s.quantity
- AND IFNULL(av.available, 0) >= s.quantity
+ AND IFNULL(av.available, 0) >= 0
AND IFNULL(issw.visible, 0) < s.quantity
AND s.quantity > 0
AND NOT s.isPicked
@@ -70251,30 +70359,30 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `sectorCollection_new`(vSectorFk INT)
-BEGIN
-/**
- * Inserta una nueva colección, si el usuario no tiene ninguna vacia.
- * Esto se hace para evitar que por error se generen colecciones sin sentido.
- *
- * @param vSectorFk Identificador de #vn.sector
- */
- DECLARE hasEmptyCollections BOOL;
- DECLARE vUserFk INT;
-
- SET vUserFk = account.myUser_getId();
-
- SELECT (COUNT(sc.id) > 0) INTO hasEmptyCollections
- FROM vn.sectorCollection sc
- LEFT JOIN vn.sectorCollectionSaleGroup scsg ON scsg.sectorCollectionFk = sc.id
- WHERE ISNULL(scsg.id)
- AND sc.userFk = vUserFk
- AND sc.sectorFk = vSectorFk
- AND sc.created >= util.VN_CURDATE();
-
- IF NOT hasEmptyCollections THEN
- INSERT INTO vn.sectorCollection(userFk, sectorFk)
- VALUES(vUserFk, vSectorFk);
- END IF;
+BEGIN
+/**
+ * Inserta una nueva colección, si el usuario no tiene ninguna vacia.
+ * Esto se hace para evitar que por error se generen colecciones sin sentido.
+ *
+ * @param vSectorFk Identificador de #vn.sector
+ */
+ DECLARE hasEmptyCollections BOOL;
+ DECLARE vUserFk INT;
+
+ SET vUserFk = account.myUser_getId();
+
+ SELECT (COUNT(sc.id) > 0) INTO hasEmptyCollections
+ FROM vn.sectorCollection sc
+ LEFT JOIN vn.sectorCollectionSaleGroup scsg ON scsg.sectorCollectionFk = sc.id
+ WHERE ISNULL(scsg.id)
+ AND sc.userFk = vUserFk
+ AND sc.sectorFk = vSectorFk
+ AND sc.created >= util.VN_CURDATE();
+
+ IF NOT hasEmptyCollections THEN
+ INSERT INTO vn.sectorCollection(userFk, sectorFk)
+ VALUES(vUserFk, vSectorFk);
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -70455,14 +70563,16 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `shelvingChange`(IN `vShelvingO` VARCHAR(8), IN `vShelvingD` VARCHAR(8))
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `shelvingChange`(
+ `vShelvingO` VARCHAR(10),
+ `vShelvingD` VARCHAR(10)
+)
BEGIN
-
- UPDATE vn.itemShelving
- SET shelvingFk = vShelvingD COLLATE utf8_unicode_ci
- WHERE shelvingFk = vShelvingO COLLATE utf8_unicode_ci;
-
-
+ UPDATE itemShelving ish
+ JOIN shelving sh1 ON sh1.code = vShelvingD COLLATE utf8_unicode_ci
+ JOIN shelving sh2 ON sh2.code = vShelvingO COLLATE utf8_unicode_ci
+ SET ish.shelvingFk = sh1.id
+ WHERE ish.shelvingFk = sh2.id;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -70510,10 +70620,12 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `shelvingParking_get`(vShelvingFk VARCHAR(10), vWarehouseFk INT, vDayRange INT)
-BEGIN
-
-
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `shelvingParking_get`(
+ vShelvingCode VARCHAR(10),
+ vWarehouseFk INT,
+ vDayRange INT
+)
+BEGIN
SELECT s.itemFk,
s.concept,
CAST(SUM(s.quantity) AS DECIMAL(10,0)) as sinServir,
@@ -70521,15 +70633,16 @@ SELECT s.itemFk,
FROM vn.sale s
LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id
JOIN vn.ticket t ON t.id = s.ticketFk
- LEFT JOIN vn.itemShelvingStock ist ON ist.itemFk = s.itemFk AND ist.warehouseFk = vWarehouseFk
- JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk AND ish.shelvingFk = vShelvingFk COLLATE utf8_general_ci
+ LEFT JOIN vn.itemShelvingStock ist ON ist.itemFk = s.itemFk
+ AND ist.warehouseFk = vWarehouseFk
+ JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ AND sh.code = vShelvingCode COLLATE utf8_general_ci
WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(TIMESTAMPADD(DAY, GREATEST(0,vDayRange), util.VN_CURDATE()))
AND iss.saleFk IS NULL
AND t.warehouseFk = vWarehouseFk
GROUP BY s.itemFk
HAVING sinServir > aparcado;
-
-
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -70580,12 +70693,12 @@ BEGIN
DELETE ish.*
FROM itemShelving ish
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
WHERE sh.parkingFk IS NULL
AND ish.created < TIMESTAMPADD(WEEK,-1,util.VN_CURDATE());
UPDATE shelving sh
- LEFT JOIN itemShelving its ON its.shelvingFk = sh.`code`
+ LEFT JOIN itemShelving its ON its.shelvingFk = sh.id
SET isPrinted = 0,
parkingFk = NULL
WHERE its.id IS NULL
@@ -70595,11 +70708,11 @@ UPDATE shelving sh
OR
sh.parked < util.VN_CURDATE() - INTERVAL 2 WEEK
)
-
AND IF(code REGEXP '^[A-Za-z]{2}[0-9]', LEFT (code, 2) NOT IN (
- SELECT DISTINCT LEFT(its.shelvingFk, 2)
+ SELECT DISTINCT LEFT(sh.code, 2)
FROM itemShelving its
- WHERE its.shelvingFk REGEXP '^[A-Za-z]{2}[0-9]'
+ JOIN shelving sh ON sh.id = its.shelvingFk
+ WHERE sh.code REGEXP '^[A-Za-z]{2}[0-9]'
), TRUE);
END ;;
@@ -70644,7 +70757,7 @@ BEGIN
LEFT JOIN (
SELECT ish.itemFk, CAST(SUM(ish.visible) AS DECIMAL(10,0)) AS reserva
FROM vn.itemShelving ish
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
JOIN vn.sector s ON s.id = p.sectorFk
WHERE s.code = 'FUENTES_PICASSE'
@@ -70687,7 +70800,7 @@ BEGIN
sh.isSpam
FROM vn.itemShelving ish
JOIN vn.item i ON i.id = ish.itemFk
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
JOIN vn.sector s ON s.id = p.sectorFk
JOIN vn.warehouse w ON w.id = s.warehouseFk
@@ -70836,7 +70949,7 @@ proc: BEGIN
INSERT INTO stockBought(workerFk, bought, dated)
SELECT tb.workerFk,
- ROUND(GREATEST(tb.bought - IFNULL(ts.sold, 0), 0), 1),
+ ROUND(GREATEST(tb.bought - IFNULL(ts.sold, 0), 0), 2),
vDated
FROM tStockBought tb
LEFT JOIN tStockSold ts ON ts.workerFk = tb.workerFk;
@@ -70857,7 +70970,7 @@ proc: BEGIN
UPDATE stockBought s
JOIN tStockSold ts ON ts.workerFk = s.workerFk
- SET s.bought = IF(s.bought < ts.sold, ROUND(s.bought - ts.sold, 1), 0)
+ SET s.bought = IF(s.bought < ABS(ts.sold), 0, ROUND(s.bought - ABS(ts.sold), 1))
WHERE s.dated = vDated;
DROP TEMPORARY TABLE tCurrentData, tmp.item, tmp.buyUltimate, tStockSold;
@@ -70869,6 +70982,176 @@ 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 `stockBuyedByWorker` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `stockBuyedByWorker`(
+ vDated DATE,
+ vWorker INT
+)
+BEGIN
+/**
+ * Inserta el volumen de compra de un comprador
+ * en stockBuyed de acuerdo con la fecha.
+ *
+ * @param vDated Fecha de compra
+ * @param vWorker Id de trabajador
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tStockBuyed
+ (INDEX (userFk))
+ ENGINE = MEMORY
+ SELECT requested, reserved, userFk
+ FROM stockBuyed
+ WHERE dated = vDated
+ AND userFk = vWorker;
+
+ DELETE FROM stockBuyed
+ WHERE dated = vDated
+ AND userFk = vWorker;
+
+ CALL item_calculateStock(vDated);
+
+ INSERT INTO stockBuyed(userFk, buyed, `dated`, reserved, requested, description)
+ SELECT it.workerFk,
+ SUM((ti.quantity / b.packing) * buy_getVolume(b.id)) / vc.palletM3 / 1000000,
+ vDated,
+ sb.reserved,
+ sb.requested,
+ u.name
+ FROM itemType it
+ JOIN item i ON i.typeFk = it.id
+ LEFT JOIN tmp.item ti ON ti.itemFk = i.id
+ JOIN itemCategory ic ON ic.id = it.categoryFk
+ JOIN warehouse wh ON wh.code = 'VNH'
+ JOIN tmp.buyUltimate bu ON bu.itemFk = i.id
+ AND bu.warehouseFk = wh.id
+ JOIN buy b ON b.id = bu.buyFk
+ JOIN volumeConfig vc
+ JOIN account.`user` u ON u.id = it.workerFk
+ LEFT JOIN tStockBuyed sb ON sb.userFk = it.workerFk
+ WHERE ic.display
+ AND it.workerFk = vWorker;
+
+ SELECT b.entryFk Id_Entrada,
+ i.id Id_Article,
+ i.name Article,
+ ti.quantity Cantidad,
+ (ac.conversionCoefficient * (ti.quantity / b.packing) * buy_getVolume(b.id))
+ / (vc.trolleyM3 * 1000000) buyed,
+ b.packagingFk id_cubo,
+ b.packing
+ FROM tmp.item ti
+ JOIN item i ON i.id = ti.itemFk
+ JOIN itemType it ON i.typeFk = it.id
+ JOIN itemCategory ic ON ic.id = it.categoryFk
+ JOIN worker w ON w.id = it.workerFk
+ JOIN auctionConfig ac
+ JOIN tmp.buyUltimate bu ON bu.itemFk = i.id
+ AND bu.warehouseFk = ac.warehouseFk
+ JOIN buy b ON b.id = bu.buyFk
+ JOIN volumeConfig vc
+ WHERE ic.display
+ AND w.id = vWorker;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate,
+ tmp.item,
+ tStockBuyed;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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 `stockBuyed_add` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `stockBuyed_add`(
+ vDated DATE
+)
+BEGIN
+/**
+ * Inserta el volumen de compra por comprador
+ * en stockBuyed de acuerdo con la fecha.
+ *
+ * @param vDated Fecha de compra
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tStockBuyed
+ (INDEX (userFk))
+ ENGINE = MEMORY
+ SELECT requested, reserved, userFk
+ FROM stockBuyed
+ WHERE dated = vDated;
+
+ DELETE FROM stockBuyed WHERE dated = vDated;
+
+ CALL item_calculateStock(vDated);
+
+ INSERT INTO stockBuyed(userFk, buyed, `dated`, description)
+ SELECT it.workerFk,
+ SUM((ti.quantity / b.packing) * buy_getVolume(b.id)) / vc.palletM3 / 1000000,
+ vDated,
+ u.name
+ FROM itemType it
+ JOIN item i ON i.typeFk = it.id
+ LEFT JOIN tmp.item ti ON ti.itemFk = i.id
+ JOIN itemCategory ic ON ic.id = it.categoryFk
+ JOIN warehouse wh ON wh.code = 'VNH'
+ JOIN tmp.buyUltimate bu ON bu.itemFk = i.id AND bu.warehouseFk = wh.id
+ JOIN buy b ON b.id = bu.buyFk
+ JOIN volumeConfig vc
+ JOIN account.`user` u ON u.id = it.workerFk
+ JOIN workerDepartment wd ON wd.workerFk = u.id
+ JOIN department d ON d.id = wd.departmentFk
+ WHERE ic.display
+ AND d.code IN ('shopping', 'logistic', 'franceTeam')
+ GROUP BY it.workerFk;
+
+ INSERT INTO stockBuyed(buyed, dated, description)
+ SELECT SUM(ic.cm3 * ito.quantity / vc.palletM3 / 1000000),
+ vDated,
+ 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
+ JOIN province p ON p.id = a.provinceFk
+ JOIN country c ON c.id = p.countryFk
+ JOIN warehouse wh ON wh.id = t.warehouseFk
+ JOIN itemCost ic ON ic.itemFk = ito.itemFk
+ AND ic.warehouseFk = t.warehouseFk
+ JOIN volumeConfig vc
+ WHERE ito.shipped BETWEEN vDated AND util.dayend(vDated)
+ AND wh.code = 'VNH'
+ GROUP BY destiny;
+
+ UPDATE stockBuyed s
+ JOIN tStockBuyed ts ON ts.userFk = s.userFk
+ SET s.requested = ts.requested,
+ s.reserved = ts.reserved
+ WHERE s.dated = vDated;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate,
+ tmp.item,
+ tStockBuyed;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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 `subordinateGetList` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -72060,7 +72343,7 @@ BEGIN
JOIN vn.sale s ON s.ticketFk = t.id
JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id
JOIN vn.itemShelving ish ON ish.id = iss.itemShelvingFk
- JOIN vn.shelving sh ON sh.code = ish.shelvingFk
+ JOIN vn.shelving sh ON sh.id = ish.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
WHERE p.sectorFk = vSectorFk
) sub ON sub.id = td.ticketFk
@@ -74173,62 +74456,62 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_DelayTruckSplit`(
- vTicketFk INT
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_DelayTruckSplit`(
+ vTicketFk INT
)
-BEGIN
-/**
- * Splita las lineas de ticket que no estan ubicadas
- *
- * @param vTicketFk Id ticket
- */
- DECLARE vNewTicketFk INT;
- DECLARE vTotalLines INT;
- DECLARE vLinesToSplit INT;
-
- DROP TEMPORARY TABLE IF EXISTS tmp.SalesToSplit;
-
- SELECT COUNT(*) INTO vTotalLines
- FROM sale
- WHERE ticketFk = vTicketFk;
-
- CREATE TEMPORARY TABLE tmp.SalesToSplit
- SELECT s.id saleFk
- FROM ticket t
- JOIN sale s ON t.id = s.ticketFk
- LEFT JOIN (
- SELECT ish.itemFk itemFk,
- SUM(ish.visible) visible,
- s.warehouseFk warehouseFk
- FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
- JOIN parking p ON p.id = sh.parkingFk
- JOIN sector s ON s.id = p.sectorFk
- GROUP BY ish.itemFk,
- s.warehouseFk
- ) issw ON issw.itemFk = s.itemFk
- AND issw.warehouseFk = t.warehouseFk
- WHERE s.quantity > IFNULL(issw.visible, 0)
- AND s.quantity > 0
- AND NOT s.isPicked
- AND NOT s.reserved
- AND t.id = vTicketFk;
-
- SELECT COUNT(*) INTO vLinesToSplit
- FROM tmp.SalesToSplit;
-
- IF vLinesToSplit = vTotalLines AND vLinesToSplit > 0 THEN
- SET vNewTicketFk = vTicketFk;
- ELSE
- CALL ticket_Clone(vTicketFk, vNewTicketFk);
- UPDATE sale s
- JOIN tmp.SalesToSplit sts ON sts.saleFk = s.id
- SET s.ticketFk = vNewTicketFk;
- END IF;
-
- CALL ticket_setState(vNewTicketFk, 'FIXING');
-
- DROP TEMPORARY TABLE tmp.SalesToSplit;
+BEGIN
+/**
+ * Splita las lineas de ticket que no estan ubicadas
+ *
+ * @param vTicketFk Id ticket
+ */
+ DECLARE vNewTicketFk INT;
+ DECLARE vTotalLines INT;
+ DECLARE vLinesToSplit INT;
+
+ DROP TEMPORARY TABLE IF EXISTS tmp.SalesToSplit;
+
+ SELECT COUNT(*) INTO vTotalLines
+ FROM sale
+ WHERE ticketFk = vTicketFk;
+
+ CREATE TEMPORARY TABLE tmp.SalesToSplit
+ SELECT s.id saleFk
+ FROM ticket t
+ JOIN sale s ON t.id = s.ticketFk
+ LEFT JOIN (
+ SELECT ish.itemFk itemFk,
+ SUM(ish.visible) visible,
+ s.warehouseFk warehouseFk
+ FROM itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
+ JOIN parking p ON p.id = sh.parkingFk
+ JOIN sector s ON s.id = p.sectorFk
+ GROUP BY ish.itemFk,
+ s.warehouseFk
+ ) issw ON issw.itemFk = s.itemFk
+ AND issw.warehouseFk = t.warehouseFk
+ WHERE s.quantity > IFNULL(issw.visible, 0)
+ AND s.quantity > 0
+ AND NOT s.isPicked
+ AND NOT s.reserved
+ AND t.id = vTicketFk;
+
+ SELECT COUNT(*) INTO vLinesToSplit
+ FROM tmp.SalesToSplit;
+
+ IF vLinesToSplit = vTotalLines AND vLinesToSplit > 0 THEN
+ SET vNewTicketFk = vTicketFk;
+ ELSE
+ CALL ticket_Clone(vTicketFk, vNewTicketFk);
+ UPDATE sale s
+ JOIN tmp.SalesToSplit sts ON sts.saleFk = s.id
+ SET s.ticketFk = vNewTicketFk;
+ END IF;
+
+ CALL ticket_setState(vNewTicketFk, 'FIXING');
+
+ DROP TEMPORARY TABLE tmp.SalesToSplit;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -74246,84 +74529,84 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_doCmr`(vSelf INT)
-BEGIN
-/**
-* Crea u actualiza la información del CMR asociado con
-* un ticket específico en caso de que sea necesario.
-*
-* @param vSelf El id del ticket
-*/
- DECLARE vCmrFk INT;
- SELECT cmrFk INTO vCmrFk
- FROM ticket
- WHERE id = vSelf;
-
- CREATE OR REPLACE TEMPORARY TABLE tTicket
- SELECT wo.firstName,
- v.numberPlate,
- com.id companyFk,
- a.id addressFk,
- c2.defaultAddressFk,
- IFNULL(sat.supplierFk, su.id) supplierFk,
- t.landed
- FROM ticket t
- JOIN ticketState ts ON ts.ticketFk = t.id
- JOIN `state` s ON s.id = ts.stateFk
- JOIN alertLevel al ON al.id = s.alertLevel
- JOIN client c ON c.id = t.clientFk
- JOIN `address` a ON a.id = t.addressFk
- JOIN province p ON p.id = a.provinceFk
- JOIN country co ON co.id = p.countryFk
- JOIN warehouse w ON w.id = t.warehouseFk
- JOIN company com ON com.id = t.companyFk
- JOIN client c2 ON c2.id = com.clientFk
- JOIN supplierAccount sa ON sa.id = com.supplierAccountFk
- JOIN supplier su ON su.id = sa.supplierFk
- LEFT JOIN route r ON r.id = t.routeFk
- LEFT JOIN worker wo ON wo.id = r.workerFk
- LEFT JOIN vehicle v ON v.id = r.vehicleFk
- LEFT JOIN agencyMode am ON am.id = r.agencyModeFk
- LEFT JOIN agency ag ON ag.id = am.agencyFk
- LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = ag.id
- AND wo.isFreelance
- WHERE al.code IN ('PACKED', 'DELIVERED')
- AND co.code <> 'ES'
- AND am.name <> 'ABONO'
- AND w.code = 'ALG'
- AND t.id = vSelf
- GROUP BY t.id;
-
- IF vCmrFk THEN
- UPDATE cmr c
- JOIN tTicket t
- SET c.senderInstruccions = t.firstName,
- c.truckPlate = t.numberPlate,
- c.companyFk = t.companyFk,
- c.addressToFk = t.addressFk,
- c.addressFromFk = t.defaultAddressFk,
- c.supplierFk = t.supplierFk,
- c.ead = t.landed
- WHERE id = vCmrFk;
- ELSE
- INSERT INTO cmr (
- senderInstruccions,
- truckPlate,
- companyFk,
- addressToFk,
- addressFromFk,
- supplierFk,
- ead
- )
- SELECT * FROM tTicket;
-
- IF (SELECT EXISTS(SELECT * FROM tTicket)) THEN
- UPDATE ticket
- SET cmrFk = LAST_INSERT_ID()
- WHERE id = vSelf;
- END IF;
- END IF;
-
- DROP TEMPORARY TABLE tTicket;
+BEGIN
+/**
+* Crea u actualiza la información del CMR asociado con
+* un ticket específico en caso de que sea necesario.
+*
+* @param vSelf El id del ticket
+*/
+ DECLARE vCmrFk INT;
+ SELECT cmrFk INTO vCmrFk
+ FROM ticket
+ WHERE id = vSelf;
+
+ CREATE OR REPLACE TEMPORARY TABLE tTicket
+ SELECT wo.firstName,
+ v.numberPlate,
+ com.id companyFk,
+ a.id addressFk,
+ c2.defaultAddressFk,
+ IFNULL(sat.supplierFk, su.id) supplierFk,
+ t.landed
+ FROM ticket t
+ JOIN ticketState ts ON ts.ticketFk = t.id
+ JOIN `state` s ON s.id = ts.stateFk
+ JOIN alertLevel al ON al.id = s.alertLevel
+ JOIN client c ON c.id = t.clientFk
+ JOIN `address` a ON a.id = t.addressFk
+ JOIN province p ON p.id = a.provinceFk
+ JOIN country co ON co.id = p.countryFk
+ JOIN warehouse w ON w.id = t.warehouseFk
+ JOIN company com ON com.id = t.companyFk
+ JOIN client c2 ON c2.id = com.clientFk
+ JOIN supplierAccount sa ON sa.id = com.supplierAccountFk
+ JOIN supplier su ON su.id = sa.supplierFk
+ LEFT JOIN route r ON r.id = t.routeFk
+ LEFT JOIN worker wo ON wo.id = r.workerFk
+ LEFT JOIN vehicle v ON v.id = r.vehicleFk
+ LEFT JOIN agencyMode am ON am.id = r.agencyModeFk
+ LEFT JOIN agency ag ON ag.id = am.agencyFk
+ LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = ag.id
+ AND wo.isFreelance
+ WHERE al.code IN ('PACKED', 'DELIVERED')
+ AND co.code <> 'ES'
+ AND am.name <> 'ABONO'
+ AND w.code = 'ALG'
+ AND t.id = vSelf
+ GROUP BY t.id;
+
+ IF vCmrFk THEN
+ UPDATE cmr c
+ JOIN tTicket t
+ SET c.senderInstruccions = t.firstName,
+ c.truckPlate = t.numberPlate,
+ c.companyFk = t.companyFk,
+ c.addressToFk = t.addressFk,
+ c.addressFromFk = t.defaultAddressFk,
+ c.supplierFk = t.supplierFk,
+ c.ead = t.landed
+ WHERE id = vCmrFk;
+ ELSE
+ INSERT INTO cmr (
+ senderInstruccions,
+ truckPlate,
+ companyFk,
+ addressToFk,
+ addressFromFk,
+ supplierFk,
+ ead
+ )
+ SELECT * FROM tTicket;
+
+ IF (SELECT EXISTS(SELECT * FROM tTicket)) THEN
+ UPDATE ticket
+ SET cmrFk = LAST_INSERT_ID()
+ WHERE id = vSelf;
+ END IF;
+ END IF;
+
+ DROP TEMPORARY TABLE tTicket;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -74643,7 +74926,7 @@ BEGIN
SUM(ish.visible) visible,
s.warehouseFk warehouseFk
FROM itemShelving ish
- JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector s ON s.id = p.sectorFk
GROUP BY ish.itemFk,
@@ -76264,87 +76547,124 @@ CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_splitItemPackingType`(
vSelf INT,
vOriginalItemPackingTypeFk VARCHAR(1)
)
-proc:BEGIN
+BEGIN
/**
- * Clona y reparte las líneas de ventas de un ticket en funcion del tipo de empaquetado.
- * Respeta el id de ticket original para el tipo de empaquetado propuesto.
+ * Separa en diferentes tickets según el tipo de empaquetado
+ * El ticket original conserva las líneas del tipo de empaquetado especificado
+ * Las líneas sin tipo de empaquetado se asignan al ticket del tipo por defecto.
*
- * @param vSelf Id ticket
- * @param vOriginalItemPackingTypeFk Tipo empaquetado que se mantiene el ticket original
+ * @param vSelf Id del ticket original
+ * @param vOriginalItemPackingTypeFk Tipo de empaquetado a mantener en el ticket original
* @return table tmp.ticketIPT(ticketFk, itemPackingTypeFk)
*/
- DECLARE vDone INT DEFAULT FALSE;
- DECLARE vHasItemPackingType BOOL;
- DECLARE vItemPackingTypeFk INT;
+ DECLARE vIsDone BOOLEAN DEFAULT FALSE;
+ DECLARE vCurrentPackingType VARCHAR(1);
+ DECLARE vDefaultPackingType VARCHAR(1);
+ DECLARE vHasOriginalPackingType BOOLEAN;
DECLARE vNewTicketFk INT;
+ DECLARE vTicketFk INT;
- DECLARE vItemPackingTypes CURSOR FOR
- SELECT DISTINCT itemPackingTypeFk
- FROM tSalesToMove;
+ DECLARE vItemPackingTypes CURSOR FOR
+ SELECT DISTINCT itemPackingTypeFk FROM tSalesToMove;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE;
- SELECT COUNT(*) INTO vHasItemPackingType
- FROM ticket t
- JOIN sale s ON s.ticketFk = t.id
- JOIN item i ON i.id = s.itemFk
- WHERE t.id = vSelf
- AND i.itemPackingTypeFk = vOriginalItemPackingTypeFk;
-
- CREATE OR REPLACE TEMPORARY TABLE tmp.ticketIPT(
- ticketFk INT,
- itemPackingTypeFk VARCHAR(1)
- ) ENGINE=MEMORY
- SELECT vSelf ticketFk, vOriginalItemPackingTypeFk itemPackingTypeFk;
-
- IF NOT vHasItemPackingType THEN
- LEAVE proc;
- END IF;
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
CREATE OR REPLACE TEMPORARY TABLE tSalesToMove (
ticketFk INT,
saleFk INT,
- itemPackingTypeFk INT
+ itemPackingTypeFk VARCHAR(1)
) ENGINE=MEMORY;
+ SELECT COALESCE(MAX(ic.defaultPackingTypeFk), MAX(i.itemPackingTypeFk)) INTO vDefaultPackingType
+ FROM vn.sale s
+ JOIN item i ON i.id = s.itemFk
+ LEFT JOIN itemConfig ic ON ic.defaultPackingTypeFk = i.itemPackingTypeFk
+ WHERE s.ticketFk = vSelf
+ GROUP BY s.ticketFk;
+
+ SELECT EXISTS (
+ SELECT TRUE
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ WHERE s.ticketFk = vSelf
+ AND i.itemPackingTypeFk = vOriginalItemPackingTypeFk
+ ) INTO vHasOriginalPackingType;
+
+ IF vOriginalItemPackingTypeFk IS NULL OR NOT vHasOriginalPackingType THEN
+ SET vOriginalItemPackingTypeFk = vDefaultPackingType;
+ END IF;
+
+ START TRANSACTION;
+
+ SELECT t.id INTO vTicketFk
+ FROM ticket t
+ JOIN sale s ON s.id = t.id
+ WHERE t.id = vSelf
+ FOR UPDATE;
+
INSERT INTO tSalesToMove (saleFk, itemPackingTypeFk)
- SELECT s.id, i.itemPackingTypeFk
- FROM ticket t
- JOIN sale s ON s.ticketFk = t.id
- JOIN item i ON i.id = s.itemFk
- WHERE t.id = vSelf
+ SELECT s.id, i.itemPackingTypeFk
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ WHERE s.ticketFk = vSelf
AND i.itemPackingTypeFk <> vOriginalItemPackingTypeFk;
OPEN vItemPackingTypes;
-
l: LOOP
- SET vDone = FALSE;
- FETCH vItemPackingTypes INTO vItemPackingTypeFk;
+ SET vIsDone = FALSE;
+ FETCH vItemPackingTypes INTO vCurrentPackingType;
- IF vDone THEN
+ IF vIsDone THEN
LEAVE l;
END IF;
CALL ticket_Clone(vSelf, vNewTicketFk);
+ SELECT id INTO vTicketFk
+ FROM ticket t
+ WHERE t.id = vNewTicketFk
+ FOR UPDATE;
+
UPDATE tSalesToMove
SET ticketFk = vNewTicketFk
- WHERE itemPackingTypeFk = vItemPackingTypeFk;
+ WHERE itemPackingTypeFk = vCurrentPackingType;
+
+ IF vCurrentPackingType = vDefaultPackingType THEN
+ INSERT INTO tSalesToMove (ticketFk, saleFk, itemPackingTypeFk)
+ SELECT vNewTicketFk, s.id, i.itemPackingTypeFk
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ WHERE s.ticketFk = vSelf
+ AND i.itemPackingTypeFk IS NULL;
+ END IF;
END LOOP;
-
CLOSE vItemPackingTypes;
UPDATE sale s
- JOIN tSalesToMove stm ON stm.saleFk = s.id
- SET s.ticketFk = stm.ticketFk
- WHERE stm.ticketFk;
+ JOIN tSalesToMove t ON t.saleFk = s.id
+ SET s.ticketFk = t.ticketFk;
- INSERT INTO tmp.ticketIPT (ticketFk, itemPackingTypeFk)
- SELECT ticketFk, itemPackingTypeFk
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticketIPT
+ ENGINE=MEMORY
+ SELECT s.ticketFk, MAX(i.itemPackingTypeFk) itemPackingTypeFk
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ WHERE s.ticketFk = vSelf
+ GROUP BY s.ticketFk
+ UNION
+ SELECT ticketFk, MAX(itemPackingTypeFk)
FROM tSalesToMove
GROUP BY ticketFk;
+ COMMIT;
+
DROP TEMPORARY TABLE tSalesToMove;
END ;;
DELIMITER ;
@@ -77324,7 +77644,7 @@ BEGIN
JOIN vn.entry e ON e.travelFk = tr.id
JOIN vn.buy b ON b.entryFk = e.id
WHERE tr.landed BETWEEN vFromDated AND vToDated
- AND e.isRaid = FALSE
+ AND NOT tr.isRaid
AND tr.warehouseInFk = vWarehouseFk
GROUP BY tr.landed , a.name ;
END ;;
@@ -77408,6 +77728,36 @@ 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 `travel_checkRaid` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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=`vn`@`localhost` PROCEDURE `travel_checkRaid`(
+ vIsRaid BOOL,
+ vDaysInForward INT
+)
+BEGIN
+/**
+ * Check if the values of isRaid and daysInforward are correct
+ *
+ * @param vIsRaid idRaid value
+ * @param vDaysInForward daysInForward value
+ */
+ IF (NOT vIsRaid AND vDaysInForward IS NOT NULL) OR (vIsRaid AND vDaysInForward IS NULL) THEN
+ CALL util.throw('The raid information is not correct');
+ 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 `travel_checkWarehouseIsFeedStock` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -77570,7 +77920,7 @@ BEGIN
END IF;
CALL entry_cloneHeader(vAuxEntryFk, vNewEntryFk, vNewTravelFk);
- CALL entry_copyBuys(vAuxEntryFk, vNewEntryFk);
+ CALL entry_copyBuys(vAuxEntryFk, vNewEntryFk);
SELECT evaNotes INTO vEvaNotes
FROM entry
@@ -77579,6 +77929,8 @@ BEGIN
UPDATE entry
SET evaNotes = vEvaNotes
WHERE id = vNewEntryFk;
+
+ CALL buy_recalcPricesByEntry(vNewEntryFk);
END LOOP;
SET @isModeInventory = FALSE;
@@ -77756,73 +78108,70 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `travel_moveRaids`()
BEGIN
-
-/*
- * Desplaza al dia siguiente los travels que contengan redadas y avisa a los compradores
- *
+/**
+ * Desplaza los travels en el futuro y avisa a los compradores
+ *
*/
DECLARE vDone BOOL DEFAULT FALSE;
- DECLARE vWorkerName VARCHAR(50);
- DECLARE vRaid TEXT;
- DECLARE vWorker VARCHAR(50) DEFAULT '';
+ DECLARE vBuyerEmail VARCHAR(40);
+ DECLARE vTravelLink TEXT;
DECLARE vMailBody TEXT DEFAULT '';
DECLARE vCur CURSOR FOR
- SELECT GROUP_CONCAT( DISTINCT CONCAT('https://salix.verdnatura.es/#!/travel/', ttr.id, '/summary ') ORDER BY ttr.id SEPARATOR '\n\r'),
- u.name
- FROM tmp.travel ttr
- JOIN entry e ON e.travelFk = ttr.id
+ SELECT GROUP_CONCAT(DISTINCT
+ CONCAT('https://salix.verdnatura.es/#!/travel/',
+ ttm.travelFk,
+ '/summary ')
+ ORDER BY ttm.travelFk SEPARATOR '\n\r') travelLink,
+ CONCAT(u.name, '@verdnatura.es') buyerEmail
+ FROM tTravelToMove ttm
+ JOIN entry e ON e.travelFk = ttm.travelFk
JOIN buy b ON b.entryFk = e.id
JOIN item i ON i.id = b.itemFk
JOIN itemType it ON it.id = i.typeFk
JOIN account.user u ON u.id = it.workerFk
GROUP BY u.name;
- DECLARE CONTINUE HANDLER FOR NOT FOUND
- SET vDone = TRUE;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
RESIGNAL;
END;
-
- DROP TEMPORARY TABLE IF EXISTS tmp.travel;
- CREATE TEMPORARY TABLE tmp.travel
- SELECT tr.id,tr.landed
- FROM travel tr
- JOIN entry e ON e.travelFk = tr.id
- WHERE tr.landed = util.tomorrow()
- AND e.isRaid
- GROUP BY tr.id;
+
+ CREATE OR REPLACE TEMPORARY TABLE tTravelToMove
+ SELECT id travelFk,
+ util.VN_CURDATE() + INTERVAL daysInForward DAY newLanded
+ FROM travel
+ WHERE isRaid
+ AND daysInForward;
START TRANSACTION;
UPDATE travel tr
- JOIN tmp.travel ttr ON ttr.id = tr.id
- SET tr.landed = TIMESTAMPADD(DAY, 1, tr.landed);
+ JOIN tTravelToMove ttm ON ttm.travelFk = tr.id
+ SET tr.landed = ttm.newLanded;
OPEN vCur;
l: LOOP
SET vDone = FALSE;
- FETCH vCur INTO vRaid, vWorkerName;
+ FETCH vCur INTO vTravelLink, vBuyerEmail;
IF vDone THEN
LEAVE l;
END IF;
- CALL `vn`.`mail_insert`(CONCAT(vWorkerName, '@verdnatura.es'),
- 'noreply@verdnatura.es',
- 'Cambio de fecha en Redadas',
- CONCAT('Se ha movido las siguientes redadas: \n\r ', vRaid)
- );
-
+ CALL `vn`.`mail_insert`(
+ vBuyerEmail,
+ 'noreply@verdnatura.es',
+ 'Cambio de fecha en Redadas',
+ CONCAT('Se ha movido los siguientes travels: \n\r ', vTravelLink));
END LOOP;
CLOSE vCur;
COMMIT;
- DROP TEMPORARY TABLE tmp.travel;
-
+ DROP TEMPORARY TABLE tTravelToMove;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -79281,187 +79630,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 `workerTimeControl_check` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb4 */ ;
-/*!50003 SET character_set_results = utf8mb4 */ ;
-/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `workerTimeControl_check`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100))
-proc: BEGIN
-/**
- * Verifica si el empleado puede fichar en el momento actual, si puede fichar llama a workerTimeControlAdd
- *
- * @param vUserFk Identificador del trabajador
- * @return Retorna si encuentra un problema 'odd','maxTimeWork','breakDay','breakWeek' ;
- * En caso de tener algun problema retorna el primero que encuentra
- */
- DECLARE vLastIn DATETIME ;
- DECLARE vLastOut DATETIME ;
- DECLARE vDayWorkMax INT;
- DECLARE vDayBreak INT;
- DECLARE vWeekBreak INT ;
- DECLARE vWeekScope INT;
- DECLARE vDayStayMax INT;
- DECLARE vProblem VARCHAR(20) DEFAULT NULL;
- DECLARE vTimedWorked INT;
- DECLARE vCalendarStateType VARCHAR(20) DEFAULT NULL;
- DECLARE vDepartmentFk INT;
- DECLARE vTo VARCHAR(50) DEFAULT NULL;
- DECLARE vUserName VARCHAR(50) DEFAULT NULL;
- DECLARE vBody VARCHAR(255) DEFAULT NULL;
-
- SELECT dayBreak, weekBreak, weekScope, dayWorkMax, dayStayMax
- INTO vDayBreak, vWeekBreak, vWeekScope, vDayWorkMax, vDayStayMax
- FROM workerTimeControlParams;
-
- SELECT MAX(timed) INTO vLastIn
- FROM workerTimeControl
- WHERE userFk = vUserFk
- AND direction = 'in';
-
- SELECT MAX(timed) INTO vLastOut
- FROM workerTimeControl
- WHERE userFk = vUserFk
- AND direction = 'out';
-
- SELECT CONCAT(u.name,'@verdnatura.es') INTO vTo
- FROM account.user u
- WHERE u.id = (SELECT bossFk FROM worker WHERE id = vUserFk);
-
- SELECT CONCAT(firstName,' ',lastName) INTO vUserName
- FROM worker w
- WHERE w.id = vUserFk;
-
-
- IF UNIX_TIMESTAMP(util.VN_NOW()) - UNIX_TIMESTAMP(vLastIn) > vDayStayMax THEN -- NUEVA JORNADA
-
- -- VERIFICAR DESCANSO DIARIO
- IF UNIX_TIMESTAMP(util.VN_NOW()) - UNIX_TIMESTAMP(vLastOut) < vDayBreak THEN
- SELECT "Descansos 12 h" AS problem;
- -- ENVIAMOS CORREO AL BOSSFK
- SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Descansos 12 h") INTO vBody;
- CALL mail_insert(vTo,vTo,'error al fichar',vBody);
- LEAVE proc;
- END IF;
-
- -- VERIFICAR FICHADAS IMPARES DEL ÚLTIMO DÍA QUE SE FICHÓ
- IF (SELECT MOD(COUNT(*),2) -- <>0
- FROM workerTimeControl
- WHERE userFk = vUserFk
- AND timed >= vLastIn
- ) THEN
- SELECT "Dias con fichadas impares" AS problem;
- -- ENVIAMOS CORREO AL BOSSFK
- SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Dias con fichadas impares") INTO vBody;
- CALL mail_insert(vTo,vTo,'error al fichar',vBody);
- LEAVE proc;
- END IF;
-
- -- VERIFICAR VACACIONES
- SELECT at2.name INTO vCalendarStateType
- FROM calendar c
- JOIN business b ON b.id = c.businessFk
- JOIN absenceType at2 ON at2.id = c.dayOffTypeFk
- WHERE c.dated = util.VN_CURDATE()
- AND at2.isAllowedToWork = FALSE
- AND b.workerFk = vUserFk
- LIMIT 1;
-
- IF(LENGTH(vCalendarStateType)) THEN
- SELECT vCalendarStateType AS problem;
- -- ENVIAMOS CORREO AL BOSSFK
- SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Vacaciones") INTO vBody;
- CALL mail_insert(vTo,vTo,'error al fichar',vBody);
- LEAVE proc;
-
- END IF;
-
- -- VERIFICAR CONTRATO EN VIGOR
- IF (SELECT COUNT(*)
- FROM business b
- WHERE b.workerFk = vUserFk
- AND b.started <= vDated
- AND IFNULL(b.ended, vDated) >= vDated
- ) = 0 THEN
- SELECT "No hay un contrato en vigor" AS problem;
- -- ENVIAMOS CORREO AL BOSSFK
- SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"No hay un contrato en vigor") INTO vBody;
- CALL mail_insert(vTo,vTo,'error al fichar',vBody);
- LEAVE proc;
-
- END IF;
-
- -- VERIFICAR DESCANSO SEMANAL
- SET @vHasBreakWeek:= FALSE;
- SET @vLastTimed:= UNIX_TIMESTAMP((util.VN_NOW() - INTERVAL vWeekScope SECOND));
-
- DROP TEMPORARY TABLE IF EXISTS tmp.trash;
- CREATE TEMPORARY TABLE tmp.trash
- SELECT IF(vWeekBreak-(UNIX_TIMESTAMP(timed)-@vLastTimed) <= 0, @vHasBreakWeek:=TRUE, TRUE) alias,
- @vLastTimed:= UNIX_TIMESTAMP(timed)
- FROM workerTimeControl
- WHERE timed>= (util.VN_NOW() - INTERVAL vWeekScope SECOND)
- AND userFk= vUserFk
- AND direction IN ('in','out')
- ORDER BY timed ASC;
-
- IF UNIX_TIMESTAMP(util.VN_NOW()) - UNIX_TIMESTAMP(vLastOut) < vWeekBreak AND @vHasBreakWeek = FALSE THEN -- REVISA SI EL DESCANSO SE HA REALIZADO DESPUÉS DE LA ÚLTIMA FICHADA
- SELECT "Descansos 36 h" AS problem;
- -- ENVIAMOS CORREO AL BOSSFK
- SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Descansos 36 h") INTO vBody;
- CALL mail_insert(vTo,vTo,'error al fichar',vBody);
- LEAVE proc;
- END IF;
-
- DROP TEMPORARY TABLE tmp.trash;
-
- ELSE -- DIA ACTUAL
-
- -- VERIFICA QUE EL TIEMPO EFECTIVO NO SUPERE EL MÁXIMO
- SELECT IFNULL(SUM(if( mod(wtc.order,2)=1, -UNIX_TIMESTAMP(timed), UNIX_TIMESTAMP(timed))),0) - IF( MOD(COUNT(*),2), UNIX_TIMESTAMP(util.VN_NOW()), 0) INTO vTimedWorked
- FROM workerTimeControl wtc
- WHERE userFk = vUserFk
- AND timed >= vLastIn
- ORDER BY timed;
-
- IF vTimedWorked > vDayWorkMax THEN
- SELECT "Jornadas" AS problem;
- -- ENVIAMOS CORREO AL BOSSFK
- SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Jornadas") INTO vBody;
- CALL mail_insert(vTo,vTo,'error al fichar',vBody);
- LEAVE proc;
- END IF;
-
- END IF;
-
- -- VERIFICAR DEPARTAMENTO
- /* IF vTabletFk IS NOT NULL THEN
- SELECT wtcu.departmentFk INTO vDepartmentFk
- FROM workerTimeControlUserInfo wtcu
- WHERE wtcu.userFk = vUserFk;
- IF (SELECT COUNT(td.tabletFk)
- FROM tabletDepartment td
- WHERE td.tabletFk = vTabletFk AND td.departmentFk = vDepartmentFk
- ) = 0 THEN
- SELECT "No perteneces a este departamento." AS problem;
- -- ENVIAMOS CORREO AL BOSSFK
- SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"No perteneces a este departamento.") INTO vBody;
- CALL mail_insert(vTo,vTo,'error al fichar',vBody);
- LEAVE proc;
- END IF;
- END IF;*/
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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 `workerTimeControl_checkBreak` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -81979,126 +82147,126 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`vn`@`localhost` PROCEDURE `zone_getLeaves`(
- vSelf INT,
- vParentFk INT,
- vSearch VARCHAR(255),
- vHasInsert BOOL
+CREATE DEFINER=`vn`@`localhost` PROCEDURE `zone_getLeaves`(
+ vSelf INT,
+ vParentFk INT,
+ vSearch VARCHAR(255),
+ vHasInsert BOOL
)
-BEGIN
-/**
- * Devuelve las ubicaciones incluidas en la ruta y que sean hijos de parentFk.
- * @param vSelf Id de la zona
- * @param vParentFk Id del geo a calcular
- * @param vSearch Cadena a buscar
- * @param vHasInsert Indica si inserta en tmp.zoneNodes
- * Optional @table tmp.zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk)
- */
- DECLARE vIsNumber BOOL;
- DECLARE vIsSearch BOOL DEFAULT vSearch IS NOT NULL AND vSearch <> '';
-
- CREATE OR REPLACE TEMPORARY TABLE tNodes
- (UNIQUE (id))
- ENGINE = MEMORY
- SELECT id
- FROM zoneGeo
- LIMIT 0;
-
- IF vIsSearch THEN
- SET vIsNumber = vSearch REGEXP '^[0-9]+$';
-
- INSERT INTO tNodes
- SELECT id
- FROM zoneGeo
- WHERE (vIsNumber AND `name` = vSearch)
- OR (!vIsNumber AND `name` LIKE CONCAT('%', vSearch, '%'))
- LIMIT 1000;
-
- ELSEIF vParentFk IS NULL THEN
- INSERT INTO tNodes
- SELECT geoFk
- FROM zoneIncluded
- WHERE zoneFk = vSelf;
- END IF;
-
- IF vParentFk IS NULL THEN
- CREATE OR REPLACE TEMPORARY TABLE tChilds
- (INDEX(id))
- ENGINE = MEMORY
- SELECT id FROM tNodes;
-
- CREATE OR REPLACE TEMPORARY TABLE tParents
- (INDEX(id))
- ENGINE = MEMORY
- SELECT id FROM zoneGeo LIMIT 0;
-
- myLoop: LOOP
- DELETE FROM tParents;
- INSERT INTO tParents
- SELECT parentFk id
- FROM zoneGeo g
- JOIN tChilds c ON c.id = g.id
- WHERE g.parentFk IS NOT NULL;
-
- INSERT IGNORE INTO tNodes
- SELECT id FROM tParents;
-
- IF NOT ROW_COUNT() THEN
- LEAVE myLoop;
- END IF;
-
- DELETE FROM tChilds;
- INSERT INTO tChilds
- SELECT id FROM tParents;
- END LOOP;
-
- DROP TEMPORARY TABLE tChilds, tParents;
- END IF;
-
- IF NOT vIsSearch THEN
- INSERT IGNORE INTO tNodes
- SELECT id
- FROM zoneGeo
- WHERE parentFk <=> vParentFk;
- END IF;
-
- CREATE OR REPLACE TEMPORARY TABLE tZones
- SELECT g.id,
- g.name,
- g.parentFk,
- g.sons,
- NOT g.sons OR `type` = 'country' isChecked,
- i.isIncluded selected,
- g.`depth`,
- vSelf
- FROM zoneGeo g
- JOIN tNodes n ON n.id = g.id
- LEFT JOIN zoneIncluded i ON i.geoFk = g.id
- AND i.zoneFk = vSelf
- ORDER BY g.`depth`, selected DESC, g.name;
-
- IF vHasInsert THEN
- INSERT IGNORE INTO tmp.zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk)
- SELECT id,
- name,
- parentFk,
- sons,
- isChecked,
- vSelf
- FROM tZones
- WHERE selected
- OR (selected IS NULL AND vParentFk IS NOT NULL);
- ELSE
- SELECT id,
- name,
- parentFk,
- sons,
- selected
- FROM tZones
- ORDER BY `depth`, selected DESC, name;
- END IF;
-
- DROP TEMPORARY TABLE tNodes, tZones;
+BEGIN
+/**
+ * Devuelve las ubicaciones incluidas en la ruta y que sean hijos de parentFk.
+ * @param vSelf Id de la zona
+ * @param vParentFk Id del geo a calcular
+ * @param vSearch Cadena a buscar
+ * @param vHasInsert Indica si inserta en tmp.zoneNodes
+ * Optional @table tmp.zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk)
+ */
+ DECLARE vIsNumber BOOL;
+ DECLARE vIsSearch BOOL DEFAULT vSearch IS NOT NULL AND vSearch <> '';
+
+ CREATE OR REPLACE TEMPORARY TABLE tNodes
+ (UNIQUE (id))
+ ENGINE = MEMORY
+ SELECT id
+ FROM zoneGeo
+ LIMIT 0;
+
+ IF vIsSearch THEN
+ SET vIsNumber = vSearch REGEXP '^[0-9]+$';
+
+ INSERT INTO tNodes
+ SELECT id
+ FROM zoneGeo
+ WHERE (vIsNumber AND `name` = vSearch)
+ OR (!vIsNumber AND `name` LIKE CONCAT('%', vSearch, '%'))
+ LIMIT 1000;
+
+ ELSEIF vParentFk IS NULL THEN
+ INSERT INTO tNodes
+ SELECT geoFk
+ FROM zoneIncluded
+ WHERE zoneFk = vSelf;
+ END IF;
+
+ IF vParentFk IS NULL THEN
+ CREATE OR REPLACE TEMPORARY TABLE tChilds
+ (INDEX(id))
+ ENGINE = MEMORY
+ SELECT id FROM tNodes;
+
+ CREATE OR REPLACE TEMPORARY TABLE tParents
+ (INDEX(id))
+ ENGINE = MEMORY
+ SELECT id FROM zoneGeo LIMIT 0;
+
+ myLoop: LOOP
+ DELETE FROM tParents;
+ INSERT INTO tParents
+ SELECT parentFk id
+ FROM zoneGeo g
+ JOIN tChilds c ON c.id = g.id
+ WHERE g.parentFk IS NOT NULL;
+
+ INSERT IGNORE INTO tNodes
+ SELECT id FROM tParents;
+
+ IF NOT ROW_COUNT() THEN
+ LEAVE myLoop;
+ END IF;
+
+ DELETE FROM tChilds;
+ INSERT INTO tChilds
+ SELECT id FROM tParents;
+ END LOOP;
+
+ DROP TEMPORARY TABLE tChilds, tParents;
+ END IF;
+
+ IF NOT vIsSearch THEN
+ INSERT IGNORE INTO tNodes
+ SELECT id
+ FROM zoneGeo
+ WHERE parentFk <=> vParentFk;
+ END IF;
+
+ CREATE OR REPLACE TEMPORARY TABLE tZones
+ SELECT g.id,
+ g.name,
+ g.parentFk,
+ g.sons,
+ NOT g.sons OR `type` = 'country' isChecked,
+ i.isIncluded selected,
+ g.`depth`,
+ vSelf
+ FROM zoneGeo g
+ JOIN tNodes n ON n.id = g.id
+ LEFT JOIN zoneIncluded i ON i.geoFk = g.id
+ AND i.zoneFk = vSelf
+ ORDER BY g.`depth`, selected DESC, g.name;
+
+ IF vHasInsert THEN
+ INSERT IGNORE INTO tmp.zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk)
+ SELECT id,
+ name,
+ parentFk,
+ sons,
+ isChecked,
+ vSelf
+ FROM tZones
+ WHERE selected
+ OR (selected IS NULL AND vParentFk IS NOT NULL);
+ ELSE
+ SELECT id,
+ name,
+ parentFk,
+ sons,
+ selected
+ FROM tZones
+ ORDER BY `depth`, selected DESC, name;
+ END IF;
+
+ DROP TEMPORARY TABLE tNodes, tZones;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -82281,48 +82449,48 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`vn`@`localhost` PROCEDURE `zone_getPostalCode`(vSelf INT)
-BEGIN
-/**
- * Devuelve los códigos postales incluidos en una zona
- */
- DECLARE vGeoFk INT DEFAULT NULL;
-
- CREATE OR REPLACE TEMPORARY TABLE tmp.zoneNodes (
- geoFk INT,
- name VARCHAR(100),
- parentFk INT,
- sons INT,
- isChecked BOOL DEFAULT 0,
- zoneFk INT,
- PRIMARY KEY zoneNodesPk (zoneFk, geoFk),
- INDEX(geoFk))
- ENGINE = MEMORY;
-
- CALL zone_getLeaves(vSelf, NULL , NULL, TRUE);
-
- UPDATE tmp.zoneNodes
- SET isChecked = 0
- WHERE parentFk IS NULL;
-
- myLoop: LOOP
- SET vGeoFk = NULL;
- SELECT geoFk INTO vGeoFk
- FROM tmp.zoneNodes
- WHERE NOT isChecked
- LIMIT 1;
-
- CALL zone_getLeaves(vSelf, vGeoFk, NULL, TRUE);
- UPDATE tmp.zoneNodes
- SET isChecked = TRUE
- WHERE geoFk = vGeoFk;
-
- IF vGeoFk IS NULL THEN
- LEAVE myLoop;
- END IF;
- END LOOP;
-
- DELETE FROM tmp.zoneNodes
- WHERE sons > 0;
+BEGIN
+/**
+ * Devuelve los códigos postales incluidos en una zona
+ */
+ DECLARE vGeoFk INT DEFAULT NULL;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.zoneNodes (
+ geoFk INT,
+ name VARCHAR(100),
+ parentFk INT,
+ sons INT,
+ isChecked BOOL DEFAULT 0,
+ zoneFk INT,
+ PRIMARY KEY zoneNodesPk (zoneFk, geoFk),
+ INDEX(geoFk))
+ ENGINE = MEMORY;
+
+ CALL zone_getLeaves(vSelf, NULL , NULL, TRUE);
+
+ UPDATE tmp.zoneNodes
+ SET isChecked = 0
+ WHERE parentFk IS NULL;
+
+ myLoop: LOOP
+ SET vGeoFk = NULL;
+ SELECT geoFk INTO vGeoFk
+ FROM tmp.zoneNodes
+ WHERE NOT isChecked
+ LIMIT 1;
+
+ CALL zone_getLeaves(vSelf, vGeoFk, NULL, TRUE);
+ UPDATE tmp.zoneNodes
+ SET isChecked = TRUE
+ WHERE geoFk = vGeoFk;
+
+ IF vGeoFk IS NULL THEN
+ LEAVE myLoop;
+ END IF;
+ END LOOP;
+
+ DELETE FROM tmp.zoneNodes
+ WHERE sons > 0;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -82953,7 +83121,6 @@ SET character_set_client = utf8;
1 AS `Inventario`,
1 AS `Confirmada`,
1 AS `Pedida`,
- 1 AS `Redada`,
1 AS `comision`,
1 AS `odbc_date`,
1 AS `Notas_Eva`,
@@ -82973,18 +83140,6 @@ SET character_set_client = utf8;
1 AS `typeFk` */;
SET character_set_client = @saved_cs_client;
---
--- Temporary table structure for view `Entradas_Auto`
---
-
-DROP TABLE IF EXISTS `Entradas_Auto`;
-/*!50001 DROP VIEW IF EXISTS `Entradas_Auto`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `Entradas_Auto` AS SELECT
- 1 AS `Id_Entrada` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Temporary table structure for view `Entradas_orden`
--
@@ -84390,7 +84545,8 @@ SET character_set_client = utf8;
1 AS `Inventario`,
1 AS `Confirmada`,
1 AS `Pedida`,
- 1 AS `Redada`,
+ 1 AS `isRaid`,
+ 1 AS `daysInForward`,
1 AS `notas`,
1 AS `Id_Proveedor`,
1 AS `shipment`,
@@ -85125,7 +85281,9 @@ SET character_set_client = utf8;
1 AS `cargoSupplierFk`,
1 AS `totalEntries`,
1 AS `appointment`,
- 1 AS `awbFk` */;
+ 1 AS `awbFk`,
+ 1 AS `isRaid`,
+ 1 AS `daysInForward` */;
SET character_set_client = @saved_cs_client;
--
@@ -85177,7 +85335,6 @@ SET character_set_client = utf8;
1 AS `Id_Proveedor`,
1 AS `Fecha`,
1 AS `Confirmada`,
- 1 AS `Redada`,
1 AS `empresa_id`,
1 AS `travel_id`,
1 AS `Pedida`,
@@ -85341,7 +85498,7 @@ USE `account`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `myUser` AS select `u`.`id` AS `id`,`u`.`name` AS `name`,`u`.`active` AS `active`,`u`.`email` AS `email`,`u`.`nickname` AS `nickname`,`u`.`lang` AS `lang`,`u`.`role` AS `role`,`u`.`recoverPass` AS `recoverPass` from `user` `u` where `u`.`name` = `myUser_getName`() */
+/*!50001 VIEW `myUser` AS select `u`.`id` AS `id`,`u`.`name` AS `name`,`u`.`active` AS `active`,`u`.`email` AS `email`,`u`.`nickname` AS `nickname`,`u`.`lang` AS `lang`,`u`.`role` AS `role` from `user` `u` where `u`.`name` = `myUser_getName`() */
/*!50002 WITH CASCADED CHECK OPTION */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
@@ -86884,7 +87041,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!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`.`roadmapStopFk` 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`.`roadmapStopFk`)) 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`.`roadmapStopFk` AS `isMatch`,`t`.`warehouseFk` AS `warehouseFk`,if(`r`.`dated` > `util`.`VN_CURDATE`() + interval 1 day,ucase(dayname(`r`.`dated`)),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`.`roadmapStopFk`)) 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 */;
@@ -86902,7 +87059,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`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 `roadmapStop` `rs` on(`rs`.`id` = `rm`.`roadmapStopFk`)) 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`.`dated` AS `created` from (((((`route` `r` left join `routesMonitor` `rm` on(`r`.`id` = `rm`.`routeFk`)) left join `roadmapStop` `rs` on(`rs`.`id` = `rm`.`roadmapStopFk`)) 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`.`dated` >= `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 */;
@@ -87154,7 +87311,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `itemEntryIn` AS select `t`.`warehouseInFk` AS `warehouseInFk`,`t`.`landed` AS `landed`,`b`.`itemFk` AS `itemFk`,`b`.`quantity` AS `quantity`,`t`.`isReceived` AS `isReceived`,`e`.`isRaid` AS `isVirtualStock`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `b`.`quantity` <> 0 */;
+/*!50001 VIEW `itemEntryIn` AS select `t`.`warehouseInFk` AS `warehouseInFk`,`t`.`landed` AS `landed`,`b`.`itemFk` AS `itemFk`,`b`.`quantity` AS `quantity`,`t`.`isReceived` AS `isReceived`,`t`.`isRaid` AS `isVirtualStock`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `b`.`quantity` <> 0 */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87172,7 +87329,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `itemEntryOut` AS select `t`.`warehouseOutFk` AS `warehouseOutFk`,`t`.`shipped` AS `shipped`,`b`.`itemFk` AS `itemFk`,-`b`.`quantity` AS `quantity`,`t`.`isDelivered` AS `isDelivered`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `e`.`isRaid` = 0 and `b`.`quantity` <> 0 */;
+/*!50001 VIEW `itemEntryOut` AS select `t`.`warehouseOutFk` AS `warehouseOutFk`,`t`.`shipped` AS `shipped`,`b`.`itemFk` AS `itemFk`,-`b`.`quantity` AS `quantity`,`t`.`isDelivered` AS `isDelivered`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `t`.`isRaid` = 0 and `b`.`quantity` <> 0 */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87280,7 +87437,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `itemShelvingList` AS select `ish`.`shelvingFk` AS `shelvingFk`,`ish`.`visible` AS `visible`,`ish`.`created` AS `created`,`pk`.`code` AS `parking`,`ish`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`parked` AS `parked`,`pk`.`sectorFk` AS `sectorFk` from (((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) join `item` `i` on(`i`.`id` = `ish`.`itemFk`)) left join `parking` `pk` on(`pk`.`id` = `sh`.`parkingFk`)) order by `ish`.`created` */;
+/*!50001 VIEW `itemShelvingList` AS select `ish`.`shelvingFk` AS `shelvingFk`,`ish`.`visible` AS `visible`,`ish`.`created` AS `created`,`pk`.`code` AS `parking`,`ish`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`parked` AS `parked`,`pk`.`sectorFk` AS `sectorFk` from (((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`id` = `ish`.`shelvingFk`)) join `item` `i` on(`i`.`id` = `ish`.`itemFk`)) left join `parking` `pk` on(`pk`.`id` = `sh`.`parkingFk`)) order by `ish`.`created` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87298,7 +87455,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `itemShelvingPlacementSupplyStock` AS select `ish`.`id` AS `itemShelvingFk`,`ish`.`itemFk` AS `itemFk`,`ish`.`packing` AS `packing`,`ish`.`visible` AS `stock`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`code` AS `shelving`,`p`.`code` AS `parking`,`ish`.`created` AS `created`,ifnull(`sh`.`priority`,1) AS `priority`,`p`.`id` AS `parkingFk`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) left join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) join `item` `i` on(`i`.`id` = `ish`.`itemFk`)) group by `ish`.`id` */;
+/*!50001 VIEW `itemShelvingPlacementSupplyStock` AS select `ish`.`id` AS `itemShelvingFk`,`ish`.`itemFk` AS `itemFk`,`ish`.`packing` AS `packing`,`ish`.`visible` AS `stock`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`code` AS `shelving`,`p`.`code` AS `parking`,`ish`.`created` AS `created`,ifnull(`sh`.`priority`,1) AS `priority`,`p`.`id` AS `parkingFk`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`id` = `ish`.`shelvingFk`)) left join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) join `item` `i` on(`i`.`id` = `ish`.`itemFk`)) group by `ish`.`id` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87316,7 +87473,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `itemShelvingSaleSum` AS select `iss`.`id` AS `id`,`iss`.`itemShelvingFk` AS `itemShelvingFk`,`iss`.`saleFk` AS `saleFk`,sum(`iss`.`quantity`) AS `quantity`,`iss`.`created` AS `created`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelvingSale` `iss` join `itemShelving` `ish` on(`ish`.`id` = `iss`.`itemShelvingFk`)) join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) group by `iss`.`saleFk` */;
+/*!50001 VIEW `itemShelvingSaleSum` AS select `iss`.`id` AS `id`,`iss`.`itemShelvingFk` AS `itemShelvingFk`,`iss`.`saleFk` AS `saleFk`,sum(`iss`.`quantity`) AS `quantity`,`iss`.`created` AS `created`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelvingSale` `iss` join `itemShelving` `ish` on(`ish`.`id` = `iss`.`itemShelvingFk`)) join `shelving` `sh` on(`sh`.`id` = `ish`.`shelvingFk`)) join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) group by `iss`.`saleFk` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87334,7 +87491,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `itemShelvingStock` AS select `ish`.`itemFk` AS `itemFk`,sum(`ish`.`visible`) AS `visible`,min(`ish`.`packing`) AS `packing`,min(`ish`.`grouping`) AS `grouping`,`s`.`description` AS `sector`,sum(`ish`.`visible`) AS `visibleOriginal`,0 AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created`,`st`.`code` = 'previousPrepared' AS `isPreviousPrepared` from ((((`itemShelving` `ish` left join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) left join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) left join `sector` `s` on(`s`.`id` = `p`.`sectorFk`)) left join `sectorType` `st` on(`st`.`id` = `s`.`typeFk`)) where `ish`.`visible` <> 0 and `p`.`sectorFk` <> 0 group by `ish`.`itemFk`,`p`.`sectorFk` */;
+/*!50001 VIEW `itemShelvingStock` AS select `ish`.`itemFk` AS `itemFk`,sum(`ish`.`visible`) AS `visible`,min(`ish`.`packing`) AS `packing`,min(`ish`.`grouping`) AS `grouping`,`s`.`description` AS `sector`,sum(`ish`.`visible`) AS `visibleOriginal`,0 AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created`,`st`.`code` = 'previousPrepared' AS `isPreviousPrepared` from ((((`itemShelving` `ish` left join `shelving` `sh` on(`sh`.`id` = `ish`.`shelvingFk`)) left join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) left join `sector` `s` on(`s`.`id` = `p`.`sectorFk`)) left join `sectorType` `st` on(`st`.`id` = `s`.`typeFk`)) where `ish`.`visible` <> 0 and `p`.`sectorFk` <> 0 group by `ish`.`itemFk`,`p`.`sectorFk` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87352,7 +87509,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `itemShelvingStockFull` AS select `ish`.`itemFk` AS `itemFk`,`ish`.`visible` AS `quantity`,`ish`.`packing` AS `packing`,`ish`.`grouping` AS `grouping`,`s`.`description` AS `sector`,`issr`.`removed` AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created` from ((((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) join `sector` `s` on(`s`.`id` = `p`.`sectorFk`)) left join `itemShelvingStockRemoved` `issr` on(`issr`.`itemShelvingFk` = `ish`.`id`)) */;
+/*!50001 VIEW `itemShelvingStockFull` AS select `ish`.`itemFk` AS `itemFk`,`ish`.`visible` AS `quantity`,`ish`.`packing` AS `packing`,`ish`.`grouping` AS `grouping`,`s`.`description` AS `sector`,`issr`.`removed` AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created` from ((((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`id` = `ish`.`shelvingFk`)) join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) join `sector` `s` on(`s`.`id` = `p`.`sectorFk`)) left join `itemShelvingStockRemoved` `issr` on(`issr`.`itemShelvingFk` = `ish`.`id`)) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87514,7 +87671,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `lastPurchases` AS select `tr`.`landed` AS `landed`,`w`.`id` AS `warehouseFk`,`w`.`name` AS `warehouse`,`i`.`longName` AS `longName`,`i`.`subName` AS `subName`,`e`.`id` AS `entryFk`,`b`.`stickers` AS `stickers`,`b`.`packing` AS `packing`,`e`.`invoiceNumber` AS `ref`,`b`.`itemFk` AS `itemFk`,`ek`.`pro` AS `pro`,`ek`.`ref` AS `ektRef`,`ek`.`agj` AS `agj` from (((((`vn`.`buy` `b` join `vn`.`entry` `e` on(`e`.`id` = `b`.`entryFk`)) join `vn`.`item` `i` on(`i`.`id` = `b`.`itemFk`)) join `vn`.`travel` `tr` on(`tr`.`id` = `e`.`travelFk`)) join `vn`.`warehouse` `w` on(`w`.`id` = `tr`.`warehouseInFk`)) left join `edi`.`ekt` `ek` on(`ek`.`id` = `b`.`ektFk`)) where `tr`.`landed` between `util`.`yesterday`() and `util`.`tomorrow`() and `e`.`isRaid` = 0 and `b`.`stickers` > 0 */;
+/*!50001 VIEW `lastPurchases` AS select `tr`.`landed` AS `landed`,`w`.`id` AS `warehouseFk`,`w`.`name` AS `warehouse`,`i`.`longName` AS `longName`,`i`.`subName` AS `subName`,`e`.`id` AS `entryFk`,`b`.`stickers` AS `stickers`,`b`.`packing` AS `packing`,`e`.`invoiceNumber` AS `ref`,`b`.`itemFk` AS `itemFk`,`ek`.`pro` AS `pro`,`ek`.`ref` AS `ektRef`,`ek`.`agj` AS `agj` from (((((`vn`.`buy` `b` join `vn`.`entry` `e` on(`e`.`id` = `b`.`entryFk`)) join `vn`.`item` `i` on(`i`.`id` = `b`.`itemFk`)) join `vn`.`travel` `tr` on(`tr`.`id` = `e`.`travelFk`)) join `vn`.`warehouse` `w` on(`w`.`id` = `tr`.`warehouseInFk`)) left join `edi`.`ekt` `ek` on(`ek`.`id` = `b`.`ektFk`)) where `tr`.`landed` between `util`.`yesterday`() and `util`.`tomorrow`() and `tr`.`isRaid` = 0 and `b`.`stickers` > 0 */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -88396,7 +88553,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `workerWithoutTractor` AS select `c`.`workerFk` AS `workerFk`,`cl`.`name` AS `Trabajador`,count(distinct `c`.`id`) AS `Colecciones`,max(`c`.`created`) AS `created` from ((`collection` `c` join `client` `cl` on(`cl`.`id` = `c`.`workerFk`)) left join `machineWorker` `mw` on(`mw`.`workerFk` = `c`.`workerFk` and `mw`.`inTimed` > `util`.`VN_CURDATE`())) where `c`.`created` > `util`.`VN_CURDATE`() and `mw`.`workerFk` is null group by `c`.`workerFk` */;
+/*!50001 VIEW `workerWithoutTractor` AS select `c`.`workerFk` AS `workerFk`,`cl`.`name` AS `Trabajador`,count(distinct `c`.`id`) AS `Colecciones`,max(`c`.`created`) AS `created` from ((`collection` `c` join `client` `cl` on(`cl`.`id` = `c`.`workerFk`)) join `operator` `o` on(`o`.`workerFk` = `c`.`workerFk`)) where `c`.`created` > `util`.`VN_CURDATE`() and `o`.`machineFk` is null group by `c`.`workerFk` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -88636,25 +88793,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `Entradas` AS select `e`.`id` AS `Id_Entrada`,`e`.`supplierFk` AS `Id_Proveedor`,`e`.`invoiceNumber` AS `Referencia`,`e`.`reference` AS `reference`,`e`.`isExcludedFromAvailable` AS `Inventario`,`e`.`isConfirmed` AS `Confirmada`,`e`.`isOrdered` AS `Pedida`,`e`.`isRaid` AS `Redada`,`e`.`commission` AS `comision`,`e`.`created` AS `odbc_date`,`e`.`evaNotes` AS `Notas_Eva`,`e`.`travelFk` AS `travel_id`,`e`.`currencyFk` AS `Id_Moneda`,`e`.`companyFk` AS `empresa_id`,`e`.`gestDocFk` AS `gestdoc_id`,`e`.`invoiceInFk` AS `recibida_id`,`e`.`dated` AS `Fecha`,`e`.`isBooked` AS `Anotadoencaja`,`e`.`loadPriority` AS `loadPriority`,`e`.`sub` AS `sub`,`e`.`kop` AS `kop`,`e`.`pro` AS `pro`,`e`.`invoiceAmount` AS `invoiceAmount`,`e`.`buyerFk` AS `buyerFk`,`e`.`typeFk` AS `typeFk` from `vn`.`entry` `e` */;
-/*!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 `Entradas_Auto`
---
-
-/*!50001 DROP VIEW IF EXISTS `Entradas_Auto`*/;
-/*!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 `Entradas_Auto` AS select `ev`.`entryFk` AS `Id_Entrada` from `vn`.`entryVirtual` `ev` */;
+/*!50001 VIEW `Entradas` AS select `e`.`id` AS `Id_Entrada`,`e`.`supplierFk` AS `Id_Proveedor`,`e`.`invoiceNumber` AS `Referencia`,`e`.`reference` AS `reference`,`e`.`isExcludedFromAvailable` AS `Inventario`,`e`.`isConfirmed` AS `Confirmada`,`e`.`isOrdered` AS `Pedida`,`e`.`commission` AS `comision`,`e`.`created` AS `odbc_date`,`e`.`evaNotes` AS `Notas_Eva`,`e`.`travelFk` AS `travel_id`,`e`.`currencyFk` AS `Id_Moneda`,`e`.`companyFk` AS `empresa_id`,`e`.`gestDocFk` AS `gestdoc_id`,`e`.`invoiceInFk` AS `recibida_id`,`e`.`dated` AS `Fecha`,`e`.`isBooked` AS `Anotadoencaja`,`e`.`loadPriority` AS `loadPriority`,`e`.`sub` AS `sub`,`e`.`kop` AS `kop`,`e`.`pro` AS `pro`,`e`.`invoiceAmount` AS `invoiceAmount`,`e`.`buyerFk` AS `buyerFk`,`e`.`typeFk` AS `typeFk` from `vn`.`entry` `e` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -88960,7 +89099,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `Rutas` AS select `r`.`id` AS `Id_Ruta`,`r`.`workerFk` AS `Id_Trabajador`,`r`.`created` AS `Fecha`,`r`.`vehicleFk` AS `Id_Vehiculo`,`r`.`agencyModeFk` AS `Id_Agencia`,`r`.`time` AS `Hora`,`r`.`isOk` AS `ok`,`r`.`kmStart` AS `km_start`,`r`.`kmEnd` AS `km_end`,`r`.`started` AS `date_start`,`r`.`finished` AS `date_end`,`r`.`gestdocFk` AS `gestdoc_id`,`r`.`cost` AS `cost`,`r`.`m3` AS `m3`,`r`.`description` AS `description` from `vn`.`route` `r` */;
+/*!50001 VIEW `Rutas` AS select `r`.`id` AS `Id_Ruta`,`r`.`workerFk` AS `Id_Trabajador`,`r`.`dated` AS `Fecha`,`r`.`vehicleFk` AS `Id_Vehiculo`,`r`.`agencyModeFk` AS `Id_Agencia`,`r`.`time` AS `Hora`,`r`.`isOk` AS `ok`,`r`.`kmStart` AS `km_start`,`r`.`kmEnd` AS `km_end`,`r`.`started` AS `date_start`,`r`.`finished` AS `date_end`,`r`.`gestdocFk` AS `gestdoc_id`,`r`.`cost` AS `cost`,`r`.`m3` AS `m3`,`r`.`description` AS `description` from `vn`.`route` `r` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89986,7 +90125,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `entrySource` AS select `e`.`gestDocFk` AS `gestdoc_id`,`e`.`id` AS `Id_Entrada`,`e`.`invoiceNumber` AS `invoiceNumber`,`e`.`reference` AS `reference`,`e`.`isExcludedFromAvailable` AS `Inventario`,`e`.`isConfirmed` AS `Confirmada`,`e`.`isOrdered` AS `Pedida`,`e`.`isRaid` AS `Redada`,`e`.`evaNotes` AS `notas`,`e`.`supplierFk` AS `Id_Proveedor`,`tr`.`shipped` AS `shipment`,`tr`.`landed` AS `landing`,`w2`.`name` AS `wh_in`,`w1`.`name` AS `wh_out`,`am`.`name` AS `Agencia`,`e`.`commission` AS `comision`,`tr`.`warehouseInFk` AS `warehouse_id`,`w1`.`id` AS `warehouse_id_out`,`e`.`isBooked` AS `anotadoencaja`,`e`.`invoiceInFk` AS `invoiceInFk`,`e`.`companyFk` AS `empresa_id`,`e`.`currencyFk` AS `Id_Moneda`,`tr`.`id` AS `TravelFk`,`e`.`sub` AS `sub`,`e`.`kop` AS `kop`,`e`.`pro` AS `pro`,`e`.`invoiceAmount` AS `invoiceAmount`,`w`.`code` AS `buyerCode`,`e`.`typeFk` AS `typeFk`,`w3`.`code` AS `observationWorkerCode` from (((((((`vn`.`entry` `e` left join `vn`.`travel` `tr` on(`e`.`travelFk` = `tr`.`id`)) left join `vn`.`agencyMode` `am` on(`am`.`id` = `tr`.`agencyModeFk`)) left join `vn`.`warehouse` `w1` on(`tr`.`warehouseOutFk` = `w1`.`id`)) left join `vn`.`warehouse` `w2` on(`tr`.`warehouseInFk` = `w2`.`id`)) left join `vn`.`supplier` `s` on(`e`.`supplierFk` = `s`.`id`)) left join `vn`.`worker` `w` on(`w`.`id` = `e`.`buyerFk`)) left join `vn`.`worker` `w3` on(`w3`.`id` = `e`.`observationEditorFk`)) */;
+/*!50001 VIEW `entrySource` AS select `e`.`gestDocFk` AS `gestdoc_id`,`e`.`id` AS `Id_Entrada`,`e`.`invoiceNumber` AS `invoiceNumber`,`e`.`reference` AS `reference`,`e`.`isExcludedFromAvailable` AS `Inventario`,`e`.`isConfirmed` AS `Confirmada`,`e`.`isOrdered` AS `Pedida`,`tr`.`isRaid` AS `isRaid`,`tr`.`daysInForward` AS `daysInForward`,`e`.`evaNotes` AS `notas`,`e`.`supplierFk` AS `Id_Proveedor`,`tr`.`shipped` AS `shipment`,`tr`.`landed` AS `landing`,`w2`.`name` AS `wh_in`,`w1`.`name` AS `wh_out`,`am`.`name` AS `Agencia`,`e`.`commission` AS `comision`,`tr`.`warehouseInFk` AS `warehouse_id`,`w1`.`id` AS `warehouse_id_out`,`e`.`isBooked` AS `anotadoencaja`,`e`.`invoiceInFk` AS `invoiceInFk`,`e`.`companyFk` AS `empresa_id`,`e`.`currencyFk` AS `Id_Moneda`,`tr`.`id` AS `TravelFk`,`e`.`sub` AS `sub`,`e`.`kop` AS `kop`,`e`.`pro` AS `pro`,`e`.`invoiceAmount` AS `invoiceAmount`,`w`.`code` AS `buyerCode`,`e`.`typeFk` AS `typeFk`,`w3`.`code` AS `observationWorkerCode` from (((((((`vn`.`entry` `e` left join `vn`.`travel` `tr` on(`e`.`travelFk` = `tr`.`id`)) left join `vn`.`agencyMode` `am` on(`am`.`id` = `tr`.`agencyModeFk`)) left join `vn`.`warehouse` `w1` on(`tr`.`warehouseOutFk` = `w1`.`id`)) left join `vn`.`warehouse` `w2` on(`tr`.`warehouseInFk` = `w2`.`id`)) left join `vn`.`supplier` `s` on(`e`.`supplierFk` = `s`.`id`)) left join `vn`.`worker` `w` on(`w`.`id` = `e`.`buyerFk`)) left join `vn`.`worker` `w3` on(`w3`.`id` = `e`.`observationEditorFk`)) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -90706,7 +90845,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `travel` AS select `t`.`id` AS `id`,`t`.`shipped` AS `shipment`,`t`.`shipmentHour` AS `shipment_hour`,`t`.`landed` AS `landing`,`t`.`landingHour` AS `landing_hour`,`t`.`warehouseInFk` AS `warehouse_id`,`t`.`warehouseOutFk` AS `warehouse_id_out`,`t`.`agencyModeFk` AS `agency_id`,`t`.`ref` AS `ref`,`t`.`isDelivered` AS `delivered`,`t`.`isReceived` AS `received`,`t`.`m3` AS `m3`,`t`.`kg` AS `kg`,`t`.`cargoSupplierFk` AS `cargoSupplierFk`,`t`.`totalEntries` AS `totalEntries`,`t`.`appointment` AS `appointment`,`t`.`awbFk` AS `awbFk` from `vn`.`travel` `t` */;
+/*!50001 VIEW `travel` AS select `t`.`id` AS `id`,`t`.`shipped` AS `shipment`,`t`.`shipmentHour` AS `shipment_hour`,`t`.`landed` AS `landing`,`t`.`landingHour` AS `landing_hour`,`t`.`warehouseInFk` AS `warehouse_id`,`t`.`warehouseOutFk` AS `warehouse_id_out`,`t`.`agencyModeFk` AS `agency_id`,`t`.`ref` AS `ref`,`t`.`isDelivered` AS `delivered`,`t`.`isReceived` AS `received`,`t`.`m3` AS `m3`,`t`.`kg` AS `kg`,`t`.`cargoSupplierFk` AS `cargoSupplierFk`,`t`.`totalEntries` AS `totalEntries`,`t`.`appointment` AS `appointment`,`t`.`awbFk` AS `awbFk`,`t`.`isRaid` AS `isRaid`,`t`.`daysInForward` AS `daysInForward` from `vn`.`travel` `t` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -90742,7 +90881,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `v_compres` AS select `TP`.`Id_Tipo` AS `Familia`,`RN`.`id` AS `reino_id`,`C`.`Id_Compra` AS `Id_Compra`,`C`.`Id_Entrada` AS `Id_Entrada`,`C`.`Id_Article` AS `Id_Article`,`C`.`Cantidad` AS `Cantidad`,`C`.`Costefijo` AS `Costefijo`,`C`.`Portefijo` AS `Portefijo`,`C`.`Novincular` AS `Novincular`,`C`.`Etiquetas` AS `Etiquetas`,`C`.`Packing` AS `Packing`,`C`.`grouping` AS `grouping`,`C`.`Comisionfija` AS `Comisionfija`,`C`.`Embalajefijo` AS `Embalajefijo`,`C`.`Id_Cubo` AS `Id_Cubo`,`C`.`Tarifa1` AS `Tarifa1`,`C`.`Tarifa2` AS `Tarifa2`,`C`.`Tarifa3` AS `Tarifa3`,`C`.`PVP` AS `PVP`,`C`.`Vida` AS `Vida`,`C`.`Id_Trabajador` AS `Id_Trabajador`,`C`.`punteo` AS `punteo`,`C`.`odbc_date` AS `odbc_date`,`E`.`Inventario` AS `Inventario`,`E`.`Id_Proveedor` AS `Id_Proveedor`,`E`.`Fecha` AS `Fecha`,`E`.`Confirmada` AS `Confirmada`,`E`.`Redada` AS `Redada`,`E`.`empresa_id` AS `empresa_id`,`E`.`travel_id` AS `travel_id`,`E`.`Pedida` AS `Pedida`,`E`.`recibida_id` AS `recibida_id`,`TR`.`id` AS `id`,`TR`.`shipment` AS `shipment`,`TR`.`landing` AS `landing`,`TR`.`warehouse_id` AS `warehouse_id`,`TR`.`warehouse_id_out` AS `warehouse_id_out`,`TR`.`agency_id` AS `agency_id`,`TR`.`ref` AS `ref`,`TR`.`delivered` AS `delivered`,`TR`.`received` AS `received`,`A`.`Article` AS `Article`,`A`.`Medida` AS `Medida`,`A`.`Tallos` AS `Tallos`,`C`.`caja` AS `caja`,`A`.`Categoria` AS `Categoria`,`A`.`id_origen` AS `id_origen`,`TP`.`Id_Tipo` AS `Tipo`,`A`.`tipo_id` AS `tipo_id`,`A`.`Color` AS `Color`,`A`.`Min` AS `Min`,`C`.`Costefijo` + `C`.`Embalajefijo` + `C`.`Comisionfija` + `C`.`Portefijo` AS `Coste`,`W_OUT`.`isFeedStock` AS `fuente`,if(`cb`.`Volumen` > 0,`cb`.`Volumen`,`cb`.`X` * `cb`.`Y` * if(`cb`.`Z` = 0,`A`.`Medida` + 10,`cb`.`Z`)) * `C`.`Etiquetas` AS `cm3`,`A`.`producer_id` AS `producer_id` from ((((((((`vn2008`.`Compres` `C` join `vn2008`.`Entradas` `E` on(`C`.`Id_Entrada` = `E`.`Id_Entrada`)) join `vn2008`.`travel` `TR` on(`TR`.`id` = `E`.`travel_id`)) join `vn`.`warehouse` `W_IN` on(`W_IN`.`id` = `TR`.`warehouse_id`)) join `vn`.`warehouse` `W_OUT` on(`W_OUT`.`id` = `TR`.`warehouse_id_out`)) join `vn2008`.`Articles` `A` on(`C`.`Id_Article` = `A`.`Id_Article`)) join `vn2008`.`Tipos` `TP` on(`A`.`tipo_id` = `TP`.`tipo_id`)) join `vn2008`.`reinos` `RN` on(`RN`.`id` = `TP`.`reino_id`)) join `vn2008`.`Cubos` `cb` on(`cb`.`Id_Cubo` = `C`.`Id_Cubo`)) where `W_IN`.`isFeedStock` = 0 and `E`.`Inventario` = 0 and `E`.`Redada` = 0 */;
+/*!50001 VIEW `v_compres` AS select `TP`.`Id_Tipo` AS `Familia`,`RN`.`id` AS `reino_id`,`C`.`Id_Compra` AS `Id_Compra`,`C`.`Id_Entrada` AS `Id_Entrada`,`C`.`Id_Article` AS `Id_Article`,`C`.`Cantidad` AS `Cantidad`,`C`.`Costefijo` AS `Costefijo`,`C`.`Portefijo` AS `Portefijo`,`C`.`Novincular` AS `Novincular`,`C`.`Etiquetas` AS `Etiquetas`,`C`.`Packing` AS `Packing`,`C`.`grouping` AS `grouping`,`C`.`Comisionfija` AS `Comisionfija`,`C`.`Embalajefijo` AS `Embalajefijo`,`C`.`Id_Cubo` AS `Id_Cubo`,`C`.`Tarifa1` AS `Tarifa1`,`C`.`Tarifa2` AS `Tarifa2`,`C`.`Tarifa3` AS `Tarifa3`,`C`.`PVP` AS `PVP`,`C`.`Vida` AS `Vida`,`C`.`Id_Trabajador` AS `Id_Trabajador`,`C`.`punteo` AS `punteo`,`C`.`odbc_date` AS `odbc_date`,`E`.`Inventario` AS `Inventario`,`E`.`Id_Proveedor` AS `Id_Proveedor`,`E`.`Fecha` AS `Fecha`,`E`.`Confirmada` AS `Confirmada`,`E`.`empresa_id` AS `empresa_id`,`E`.`travel_id` AS `travel_id`,`E`.`Pedida` AS `Pedida`,`E`.`recibida_id` AS `recibida_id`,`TR`.`id` AS `id`,`TR`.`shipment` AS `shipment`,`TR`.`landing` AS `landing`,`TR`.`warehouse_id` AS `warehouse_id`,`TR`.`warehouse_id_out` AS `warehouse_id_out`,`TR`.`agency_id` AS `agency_id`,`TR`.`ref` AS `ref`,`TR`.`delivered` AS `delivered`,`TR`.`received` AS `received`,`A`.`Article` AS `Article`,`A`.`Medida` AS `Medida`,`A`.`Tallos` AS `Tallos`,`C`.`caja` AS `caja`,`A`.`Categoria` AS `Categoria`,`A`.`id_origen` AS `id_origen`,`TP`.`Id_Tipo` AS `Tipo`,`A`.`tipo_id` AS `tipo_id`,`A`.`Color` AS `Color`,`A`.`Min` AS `Min`,`C`.`Costefijo` + `C`.`Embalajefijo` + `C`.`Comisionfija` + `C`.`Portefijo` AS `Coste`,`W_OUT`.`isFeedStock` AS `fuente`,if(`cb`.`Volumen` > 0,`cb`.`Volumen`,`cb`.`X` * `cb`.`Y` * if(`cb`.`Z` = 0,`A`.`Medida` + 10,`cb`.`Z`)) * `C`.`Etiquetas` AS `cm3`,`A`.`producer_id` AS `producer_id` from ((((((((`vn2008`.`Compres` `C` join `vn2008`.`Entradas` `E` on(`C`.`Id_Entrada` = `E`.`Id_Entrada`)) join `vn2008`.`travel` `TR` on(`TR`.`id` = `E`.`travel_id`)) join `vn`.`warehouse` `W_IN` on(`W_IN`.`id` = `TR`.`warehouse_id`)) join `vn`.`warehouse` `W_OUT` on(`W_OUT`.`id` = `TR`.`warehouse_id_out`)) join `vn2008`.`Articles` `A` on(`C`.`Id_Article` = `A`.`Id_Article`)) join `vn2008`.`Tipos` `TP` on(`A`.`tipo_id` = `TP`.`tipo_id`)) join `vn2008`.`reinos` `RN` on(`RN`.`id` = `TP`.`reino_id`)) join `vn2008`.`Cubos` `cb` on(`cb`.`Id_Cubo` = `C`.`Id_Cubo`)) where `W_IN`.`isFeedStock` = 0 and `E`.`Inventario` = 0 and `TR`.`isRaid` = 0 */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -90810,4 +90949,4 @@ USE `vn2008`;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-11-12 7:06:20
+-- Dump completed on 2024-12-10 8:17:51
diff --git a/db/dump/.dump/triggers.sql b/db/dump/.dump/triggers.sql
index 7152187bb..3299aea37 100644
--- a/db/dump/.dump/triggers.sql
+++ b/db/dump/.dump/triggers.sql
@@ -867,17 +867,17 @@ BEGIN
UPDATE vn.buy b
JOIN vn.entry e ON e.id = b.entryFk
- JOIN vn.travel tr ON tr.id = e.travelFk
- JOIN vn.agencyMode am ON am.id = tr.agencyModeFk
+ JOIN vn.travel tr ON tr.id = e.travelFk
+ JOIN vn.agencyMode am ON am.id = tr.agencyModeFk
JOIN vn.item i ON i.id = b.itemFk
JOIN edi.supplyResponse sr ON i.supplyResponseFk = sr.ID
SET b.quantity = NEW.NumberOfItemsPerCask * NEW.NumberOfUnits,
b.stickers = NEW.NumberOfUnits
WHERE i.supplyResponseFk = NEW.ID
AND am.name = 'LOGIFLORA'
- AND e.isRaid
+ AND tr.isRaid
AND tr.landed >= util.VN_CURDATE();
-
+
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -1460,6 +1460,9 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
+ IF NEW.`property` = '*' THEN
+ CALL util.throw('The property field cannot be *');
+ END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -2000,6 +2003,7 @@ BEGIN
DECLARE vIsEqualizated BOOL;
SET NEW.editorFk = account.myUser_getId();
+ SET NEW.geoFk = address_getGeo(NEW.id);
IF (NEW.phone <> '') THEN
CALL pbx.phone_isValid(NEW.phone);
@@ -2036,7 +2040,6 @@ DELIMITER ;;
BEFORE UPDATE ON `address`
FOR EACH ROW
BEGIN
-
SET NEW.editorFk = account.myUser_getId();
IF !(NEW.phone <=> OLD.phone) AND (NEW.phone <> '') THEN
@@ -2047,6 +2050,11 @@ BEGIN
CALL pbx.phone_isValid(NEW.mobile);
END IF;
+ IF NOT (NEW.provinceFk <=> OLD.provinceFk)
+ OR (NEW.postalCode <=> OLD.postalCode) THEN
+
+ SET NEW.geoFk = address_getGeo(NEW.id);
+ END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -3423,8 +3431,10 @@ DELIMITER ;;
BEFORE INSERT ON `client`
FOR EACH ROW
BEGIN
-
SET NEW.editorFk = account.myUser_getId();
+ SET NEW.accountingAccount = 4300000000 + NEW.id;
+ SET NEW.lastSalesPersonFk = NEW.salesPersonFk;
+ SET NEW.geoFk = client_getGeo(NEW.id);
IF (NEW.phone <> '') THEN
CALL pbx.phone_isValid(NEW.phone);
@@ -3433,10 +3443,6 @@ BEGIN
IF (NEW.mobile <> '') THEN
CALL pbx.phone_isValid(NEW.mobile);
END IF;
-
- SET NEW.accountingAccount = 4300000000 + NEW.id;
-
- SET NEW.lastSalesPersonFk = NEW.salesPersonFk;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -3550,6 +3556,12 @@ BEGIN
IF NOT (NEW.businessTypeFk <=> OLD.businessTypeFk) AND (NEW.businessTypeFk = 'individual' OR OLD.businessTypeFk = 'individual') THEN
SET NEW.isTaxDataChecked = 0;
END IF;
+
+ IF NOT (NEW.provinceFk <=> OLD.provinceFk)
+ OR (NEW.postcode <=> OLD.postcode) THEN
+
+ SET NEW.geoFk = client_getGeo(NEW.id);
+ END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -4960,7 +4972,7 @@ DELIMITER ;;
BEFORE UPDATE ON `entry`
FOR EACH ROW
BEGIN
- DECLARE vIsVirtual BOOL;
+ DECLARE vIsRaid BOOL;
DECLARE vPrintedCount INT;
DECLARE vHasDistinctWarehouses BOOL;
DECLARE vTotalBuy INT;
@@ -4994,18 +5006,20 @@ BEGIN
IF NEW.travelFk IS NOT NULL THEN
CALL travel_throwAwb(NEW.travelFk);
END IF;
-
- SELECT COUNT(*) > 0 INTO vIsVirtual
- FROM entryVirtual WHERE entryFk = NEW.id;
+
+ SELECT t.isRaid INTO vIsRaid
+ FROM travel t
+ JOIN entry e ON e.travelFk = t.id
+ WHERE e.id = NEW.id;
SELECT NOT (o.warehouseInFk <=> n.warehouseInFk)
- OR NOT (o.warehouseOutFk <=> n.warehouseOutFk)
+ OR NOT (o.warehouseOutFk <=> n.warehouseOutFk)
INTO vHasDistinctWarehouses
FROM travel o, travel n
WHERE o.id = OLD.travelFk
AND n.id = NEW.travelFk;
- IF vIsVirtual AND vHasDistinctWarehouses THEN
+ IF vIsRaid AND vHasDistinctWarehouses THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'A cloned entry cannot be moved to a travel with different warehouses';
END IF;
@@ -5028,7 +5042,7 @@ BEGIN
SET NEW.currencyFk = entry_getCurrency(NEW.currencyFk, NEW.supplierFk);
END IF;
- IF NOT (NEW.travelFk <=> OLD.travelFk)
+ IF NOT (NEW.travelFk <=> OLD.travelFk)
OR NOT (NEW.currencyFk <=> OLD.currencyFk)
OR NOT (NEW.supplierFk <=> OLD.supplierFk) THEN
@@ -5325,7 +5339,8 @@ BEGIN
SET packages = (SELECT COUNT(counter)-1
FROM expedition e WHERE e.ticketFk = OLD.ticketFk and e.freightItemFk)
WHERE t.id = OLD.ticketFk;
-
+
+ CALL expedition_selfConsumptionPackaging(OLD.id, 'remove');
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -6432,7 +6447,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND ic.itemFk = NEW.itemFk
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
IF NEW.cm3Delivery = 0 AND NEW.warehouseFk = 60 THEN
CALL mail_insert(
@@ -6531,36 +6546,6 @@ BEGIN
SET NEW.userFk = account.myUser_getId();
SET NEW.available = NEW.visible;
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_afterInsert`
- AFTER INSERT ON `itemShelving`
- FOR EACH ROW
-BEGIN
- INSERT INTO itemShelvingLog
- SET itemShelvingFk = NEW.id,
- workerFk = account.myUser_getId(),
- accion = 'CREA REGISTRO',
- itemFk = NEW.itemFk,
- shelvingFk = NEW.shelvingFk,
- visible = NEW.visible,
- `grouping` = NEW.`grouping`,
- packing = NEW.packing,
- available = NEW.available;
-
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -6604,63 +6589,6 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
-/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_afterUpdate`
- AFTER UPDATE ON `itemShelving`
- FOR EACH ROW
-BEGIN
- INSERT INTO itemShelvingLog
- SET itemShelvingFk = NEW.id,
- workerFk = account.myUser_getId(),
- accion = 'CAMBIO',
- itemFk = NEW.itemFk,
- shelvingFk = NEW.shelvingFk,
- visible = NEW.visible,
- `grouping` = NEW.`grouping`,
- packing = NEW.packing,
- available = NEW.available;
-
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_beforeDelete`
- BEFORE DELETE ON `itemShelving`
- FOR EACH ROW
-INSERT INTO vn.itemShelvingLog(itemShelvingFk,
- workerFk,
- accion,
- shelvingFk,
- itemFk)
- VALUES( OLD.id,
- account.myUser_getId(),
- 'ELIMINADO',
- OLD.shelvingFk,
- OLD.itemFk) */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_afterDelete`
AFTER DELETE ON `itemShelving`
FOR EACH ROW
@@ -6909,10 +6837,31 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemType_beforeInsert`
+ BEFORE INSERT ON `itemType`
+ 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=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemType_beforeUpdate`
BEFORE UPDATE ON `itemType`
FOR EACH ROW
BEGIN
+ SET NEW.editorFk = account.myUser_getId();
IF NEW.itemPackingTypeFk = '' THEN
SET NEW.itemPackingTypeFk = NULL;
@@ -6939,6 +6888,30 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemType_afterDelete`
+ AFTER DELETE ON `itemType`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO itemTypeLog
+ SET `action` = 'delete',
+ `changedModel` = 'ItemType',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!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=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`machine_beforeInsert`
BEFORE INSERT ON `machine`
FOR EACH ROW
@@ -7584,7 +7557,7 @@ DELIMITER ;;
AFTER DELETE ON `productionConfig`
FOR EACH ROW
BEGIN
- INSERT INTO productionConfig
+ INSERT INTO productionConfigLog
SET `action` = 'delete',
`changedModel` = 'ProductionConfig',
`changedModelId` = OLD.id,
@@ -8078,7 +8051,7 @@ BEGIN
SELECT IFNULL(b.workCenterFK, r.defaultWorkCenterFk)
FROM vn.routeConfig r
LEFT JOIN vn.business b ON b.workerFk = vUserFk
- AND NEW.created BETWEEN b.started AND IFNULL(b.ended, NEW.created));
+ AND NEW.dated BETWEEN b.started AND IFNULL(b.ended, NEW.dated));
IF ISNULL(NEW.agencyModeFk) THEN
SELECT r.agencyModeFk INTO vDefaultAgencyModeFk
@@ -8168,18 +8141,18 @@ DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`route_afterUpdate`
AFTER UPDATE ON `route`
FOR EACH ROW
-BEGIN
+BEGIN
IF IFNULL(NEW.gestdocFk,0) <> IFNULL(OLD.gestdocFk,0) AND NEW.gestdocFk > 0 THEN
-- JGF 09/09/14 cuando se añade un gestdoc a una ruta, se le asigna automagicamente a todos sus Tickets
-
+
-- Inserta el gestdoc en todos los tickets de la ruta
INSERT INTO ticketDms(ticketFk,dmsFk)
SELECT id, NEW.gestdocFk FROM ticket WHERE routeFk = NEW.id
ON DUPLICATE KEY UPDATE dmsFk = NEW.gestdocFk;
- -- Update del firmado
- UPDATE ticket t
- JOIN ticketDms tg ON t.id = tg.ticketFk
+ -- Update del firmado
+ UPDATE ticket t
+ JOIN ticketDms tg ON t.id = tg.ticketFk
SET isSigned = 1 WHERE t.routeFk = NEW.id;
END IF;
@@ -8187,7 +8160,8 @@ BEGIN
OR !(NEW.kmEnd <=> OLD.kmEnd)
OR !(NEW.workerFk <=> OLD.workerFk)
OR !(NEW.m3 <=> OLD.m3)
- OR !(NEW.agencyModeFk <=> OLD.agencyModeFk)THEN
+ OR !(NEW.agencyModeFk <=> OLD.agencyModeFk)
+ OR !(NEW.vehicleFk <=> OLD.vehicleFk)THEN
CALL route_calcCommission(NEW.id);
END IF;
@@ -8339,7 +8313,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND s.id = NEW.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
END IF;
END */;;
@@ -8447,7 +8421,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND s.id = NEW.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
END IF;
@@ -8489,7 +8463,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND s.id = OLD.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
END IF;
END */;;
@@ -9086,6 +9060,7 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
+ SET NEW.geoFk = supplier_getGeo(NEW.id);
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -9180,6 +9155,11 @@ BEGIN
SET NEW.isPayMethodChecked = FALSE;
END IF;
+ IF NOT (NEW.provinceFk <=> OLD.provinceFk)
+ OR (NEW.postCode <=> OLD.postCode) THEN
+
+ SET NEW.geoFk = supplier_getGeo(NEW.id);
+ END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -9590,7 +9570,7 @@ BEGIN
FROM `route`
WHERE NOT isOk
AND id IN (OLD.routeFk, NEW.routeFk)
- AND created >= util.VN_CURDATE()
+ AND dated >= util.VN_CURDATE()
GROUP BY id;
END IF;
@@ -9613,7 +9593,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND t.id = NEW.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
SET NEW.shipped = DATE_FORMAT(NEW.shipped, '2000-%m-%d %T');
SET NEW.landed = DATE_FORMAT(NEW.landed, '2000-%m-%d %T');
@@ -9692,7 +9672,7 @@ BEGIN
FROM vn.route r
WHERE r.isOk = FALSE
AND r.id = OLD.routeFk
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
DELETE FROM sale WHERE ticketFk = OLD.id;
@@ -10501,28 +10481,6 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
-/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`town_beforeUpdate`
- BEFORE UPDATE ON `town`
- FOR EACH ROW
-BEGIN
- -- IF !(OLD.geoFk <=> NEW.geoFk) THEN
- -- CALL zoneGeo_throwNotEditable;
- -- END IF;
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb4 */ ;
-/*!50003 SET character_set_results = utf8mb4 */ ;
-/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`town_afterUpdate`
AFTER UPDATE ON `town`
FOR EACH ROW
@@ -10580,7 +10538,11 @@ BEGIN
CALL travel_checkDates(NEW.shipped, NEW.landed);
CALL travel_checkWarehouseIsFeedStock(NEW.warehouseInFk);
-
+
+ IF NEW.isRaid IS NOT NULL OR NEW.daysInForward IS NOT NULL THEN
+ CALL travel_checkRaid(NEW.isRaid, NEW.daysInForward);
+ END IF;
+
IF NEW.awbFk IS NOT NULL THEN
CALL travel_throwAwb(NEW.id);
END IF;
@@ -10607,7 +10569,7 @@ BEGIN
SET NEW.editorFk = account.myUser_getId();
- IF NOT (NEW.landed <=> OLD.landed)
+ IF NOT (NEW.landed <=> OLD.landed)
OR NOT (NEW.shipped <=> OLD.shipped) THEN
CALL travel_checkDates(NEW.shipped, NEW.landed);
END IF;
@@ -10621,18 +10583,18 @@ BEGIN
END IF;
IF NOT (NEW.awbFk <=> OLD.awbFk)THEN
- SELECT COUNT(*) INTO vHasAnyInvoiceBooked
+ SELECT COUNT(*) INTO vHasAnyInvoiceBooked
FROM travel t
- JOIN entry e ON e.travelFk = t.id
- JOIN invoiceIn ii ON ii.id = e.invoiceInFk
+ JOIN entry e ON e.travelFk = t.id
+ JOIN invoiceIn ii ON ii.id = e.invoiceInFk
WHERE t.id = NEW.id
- AND ii.isBooked;
-
+ AND ii.isBooked;
+
IF vHasAnyInvoiceBooked THEN
CALL util.throw('The travel has entries with booked invoices');
END IF;
- END IF;
-
+ END IF;
+
IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN
CALL travel_throwAwb(NEW.id);
END IF;
@@ -11526,4 +11488,4 @@ USE `vn2008`;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-11-12 7:06:44
+-- Dump completed on 2024-12-10 8:18:11
diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql
index e5d5f53dc..57a9f9ca8 100644
--- a/db/dump/fixtures.before.sql
+++ b/db/dump/fixtures.before.sql
@@ -428,10 +428,10 @@ INSERT INTO `vn`.`clientConfig`(`id`, `riskTolerance`, `maxCreditRows`, `maxPric
INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `phone`, `mobile`, `isActive`, `clientFk`, `agencyModeFk`, `longitude`, `latitude`, `isEqualizated`, `isDefaultAddress`)
VALUES
- (1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 1),
- (2, 'Petter Parker', '20 Ingram Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 1),
- (3, 'Clark Kent', '344 Clinton Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 1),
- (4, 'Tony Stark', '10880 Malibu Point', 'Gotham', 46460, 1, 1111111111, 222222222, 1 , 1104, 2, NULL, NULL, 0, 1),
+ (1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, -74.1111111, 10.1111111, 0, 1),
+ (2, 'Petter Parker', '20 Ingram Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, -74.2222222, 10.2222222, 0, 1),
+ (3, 'Clark Kent', '344 Clinton Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, -74.3333333, 10.3333333, 0, 1),
+ (4, 'Tony Stark', '10880 Malibu Point', 'Gotham', 46460, 1, 1111111111, 222222222, 1 , 1104, 2, -74.4444444, 10.4444444, 0, 1),
(5, 'Max Eisenhardt', 'Unknown Whereabouts', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 1),
(6, 'DavidCharlesHaller', 'Evil hideout', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 1),
(7, 'Hank Pym', 'Anthill', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 1),
@@ -462,7 +462,7 @@ INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `pr
(120, 'Somewhere in Montortal', 'address 20', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
(121, 'the bat cave', 'address 21', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 0),
(122, 'NY roofs', 'address 22', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 0),
- (123, 'The phone box', 'address 23', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 0),
+ (123, 'The phone box', 'address 23', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, -74.555555, 10.555555, 0, 0),
(124, 'Stark tower Gotham', 'address 24', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 0),
(125, 'The plastic cell', 'address 25', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 0),
(126, 'Many places', 'address 26', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 0),
@@ -745,15 +745,15 @@ INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`)
INSERT INTO `vn`.`zoneConfig` (`id`, `scope`) VALUES (1, '1');
-INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`)
+INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`, `dated`)
VALUES
- (1, '1899-12-30 12:15:00', 56, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1),
- (2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9),
- (3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10),
- (4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12),
- (5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13),
- (6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3),
- (7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5);
+ (1, '1899-12-30 12:15:00', 56, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()),
+ (2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE()),
+ (3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10, util.VN_CURDATE()),
+ (4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12, util.VN_CURDATE()),
+ (5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13, util.VN_CURDATE()),
+ (6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3, util.VN_CURDATE()),
+ (7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5, util.VN_CURDATE());
INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`, `problem`, `risk`)
VALUES
@@ -1520,17 +1520,18 @@ INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseO
INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed`, `companyFk`, `invoiceNumber`, `reference`, `isExcludedFromAvailable`, `evaNotes`, `typeFk`)
VALUES
- (1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'IN2001', 'Movement 1', 0, '', 'packaging'),
- (2, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 0, 442, 'IN2002', 'Movement 2', 0, 'observation two', 'product'),
+ (1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'IN2001', 'Movement 1', 0, '', 'packaging'),
+ (2, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 0, 442, 'IN2002', 'Movement 2', 0, 'observation two' , 'product'),
(3, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3, 0, 442, 'IN2003', 'Movement 3', 0, 'observation three', 'product'),
- (4, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 0, 69, 'IN2004', 'Movement 4', 0, 'observation four', 'product'),
- (5, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 0, 442, 'IN2005', 'Movement 5', 0, 'observation five', 'product'),
- (6, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 6, 0, 442, 'IN2006', 'Movement 6', 0, 'observation six', 'product'),
+ (4, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 0, 69, 'IN2004', 'Movement 4', 0, 'observation four' , 'product'),
+ (5, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 0, 442, 'IN2005', 'Movement 5', 0, 'observation five' , 'product'),
+ (6, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 6, 0, 442, 'IN2006', 'Movement 6', 0, 'observation six' , 'product'),
(7, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'IN2007', 'Movement 7', 0, 'observation seven', 'product'),
- (8, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'IN2008', 'Movement 8', 1, '', 'product'),
- (9, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 9', 1, '', 'product'),
- (10, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 10', 1, '', 'product'),
- (99, 69, util.VN_CURDATE() - INTERVAL 1 MONTH, 11, 0, 442, 'IN2009', 'Movement 99', 0, '', 'product');
+ (8, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'IN2008', 'Movement 8', 1, '', 'product'),
+ (9, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 9', 1, '', 'product'),
+ (10, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 10',1, '', 'product'),
+ (11, 4, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'IN2001', 'Movement 11',0, '', 'product'),
+ (99, 69, util.VN_CURDATE() - INTERVAL 1 MONTH, 11, 0, 442, 'IN2009', 'Movement 99',0, '', 'product');
INSERT INTO `vn`.`entryConfig` (`defaultEntry`, `inventorySupplierFk`, `defaultSupplierFk`)
VALUES (2, 4, 1);
@@ -1570,7 +1571,8 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal
(13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 4, util.VN_CURDATE()),
(14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 7.30, 7.00, 0, 1, 0, 4, util.VN_CURDATE()),
(15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()),
- (16, 99,1,50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, '2024-07-30 08:13:51.000');
+ (16, 99,1,50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, '2024-07-30 08:13:51.000'),
+ (17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH);
INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`,`total`, `date_make`, `first_row_stamp`, `confirm_date`)
VALUES
@@ -2040,7 +2042,7 @@ INSERT INTO `vn`.`ticketService`(`id`, `description`, `quantity`, `price`, `taxC
INSERT INTO `pbx`.`config` (id,defaultPrefix)
VALUES (1,'0034');
-INSERT INTO `pbx`.`prefix` (country, prefix)
+INSERT IGNORE INTO `pbx`.`prefix` (country, prefix)
VALUES
('es', '0034'),
('fr', '0033'),
@@ -3772,7 +3774,8 @@ VALUES
(999992, 18, 50, '2023-09-21', NULL, 1, NULL, 103, NULL),
(1000000, 18, 25, '2023-09-21', 25, 500, NULL, 103, NULL),
(999996, 19, 5, '2023-09-27', 1, 5, NULL, 103, NULL),
- (999997, 21, 10, '2023-09-27', 5, 100, NULL, 103, NULL);
+ (999997, 21, 10, '2023-09-27', 5, 100, NULL, 103, NULL),
+ (1000000, 16, 25, '2023-08-21',25, 500, NULL, NULL, NULL);
-- Previous for Bolas de madera
INSERT IGNORE INTO vn.sectorCollection
@@ -4026,10 +4029,18 @@ INSERT INTO srt.buffer (id, x, y, `size`, `length`, stateFk, typeFk, isActive, c
INSERT IGNORE INTO vn.saySimpleCountry (countryFk, channel)
VALUES (19, '1169'),
- (8, '1183');
+ (8, '1183'),
+ (1, '1320');
INSERT IGNORE INTO vn.saySimpleConfig (url, defaultChannel)
- VALUES ('saysimle-url-mock', 1320);
+ VALUES ('saysimle-url-mock', '1819');
INSERT INTO vn.workerIrpf (workerFk,spouseNif, geographicMobilityDate)
VALUES (1106,'26493101E','2019-09-20');
+
+INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance)
+ VALUES (1,'https://router.project-osrm.org', 0.002);
+
+INSERT IGNORE INTO vn.inventoryConfig
+ SET id = 1,
+ supplierFk = 4;
diff --git a/db/routines/bi/procedures/rutasAnalyze.sql b/db/routines/bi/procedures/rutasAnalyze.sql
index e277968bf..1f103bde0 100644
--- a/db/routines/bi/procedures/rutasAnalyze.sql
+++ b/db/routines/bi/procedures/rutasAnalyze.sql
@@ -19,14 +19,14 @@ BEGIN
bultos)
SELECT r.id,
r.agencyModeFk,
- r.created,
+ r.dated,
SUM(sv.volume / ebv.m3)
FROM vn.route r
JOIN vn.ticket t ON t.routeFk = r.id
LEFT JOIN vn.`zone` z ON z.id = t.zoneFk
JOIN vn.saleVolume sv ON sv.ticketFk = t.id
JOIN vn.expeditionBoxVol ebv ON ebv.code = 'transportBox'
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND z.isVolumetric
GROUP BY r.id;
@@ -38,12 +38,12 @@ BEGIN
Bultos)
SELECT r.id,
r.agencyModeFk,
- r.created,
+ r.dated,
SUM(t.packages)
FROM vn.route r
JOIN vn.ticket t ON t.routeFk = r.id
LEFT JOIN vn.`zone` z ON z.id = t.zoneFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND NOT z.isVolumetric
GROUP BY r.id
ON DUPLICATE KEY UPDATE Bultos = Bultos + VALUES(Bultos);
@@ -60,7 +60,7 @@ BEGIN
JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk
WHERE ct.code = 'freight'
- AND r.created BETWEEN vDatedFrom AND vDatedTo
+ AND r.dated BETWEEN vDatedFrom AND vDatedTo
GROUP BY r.id
) sub ON sub.routeFk = r.Id_Ruta
SET r.practico = IFNULL(sub.totalPractice / r.Bultos, 0);
@@ -77,7 +77,7 @@ BEGIN
JOIN vn.address ad ON ad.id = t.addressFk
JOIN vn.client c ON c.id = ad.clientFk
LEFT JOIN vn.`zone` z ON z.id = t.zoneFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND NOT z.isVolumetric
GROUP BY t.routeFk
) sub ON r.Id_Ruta = sub.routeFk
@@ -93,7 +93,7 @@ BEGIN
JOIN vn.saleVolume sf ON sf.ticketFk = t.id
JOIN vn.client c ON c.id = t.clientFk
JOIN vn.`zone` z ON z.id = t.zoneFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND z.isVolumetric
GROUP BY t.routeFk
) sub ON r.Id_Ruta = sub.routeFk
@@ -108,7 +108,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
JOIN vn.greuge g ON g.ticketFk = t.id
JOIN vn.greugeType gt ON gt.id = g.greugeTypeFk
- WHERE r.created BETWEEN vDatedFrom AND vDatedTo
+ WHERE r.dated BETWEEN vDatedFrom AND vDatedTo
AND gt.code = 'freightDifference'
GROUP BY t.routeFk
) sub ON r.Id_Ruta = sub.routeFk
diff --git a/db/routines/bi/views/rotacion.sql b/db/routines/bi/views/rotacion.sql
deleted file mode 100644
index 65a5db923..000000000
--- a/db/routines/bi/views/rotacion.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
- SQL SECURITY DEFINER
- VIEW `bi`.`rotacion`
-AS SELECT `ic`.`itemFk` AS `Id_Article`,
- `ic`.`warehouseFk` AS `warehouse_id`,
- `ic`.`quantity` AS `total`,
- `ic`.`rotation` AS `rotacion`,
- `ic`.`cm3` AS `cm3`,
- `ic`.`storage` AS `almacenaje`,
- `ic`.`handling` AS `manipulacion`,
- `ic`.`extraCharge` AS `auxiliar`,
- `ic`.`wasted` AS `mermas`,
- `ic`.`cm3delivery` AS `cm3reparto`,
- `ic`.`grams` AS `grams`
-FROM `vn`.`itemCost` `ic`
diff --git a/db/routines/sage/procedures/invoiceIn_add.sql b/db/routines/sage/procedures/invoiceIn_add.sql
index 1d411cfd0..76618ce50 100644
--- a/db/routines/sage/procedures/invoiceIn_add.sql
+++ b/db/routines/sage/procedures/invoiceIn_add.sql
@@ -25,7 +25,7 @@ BEGIN
DECLARE vIsInformativeExportation BOOL DEFAULT FALSE;
DECLARE vCursor CURSOR FOR
- SELECT it.taxableBase,
+ SELECT SUM(it.taxableBase),
CAST(SUM((( it.taxableBase / 100) * t.PorcentajeIva)) AS DECIMAL (10,2)),
t.PorcentajeIva,
it.transactionTypeSageFk,
@@ -204,17 +204,17 @@ BEGIN
FROM vn.invoiceInCorrection
WHERE correctingFk = vInvoiceInFk;
- IF vInvoiceInOriginalFk THEN
+ IF vInvoiceInOriginalFk THEN
UPDATE movContaIVA mci
JOIN vn.invoiceInRefund iir ON iir.invoiceInRefundFk = vInvoiceInFk
JOIN (SELECT issued,
- SUM(sub.taxableBase) taxableBase,
+ SUM(sub.taxableBase) taxableBase,
SUM(ROUND((sub.taxableBase * sub.PorcentajeIva) / 100 , 2)) vat
FROM(SELECT issued,
- SUM(iit.taxableBase) taxableBase,
+ SUM(iit.taxableBase) taxableBase,
ti.PorcentajeIva
- FROM vn.invoiceIn i
+ FROM vn.invoiceIn i
JOIN vn.invoiceInTax iit ON iit.invoiceInFk = i.id
JOIN sage.TiposIva ti ON ti.CodigoIva = iit.taxTypeSageFk
WHERE i.id = vInvoiceInOriginalFk
@@ -222,7 +222,7 @@ BEGIN
)invoiceInOriginal
JOIN ClavesOperacion co ON co.Descripcion = 'Factura rectificativa'
SET mci.TipoRectificativa = iir.refundCategoryFk,
- mci.ClaseAbonoRectificativas = iir.refundType,
+ mci.ClaseAbonoRectificativas = iir.refundType,
mci.FechaFacturaOriginal = invoiceInOriginal.issued,
mci.FechaOperacion = invoiceInOriginal.issued,
mci.BaseImponibleOriginal = invoiceInOriginal.taxableBase,
@@ -232,4 +232,4 @@ BEGIN
END IF;
END$$
-DELIMITER ;
\ No newline at end of file
+DELIMITER ;
diff --git a/db/routines/vn/functions/buy_getLastWithoutInventory.sql b/db/routines/vn/functions/buy_getLastWithoutInventory.sql
new file mode 100644
index 000000000..ac19fe416
--- /dev/null
+++ b/db/routines/vn/functions/buy_getLastWithoutInventory.sql
@@ -0,0 +1,32 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`buy_getLastWithoutInventory`(
+ vItemFk INT,
+ vWarehouseFk INT
+)
+ RETURNS int(11)
+ DETERMINISTIC
+BEGIN
+/**
+ * Retorna la última compra que no sea inventario.
+ *
+ * @param vItemFk Id del artículo
+ * @param vWarehouseFk Id del almacén
+ * @return Id de compra
+ */
+ DECLARE vBuyFk INT;
+
+ SELECT b.id INTO vBuyFk
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE e.id <> (SELECT defaultEntry FROM entryConfig)
+ AND e.supplierFk <> (SELECT supplierFk FROM inventoryConfig)
+ AND e.typeFk <> 'inventory'
+ AND b.itemFk = vItemFk
+ AND (t.warehouseInFk = vWarehouseFk OR t.warehouseInFk IS NULL)
+ ORDER BY ABS(DATEDIFF(util.VN_CURDATE(), t.landed)), e.created DESC
+ LIMIT 1;
+
+ RETURN vBuyFk;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/functions/entry_getCommission.sql b/db/routines/vn/functions/entry_getCommission.sql
index a4afdabd4..f8c1ce3b4 100644
--- a/db/routines/vn/functions/entry_getCommission.sql
+++ b/db/routines/vn/functions/entry_getCommission.sql
@@ -11,6 +11,7 @@ BEGIN
DECLARE vCurrentCommission INT;
DECLARE vIsNotEUR INT;
DECLARE vLastEntryFk INT;
+ DECLARE vLanded INT;
SELECT count(*) INTO vIsNotEUR
FROM currency c
@@ -26,23 +27,25 @@ BEGIN
RETURN IFNULL(vCommission, 0);
ELSE
+ SELECT landed INTO vLanded
+ FROM travel
+ WHERE id = vTravelFk;
+
SELECT e.id INTO vLastEntryFk
FROM `entry` e
JOIN travel tr ON tr.id = e.travelFk
- WHERE e.supplierFk = vSupplierFk
- ORDER BY tr.landed DESC
- LIMIT 1;
+ WHERE e.supplierFk = vSupplierFk
+ ORDER BY (vLanded <= tr.landed), tr.landed DESC
+ LIMIT 1;
IF vLastEntryFk THEN
SELECT commission INTO vCurrentCommission
FROM `entry`
WHERE id = vLastEntryFk;
-
ELSE
SELECT commission INTO vCurrentCommission
FROM supplier s
WHERE s.id = vSupplierFk;
-
END IF;
RETURN vCurrentCommission;
diff --git a/db/routines/vn/functions/routeProposal.sql b/db/routines/vn/functions/routeProposal.sql
index 14b626a39..70a1eaae4 100644
--- a/db/routines/vn/functions/routeProposal.sql
+++ b/db/routines/vn/functions/routeProposal.sql
@@ -26,7 +26,7 @@ BEGIN
JOIN cache.zoneAgencyFriendship zf ON zf.agencyModeFk = r.agencyModeFk
WHERE friendship >= vSignificativeFriendship
AND zf.zoneFk = vZoneFk
- AND r.created = vLanded
+ AND r.dated = vLanded
ORDER BY friendship;
-- Se eliminan aquellas que superan el volumen máximo
diff --git a/db/routines/vn/functions/routeProposal_beta.sql b/db/routines/vn/functions/routeProposal_beta.sql
index d6db4d361..f5c347a5b 100644
--- a/db/routines/vn/functions/routeProposal_beta.sql
+++ b/db/routines/vn/functions/routeProposal_beta.sql
@@ -26,7 +26,7 @@ BEGIN
JOIN cache.zoneAgencyFriendship zf ON zf.agencyModeFk = r.agencyModeFk
WHERE friendship >= vSignificativeFriendship
AND zf.zoneFk = vZoneFk
- AND r.created = vLanded
+ AND r.dated = vLanded
ORDER BY friendship;
-- Se eliminan aquellas que superan el volumen máximo
diff --git a/db/routines/vn/procedures/claimRatio_add.sql b/db/routines/vn/procedures/claimRatio_add.sql
index 8c3213644..5e2e66a8e 100644
--- a/db/routines/vn/procedures/claimRatio_add.sql
+++ b/db/routines/vn/procedures/claimRatio_add.sql
@@ -46,7 +46,7 @@ BEGIN
JOIN claimDestination cd ON cd.id = ce.claimDestinationFk
JOIN claim c ON c.id = ce.claimFk
JOIN claimState cs ON cs.id = c.claimStateFk
- WHERE cd.description NOT IN ('Bueno', 'Corregido')
+ WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim')
AND NOT ce.isGreuge
AND cs.code = 'resolved';
@@ -71,7 +71,7 @@ BEGIN
JOIN claimDestination cd ON cd.id = ce.claimDestinationFk
JOIN claim c ON c.id = ce.claimFk
JOIN claimState cs ON cs.id = c.claimStateFk
- WHERE cd.description NOT IN ('Bueno', 'Corregido')
+ WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim')
AND NOT ce.isGreuge
AND cs.code = 'resolved'
AND c.isChargedToMana;
@@ -82,7 +82,7 @@ BEGIN
JOIN claim c ON c.id = ce.claimFk
JOIN claimState cs ON cs.id = c.claimStateFk
SET ce.isGreuge = TRUE
- WHERE cd.description NOT IN ('Bueno', 'Corregido')
+ WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim')
AND NOT ce.isGreuge
AND cs.code = 'resolved';
@@ -161,7 +161,7 @@ BEGIN
JOIN claimDestination cd ON cd.id = ce.claimDestinationFk
JOIN claim c ON c.id = ce.claimFk
JOIN claimState cs ON cs.id = c.claimStateFk
- WHERE cd.description NOT IN ('Bueno', 'Corregido')
+ WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim')
AND cs.code = 'resolved'
AND c.ticketCreated >= util.VN_CURDATE() - INTERVAL 1 YEAR
GROUP BY c.clientFk
diff --git a/db/routines/vn/procedures/entry_splitByShelving.sql b/db/routines/vn/procedures/entry_splitByShelving.sql
index 3201900e6..f5de36098 100644
--- a/db/routines/vn/procedures/entry_splitByShelving.sql
+++ b/db/routines/vn/procedures/entry_splitByShelving.sql
@@ -23,12 +23,13 @@ BEGIN
LEAST(bb.stickers, FLOOR(ish.visible / ish.packing)) ishStickers,
bb.stickers buyStickers
FROM itemShelving ish
+ JOIN shelving sh ON sh.id = ish.shelvingFk
JOIN (SELECT b.id, b.itemFk, b.stickers
FROM buy b
WHERE b.entryFk = vFromEntryFk
ORDER BY b.stickers DESC
LIMIT 10000000000000000000) bb ON bb.itemFk = ish.itemFk
- WHERE ish.shelvingFk = vShelvingCode COLLATE utf8_general_ci
+ WHERE sh.code = vShelvingCode COLLATE utf8_general_ci
AND NOT ish.isSplit
GROUP BY ish.id;
diff --git a/db/routines/vn/procedures/expedition_getFromRoute.sql b/db/routines/vn/procedures/expedition_getFromRoute.sql
index 8c2ab057d..932f614b6 100644
--- a/db/routines/vn/procedures/expedition_getFromRoute.sql
+++ b/db/routines/vn/procedures/expedition_getFromRoute.sql
@@ -41,6 +41,6 @@ BEGIN
WHERE expeditionFk = e.id)
LEFT JOIN expeditionState es2 ON es2.id = es.id
WHERE t.routeFk = vRouteFk AND e.freightItemFk <> FALSE
- ORDER BY r.created, t.priority DESC;
+ ORDER BY r.dated, t.priority DESC;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql
index 43660f215..166ec476c 100644
--- a/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql
+++ b/db/routines/vn/procedures/expedition_selfConsumptionPackaging.sql
@@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_selfConsum
vSelf INT,
vAction ENUM('add', 'remove')
)
-BEGIN
+proc:BEGIN
/**
* Maneja el consumo de cajas para autoconsumo, permitiendo
* añadir o quitar cajas utilizadas según la acción indicada.
@@ -37,14 +37,14 @@ BEGIN
vWarehouseFk,
vCreated
FROM expedition e
- JOIN packaging p ON p.id = e.packagingFk
- JOIN item i ON i.id = p.itemFk
+ LEFT JOIN packaging p ON p.id = e.packagingFk
+ LEFT JOIN item i ON i.id = p.itemFk
JOIN ticket t ON t.id = e.ticketFk
JOIN productionConfig pc
WHERE e.id = vSelf;
- IF vClientFk IS NULL OR vAddressFk IS NULL THEN
- CALL util.throw('Some config parameters are not set');
+ IF vClientFk IS NULL OR vItemFk IS NULL THEN
+ LEAVE proc;
END IF;
SET vCreated = DATE(vCreated);
@@ -54,7 +54,9 @@ BEGIN
WHERE shipped BETWEEN vCreated AND util.dayEnd(vCreated)
AND clientFk = vClientFk
AND addressFk = vAddressFk
- AND warehouseFk = vWarehouseFk;
+ AND warehouseFk = vWarehouseFk
+ AND nickname = 'CAJAS AUTOCONSUMO'
+ LIMIT 1;
IF vTicketFk IS NULL AND vAction = 'add' THEN
INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk)
diff --git a/db/routines/vn/procedures/inventoryFailureAdd.sql b/db/routines/vn/procedures/inventoryFailureAdd.sql
deleted file mode 100644
index e2b5fa4a0..000000000
--- a/db/routines/vn/procedures/inventoryFailureAdd.sql
+++ /dev/null
@@ -1,48 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`inventoryFailureAdd`()
-BEGIN
-
-DECLARE done BOOL DEFAULT FALSE;
-DECLARE vTicketFk INT;
-
-DECLARE rs CURSOR FOR
- SELECT id FROM vn.ticket
- WHERE shipped = util.yesterday()
- AND clientFk = 400
- AND warehouseFk IN (1,44);
-
-DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-
-OPEN rs;
-
-FETCH rs INTO vTicketFk;
-
-WHILE NOT done DO
-
- INSERT INTO vn.inventoryFailure(dated, itemFk, quantity, value, warehouseFk, throwerFk)
- SELECT t.shipped,
- s.itemFk,
- s.quantity,
- b.buyingValue + b.freightValue + b.packageValue + b.comissionValue,
- t.warehouseFk,
- w.id
- FROM vn.ticket t
- JOIN vn.sale s ON s.ticketFk = t.id
- LEFT JOIN cache.last_buy lb ON lb.warehouse_id = t.warehouseFk AND item_id = s.itemFk
- LEFT JOIN vn.buy b ON b.id = lb.buy_id
- LEFT JOIN vn.worker w ON w.code = LEFT(s.concept, 3)
- WHERE t.id = vTicketFk
- AND s.quantity > 0;
-
- FETCH rs INTO vTicketFk;
-
-END WHILE;
-
-
-CLOSE rs;
-
-
-
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/itemShelvingLog_get.sql b/db/routines/vn/procedures/itemShelvingLog_get.sql
deleted file mode 100644
index 5a943e867..000000000
--- a/db/routines/vn/procedures/itemShelvingLog_get.sql
+++ /dev/null
@@ -1,36 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingLog_get`(
- vShelvingCode VARCHAR(10)
-)
-BEGIN
-/**
- * Devuelve el log de los item en cada carro
- *
- * @param vShelvingCode Matrícula del carro
- *
- */
- SELECT isl.itemShelvingFk,
- isl.created,
- isl.accion,
- isl.itemFk,
- isl.shelvingFk,
- isl.quantity,
- isl.visible,
- isl.available,
- isl.grouping,
- isl.packing,
- isl.stars,
- item.longName,
- item.size,
- item.subName,
- worker.code,
- isl.accion
- FROM item
- JOIN itemShelvingLog isl ON item.id = isl.itemFk
- JOIN worker ON isl.workerFk = worker.id
- JOIN shelving sh ON sh.id = isl.shelvingFk
- WHERE sh.code = vShelvingCode COLLATE utf8mb3_unicode_ci
- OR isl.itemFk = vShelvingCode -- ?? Respeto porque ya estaba
- ORDER BY isl.created DESC;
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/item_cleanFloramondo.sql b/db/routines/vn/procedures/item_cleanFloramondo.sql
index 849cfe93d..21d8ebe3c 100644
--- a/db/routines/vn/procedures/item_cleanFloramondo.sql
+++ b/db/routines/vn/procedures/item_cleanFloramondo.sql
@@ -164,10 +164,6 @@ BEGIN
SET itemFk = vItemNew
WHERE itemFk = vItemOld;
- UPDATE inventoryFailure
- SET itemFk = vItemNew
- WHERE itemFk = vItemOld;
-
UPDATE genericAllocation
SET itemFk = vItemNew
WHERE itemFk = vItemOld;
diff --git a/db/routines/vn/procedures/routeMonitor_calculate.sql b/db/routines/vn/procedures/routeMonitor_calculate.sql
index c9a7a9ccf..31667f211 100644
--- a/db/routines/vn/procedures/routeMonitor_calculate.sql
+++ b/db/routines/vn/procedures/routeMonitor_calculate.sql
@@ -27,7 +27,7 @@ BEGIN
rm.ticketFree = 0,
rm.ticketProduction = 0,
rm.ticketPacked = 0,
- rm.dated = r.created;
+ rm.dated = r.dated;
UPDATE routesMonitor rm
JOIN (
diff --git a/db/routines/vn/procedures/route_calcCommission.sql b/db/routines/vn/procedures/route_calcCommission.sql
index 47a256994..dc44adb9b 100644
--- a/db/routines/vn/procedures/route_calcCommission.sql
+++ b/db/routines/vn/procedures/route_calcCommission.sql
@@ -14,7 +14,7 @@ BEGIN
DECLARE vIsKmTruckRate BOOL;
DECLARE vCountryFk INT;
- SELECT r.created >= rc.cutoffDated INTO vIsUpdatable
+ SELECT r.dated >= rc.cutoffDated INTO vIsUpdatable
FROM route r
JOIN routeConfig rc
WHERE r.id = vSelf;
@@ -23,14 +23,15 @@ BEGIN
DELETE FROM routeCommission
WHERE routeFk = vSelf;
- SELECT w.isFreelance, v.isKmTruckRate, c.countryFk INTO vIsFreelance, vIsKmTruckRate, vCountryFk
+ SELECT w.isFreelance, v.isKmTruckRate, p.countryFk INTO vIsFreelance, vIsKmTruckRate, vCountryFk
FROM route r
JOIN worker w ON w.id = r.workerFk
JOIN vehicle v ON v.id = r.vehicleFk
LEFT JOIN ticket t ON t.routeFk = r.id
- LEFT JOIN client c ON c.id = t.clientFk
+ LEFT JOIN address a ON a.id = t.addressFk
+ LEFT JOIN province p ON p.id = a.provinceFk
WHERE r.id = vSelf
- GROUP BY c.countryFk
+ GROUP BY p.countryFk
ORDER BY COUNT(*) DESC
LIMIT 1;
@@ -68,7 +69,7 @@ BEGIN
FROM route r
JOIN vehicle v ON v.id = r.vehicleFk
JOIN routeConfig rc
- LEFT JOIN workCenterCommission wc ON wc.workCenter = r.workCenterFk
+ LEFT JOIN workCenterCommission wc ON wc.workCenterFk = r.commissionWorkCenterFk
WHERE r.id = vSelf
AND r.workerFk
AND r.commissionWorkCenterFk;
@@ -90,7 +91,9 @@ BEGIN
(r.kmEnd - r.kmStart) *
IF(v.isKmTruckRate, rc.kmHeavy, rc.kmLight),
IFNULL(r.m3, 0) *
- IF(v.isKmTruckRate, rc.deliveryM3Cat5, rc.deliveryM3Cat4),
+ IF(v.isKmTruckRate,
+ IFNULL(wc.deliveryM3Cat5, rc.deliveryM3Cat5),
+ IFNULL(wc.deliveryM3Cat4, rc.deliveryM3Cat4)),
(r.kmEnd - r.kmStart) * rc.kmYearly,
IFNULL(r.m3, 0) * rc.m3Yearly,
IFNULL(wc.distributionCat4M3, rc.distributionCat4M3) * IFNULL(r.m3, 0),
@@ -100,7 +103,7 @@ BEGIN
FROM route r
JOIN vehicle v ON v.id = r.vehicleFk
JOIN routeConfig rc
- LEFT JOIN workCenterCommission wc ON wc.workCenter = r.workCenterFk
+ LEFT JOIN workCenterCommission wc ON wc.workCenterFk = r.commissionWorkCenterFk
WHERE r.id = vSelf
AND r.kmStart
AND r.kmEnd
diff --git a/db/routines/vn/procedures/travel_checkRaid.sql b/db/routines/vn/procedures/travel_checkRaid.sql
index 64f3355e2..885fc718a 100644
--- a/db/routines/vn/procedures/travel_checkRaid.sql
+++ b/db/routines/vn/procedures/travel_checkRaid.sql
@@ -10,8 +10,8 @@ BEGIN
* @param vIsRaid idRaid value
* @param vDaysInForward daysInForward value
*/
- IF (NOT vIsRaid AND vDaysInForward IS NOT NULL) OR (vIsRaid AND vDaysInForward IS NULL) THEN
- CALL util.throw('The raid information is not correct');
+ IF NOT vIsRaid AND vDaysInForward THEN
+ CALL util.throw('If daysInForward has a value, the raid cannot be unchecked');
END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/travel_moveRaids.sql b/db/routines/vn/procedures/travel_moveRaids.sql
index cf0fce23c..17d7ecc4c 100644
--- a/db/routines/vn/procedures/travel_moveRaids.sql
+++ b/db/routines/vn/procedures/travel_moveRaids.sql
@@ -8,22 +8,15 @@ BEGIN
DECLARE vDone BOOL DEFAULT FALSE;
DECLARE vBuyerEmail VARCHAR(40);
DECLARE vTravelLink TEXT;
- DECLARE vMailBody TEXT DEFAULT '';
+ DECLARE vMailBody TEXT;
+ DECLARE vDaysBetweenDates INT;
+ DECLARE vSubject VARCHAR(30);
- DECLARE vCur CURSOR FOR
- SELECT GROUP_CONCAT(DISTINCT
- CONCAT('https://salix.verdnatura.es/#!/travel/',
- ttm.travelFk,
- '/summary ')
- ORDER BY ttm.travelFk SEPARATOR '\n\r') travelLink,
- CONCAT(u.name, '@verdnatura.es') buyerEmail
- FROM tTravelToMove ttm
- JOIN entry e ON e.travelFk = ttm.travelFk
- JOIN buy b ON b.entryFk = e.id
- JOIN item i ON i.id = b.itemFk
- JOIN itemType it ON it.id = i.typeFk
- JOIN account.user u ON u.id = it.workerFk
- GROUP BY u.name;
+ DECLARE vTravels CURSOR FOR
+ SELECT GROUP_CONCAT(DISTINCT travelLink ORDER BY id SEPARATOR '\n\r'),
+ buyerEmail
+ FROM tTravelToMove
+ GROUP BY buyerEmail;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
@@ -34,35 +27,50 @@ BEGIN
END;
CREATE OR REPLACE TEMPORARY TABLE tTravelToMove
- SELECT id travelFk,
- util.VN_CURDATE() + INTERVAL daysInForward DAY newLanded
- FROM travel
+ WITH travels AS (
+ SELECT id,
+ CONCAT('https://salix.verdnatura.es/#!/travel/', id,'/summary') travelLink,
+ util.VN_CURDATE() + INTERVAL daysInForward DAY newLanded,
+ util.VN_CURDATE() - INTERVAL DATEDIFF(landed, shipped) + daysInForward DAY newShipped
+ FROM vn.travel
WHERE isRaid
- AND daysInForward;
+ AND daysInForward
+ )SELECT t.id,
+ t.travelLink,
+ t.newLanded,
+ t.newShipped,
+ CONCAT(u.name, '@verdnatura.es') buyerEmail
+ FROM travels t
+ STRAIGHT_JOIN vn.entry e ON e.travelFk = t.id
+ JOIN vn.buy b ON b.entryFk = e.id
+ JOIN vn.item i ON i.id = b.itemFk
+ JOIN vn.itemType it ON it.id = i.typeFk
+ JOIN account.user u ON u.id = it.workerFk
+ GROUP BY t.id;
START TRANSACTION;
UPDATE travel tr
- JOIN tTravelToMove ttm ON ttm.travelFk = tr.id
- SET tr.landed = ttm.newLanded;
+ JOIN tTravelToMove ttm ON ttm.id = tr.id
+ SET tr.landed = ttm.newLanded,
+ tr.shipped = ttm.newShipped;
- OPEN vCur;
+ OPEN vTravels;
l: LOOP
SET vDone = FALSE;
- FETCH vCur INTO vTravelLink, vBuyerEmail;
+ FETCH vTravels INTO vTravelLink, vBuyerEmail;
IF vDone THEN
LEAVE l;
END IF;
- CALL `vn`.`mail_insert`(
- vBuyerEmail,
- 'noreply@verdnatura.es',
- 'Cambio de fecha en Redadas',
- CONCAT('Se ha movido los siguientes travels: \n\r ', vTravelLink));
+ SET vSubject = 'Cambio de fecha en Redadas',
+ vMailBody = CONCAT('Se ha movido los siguientes travels: \n\r ', vTravelLink);
+
+ CALL mail_insert(vBuyerEmail, 'noreply@verdnatura.es', vSubject, vMailBody);
END LOOP;
- CLOSE vCur;
+ CLOSE vTravels;
COMMIT;
DROP TEMPORARY TABLE tTravelToMove;
END$$
diff --git a/db/routines/vn/triggers/itemCost_beforeUpdate.sql b/db/routines/vn/triggers/itemCost_beforeUpdate.sql
index bd5fde85a..8de288a92 100644
--- a/db/routines/vn/triggers/itemCost_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemCost_beforeUpdate.sql
@@ -16,7 +16,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND ic.itemFk = NEW.itemFk
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
IF NEW.cm3Delivery = 0 AND NEW.warehouseFk = 60 THEN
CALL mail_insert(
diff --git a/db/routines/vn/triggers/itemShelving_afterInsert.sql b/db/routines/vn/triggers/itemShelving_afterInsert.sql
deleted file mode 100644
index 92243ca03..000000000
--- a/db/routines/vn/triggers/itemShelving_afterInsert.sql
+++ /dev/null
@@ -1,18 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_afterInsert`
- AFTER INSERT ON `itemShelving`
- FOR EACH ROW
-BEGIN
- INSERT INTO itemShelvingLog
- SET itemShelvingFk = NEW.id,
- workerFk = account.myUser_getId(),
- accion = 'CREA REGISTRO',
- itemFk = NEW.itemFk,
- shelvingFk = NEW.shelvingFk,
- visible = NEW.visible,
- `grouping` = NEW.`grouping`,
- packing = NEW.packing,
- available = NEW.available;
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/itemShelving_afterUpdate.sql b/db/routines/vn/triggers/itemShelving_afterUpdate.sql
deleted file mode 100644
index e5e63db43..000000000
--- a/db/routines/vn/triggers/itemShelving_afterUpdate.sql
+++ /dev/null
@@ -1,18 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_afterUpdate`
- AFTER UPDATE ON `itemShelving`
- FOR EACH ROW
-BEGIN
- INSERT INTO itemShelvingLog
- SET itemShelvingFk = NEW.id,
- workerFk = account.myUser_getId(),
- accion = 'CAMBIO',
- itemFk = NEW.itemFk,
- shelvingFk = NEW.shelvingFk,
- visible = NEW.visible,
- `grouping` = NEW.`grouping`,
- packing = NEW.packing,
- available = NEW.available;
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/itemShelving_beforeDelete.sql b/db/routines/vn/triggers/itemShelving_beforeDelete.sql
deleted file mode 100644
index 89737a841..000000000
--- a/db/routines/vn/triggers/itemShelving_beforeDelete.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_beforeDelete`
- BEFORE DELETE ON `itemShelving`
- FOR EACH ROW
-INSERT INTO vn.itemShelvingLog(itemShelvingFk,
- workerFk,
- accion,
- shelvingFk,
- itemFk)
- VALUES( OLD.id,
- account.myUser_getId(),
- 'ELIMINADO',
- OLD.shelvingFk,
- OLD.itemFk)$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/route_beforeInsert.sql b/db/routines/vn/triggers/route_beforeInsert.sql
index 788efe662..0afc9617e 100644
--- a/db/routines/vn/triggers/route_beforeInsert.sql
+++ b/db/routines/vn/triggers/route_beforeInsert.sql
@@ -14,7 +14,7 @@ BEGIN
SELECT IFNULL(b.workCenterFK, r.defaultWorkCenterFk)
FROM vn.routeConfig r
LEFT JOIN vn.business b ON b.workerFk = vUserFk
- AND NEW.created BETWEEN b.started AND IFNULL(b.ended, NEW.created));
+ AND NEW.dated BETWEEN b.started AND IFNULL(b.ended, NEW.dated));
IF ISNULL(NEW.agencyModeFk) THEN
SELECT r.agencyModeFk INTO vDefaultAgencyModeFk
diff --git a/db/routines/vn/triggers/sale_afterInsert.sql b/db/routines/vn/triggers/sale_afterInsert.sql
index f15b17722..1a9ef240a 100644
--- a/db/routines/vn/triggers/sale_afterInsert.sql
+++ b/db/routines/vn/triggers/sale_afterInsert.sql
@@ -23,7 +23,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND s.id = NEW.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
END IF;
END$$
diff --git a/db/routines/vn/triggers/sale_afterUpdate.sql b/db/routines/vn/triggers/sale_afterUpdate.sql
index 82da55486..49e5383d0 100644
--- a/db/routines/vn/triggers/sale_afterUpdate.sql
+++ b/db/routines/vn/triggers/sale_afterUpdate.sql
@@ -54,7 +54,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND s.id = NEW.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
END IF;
diff --git a/db/routines/vn/triggers/sale_beforeDelete.sql b/db/routines/vn/triggers/sale_beforeDelete.sql
index ad97f8b55..0f72d788b 100644
--- a/db/routines/vn/triggers/sale_beforeDelete.sql
+++ b/db/routines/vn/triggers/sale_beforeDelete.sql
@@ -11,7 +11,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND s.id = OLD.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
END IF;
END$$
diff --git a/db/routines/vn/triggers/ticket_beforeDelete.sql b/db/routines/vn/triggers/ticket_beforeDelete.sql
index 953fa509a..2115175b5 100644
--- a/db/routines/vn/triggers/ticket_beforeDelete.sql
+++ b/db/routines/vn/triggers/ticket_beforeDelete.sql
@@ -8,7 +8,7 @@ BEGIN
FROM vn.route r
WHERE r.isOk = FALSE
AND r.id = OLD.routeFk
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
DELETE FROM sale WHERE ticketFk = OLD.id;
diff --git a/db/routines/vn/triggers/ticket_beforeUpdate.sql b/db/routines/vn/triggers/ticket_beforeUpdate.sql
index 3208a93d0..f86f50485 100644
--- a/db/routines/vn/triggers/ticket_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticket_beforeUpdate.sql
@@ -22,7 +22,7 @@ BEGIN
FROM `route`
WHERE NOT isOk
AND id IN (OLD.routeFk, NEW.routeFk)
- AND created >= util.VN_CURDATE()
+ AND dated >= util.VN_CURDATE()
GROUP BY id;
END IF;
@@ -45,7 +45,7 @@ BEGIN
JOIN vn.route r ON r.id = t.routeFk
WHERE r.isOk = FALSE
AND t.id = NEW.id
- AND r.created >= util.VN_CURDATE()
+ AND r.dated >= util.VN_CURDATE()
GROUP BY r.id;
SET NEW.shipped = DATE_FORMAT(NEW.shipped, '2000-%m-%d %T');
SET NEW.landed = DATE_FORMAT(NEW.landed, '2000-%m-%d %T');
diff --git a/db/routines/vn/views/expeditionPallet_Print.sql b/db/routines/vn/views/expeditionPallet_Print.sql
index 7b933a0a1..0a445a4a6 100644
--- a/db/routines/vn/views/expeditionPallet_Print.sql
+++ b/db/routines/vn/views/expeditionPallet_Print.sql
@@ -9,8 +9,8 @@ AS SELECT `rs2`.`description` AS `truck`,
`rs`.`id` <=> `rm`.`roadmapStopFk` AS `isMatch`,
`t`.`warehouseFk` AS `warehouseFk`,
IF(
- `r`.`created` > `util`.`VN_CURDATE`() + INTERVAL 1 DAY,
- ucase(dayname(`r`.`created`)),
+ `r`.`dated` > `util`.`VN_CURDATE`() + INTERVAL 1 DAY,
+ ucase(dayname(`r`.`dated`)),
NULL
) AS `nombreDia`
FROM (
diff --git a/db/routines/vn/views/expeditionRoute_Monitor.sql b/db/routines/vn/views/expeditionRoute_Monitor.sql
index 9b46c8237..716702753 100644
--- a/db/routines/vn/views/expeditionRoute_Monitor.sql
+++ b/db/routines/vn/views/expeditionRoute_Monitor.sql
@@ -6,7 +6,7 @@ AS SELECT `r`.`id` AS `routeFk`,
COUNT(DISTINCT `e`.`id`) AS `expeditions`,
COUNT(DISTINCT `es`.`id`) AS `scanned`,
max(`e`.`created`) AS `lastPacked`,
- `r`.`created` AS `created`
+ `r`.`dated` AS `created`
FROM (
(
(
@@ -23,5 +23,5 @@ FROM (
)
LEFT JOIN `vn`.`expeditionScan` `es` ON(`es`.`expeditionFk` = `e`.`id`)
)
-WHERE `r`.`created` >= `util`.`yesterday`()
+WHERE `r`.`dated` >= `util`.`yesterday`()
GROUP BY `r`.`id`
diff --git a/db/routines/vn2008/views/Rutas.sql b/db/routines/vn2008/views/Rutas.sql
index 78b3bb471..c8ade24e9 100644
--- a/db/routines/vn2008/views/Rutas.sql
+++ b/db/routines/vn2008/views/Rutas.sql
@@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
VIEW `vn2008`.`Rutas`
AS SELECT `r`.`id` AS `Id_Ruta`,
`r`.`workerFk` AS `Id_Trabajador`,
- `r`.`created` AS `Fecha`,
+ `r`.`dated` AS `Fecha`,
`r`.`vehicleFk` AS `Id_Vehiculo`,
`r`.`agencyModeFk` AS `Id_Agencia`,
`r`.`time` AS `Hora`,
diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql
new file mode 100644
index 000000000..a51ee3fff
--- /dev/null
+++ b/db/versions/11327-maroonOak/00-firstScript.sql
@@ -0,0 +1,185 @@
+CREATE TABLE IF NOT EXISTS `vn`.`sim` (
+ `code` VARCHAR(25) COMMENT 'No se ha puesto BIGINT por incompatibilidad con Access',
+ `line` VARCHAR(15) NOT NULL CHECK (`line` REGEXP '^[0-9]+$'),
+ `ext` INT(4) NOT NULL,
+ `pin` VARCHAR(4) NOT NULL CHECK (`pin` REGEXP '^[0-9]+$'),
+ `puk` VARCHAR(15) NOT NULL CHECK (`pin` REGEXP '^[0-9]+$'),
+ PRIMARY KEY (`code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+ALTER TABLE vn.deviceProductionUser CHANGE simSerialNumber simFk VARCHAR(25) DEFAULT NULL NULL;
+ALTER TABLE vn.deviceProductionUser MODIFY COLUMN simFk VARCHAR(25) DEFAULT NULL NULL;
+
+INSERT IGNORE INTO `vn`.`sim` (`line`, `ext`, `pin`, `code`, `puk`) VALUES
+ ('621188151', 2209, '1486', '3456985220092508','14213470'),
+ ('621188152', 2210, '8765', '3456985220092509','99473093'),
+ ('621188153', 2211, '3064', '3456985220092510','52967210'),
+ ('621188759', 2081, '3700', '3456985220123637','56600999'),
+ ('621188760', 2082, '3259', '345698522023638','87492404'),
+ ('621188761', 2083, '2790', '3456985220123639','94009456'),
+ ('621188762', 2084, '2480', '3456985220123644','1484999'),
+ ('621188763', 2085, '6876', '3456985220123641','36577064'),
+ ('621188766', 2086, '7775', '3456985220123642','80761698'),
+ ('621188769', 2088, '4027', '3456985220123643','37921712'),
+ ('621188771', 2089, '8797', '3456985220123640','63092540'),
+ ('621188772', 2090, '8404', '3456985220123645','21014997'),
+ ('621188773', 2091, '5481', '3456985220123646','16317277'),
+ ('621188774', 2092, '9632', '3456985220123647','22235994'),
+ ('621188775', 2093, '4654', '3456985220123648','28506486'),
+ ('621188838', 2094, '1392', '3456985220123649','29498627'),
+ ('621188839', 2095, '7774', '3456985220123650','46263490'),
+ ('621188840', 2096, '7304', '3456985220123658','8212044'),
+ ('621188841', 2097, '5569', '3456985220123652','81597658'),
+ ('621188842', 2098, '4944', '3456985220123653','24961501'),
+ ('621188843', 2099, '5142', '3456985220123654','17035634'),
+ ('621188844', 2111, '7245', '3456985220123655','90231951'),
+ ('621188846', 2110, '6590', '3456985220123656','72201537'),
+ ('667680207', 2564, '4042', '34569832200759166','48401979'),
+ ('667680315', 2565, '7143', '34569832200759372','32143252'),
+ ('667680318', 2566, '6342', '34569832200759364','39597112'),
+ ('667680413', 2567, '5580', '34569832200759356','32786992'),
+ ('667680463', 2568, '0171', '34569832200759349','34240853'),
+ ('667688217', 2569, '2500', '34569832200759331','5687589'),
+ ('633603945', 2212, '7129', '34569832200759323','51554019'),
+ ('622130186', 2213, '4826', '34569832200759307','19623551'),
+ ('633973424', 2214, '8535', '34569832200759299','94619307'),
+ ('633703828', 2215, '8628', '34569832200759281','22468012'),
+ ('622025110', 2216, '2399', '34569832200759273','34602918'),
+ ('622924867', 2217, '5665', '34569832200759265','26920216'),
+ ('722409630', 2218, '5211', '34569832200759240','93750137'),
+ ('623590529', 2219, '0493', '34569832200759208','47077088'),
+ ('633243462', 2220, '6902', '34569832200759174','6421962'),
+ ('633047286', 2221, '5592', '34569832200759182','32069439'),
+ ('744716801', 2112, '9184', '34569832200759190','57049814'),
+ ('655995021', 2131, '8896', '34569852202049093','19497356'),
+ ('685522718', 2132, '1955', '34569852202049101','28519879'),
+ ('674587213', 2994, '2006', '34569332200223743','62360135'),
+ ('674587227', 2993, '9271', '34569332200223750','81628192'),
+ ('674587229', 2993, '0900', '34569332200223768','91119071'),
+ ('674587231', 2992, '5007', '34569332200223776','45826232'),
+ ('674587234', 2991, '1378', '34569332200223784','91245744'),
+ ('674587240', 2990, '0905', '34569332200223792','13083224'),
+ ('674587245', 2989, '9059', '34569332200223800','15291807'),
+ ('674587250', 2988, '8188', '34569332200223818','83017918'),
+ ('674587254', 2987, '2962', '34569332200223826','92809271'),
+ ('674587256', 2986, '0358', '34569332200223834','81067040'),
+ ('674592713', 2570, '2537', '34569332200230672','82325850'),
+ ('697832478', 2579, '0936', '34568732200494825','49658372'),
+ ('697832176', 2571, '5944', '34568732200494742','19039461'),
+ ('697832477', 2572, '5138', '34568732200494759','25712504'),
+ ('697832178', 2573, '4597', '34568732200494767','66241760'),
+ ('697832182', 2574, '9241', '34568732200494775','07342562'),
+ ('697832196', 2575, '2995', '34568732200494783','53929026'),
+ ('697832214', 2576, '7434', '34568732200494791','49698432'),
+ ('697832230', 2577, '7004', '34568732200494809','21578612'),
+ ('697832235', 2578, '9674', '34568732200494817','93090700'),
+ ('673420375', 2599, '5430', '34562052300117259','35911412'),
+ ('673420367', 2598, '8402', '34562052300117242','924654'),
+ ('673420361', 2597, '5125', '34562052300117234','12027970'),
+ ('673420355', 2596, '5069', '34562052300117226','34978149'),
+ ('673420348', 2595, '8911', '34562052300117218','4228121'),
+ ('673420346', 2594, '2461', '34562052300117200','67670772'),
+ ('673420345', 2593, '2226', '34562052300117192','90586404'),
+ ('673420306', 2592, '3355', '34562052300117184','97850017'),
+ ('673420257', 2591, '9395', '34562052300117176','50713786'),
+ ('673420231', 2590, '1378', '34562052300117168','50151763'),
+ ('673420223', 2589, '9580', '34562052300117150','99534550'),
+ ('673420216', 2588, '4955', '34562052300117143','317554'),
+ ('673420203', 2587, '6742', '34562052300117135','69321531'),
+ ('673420201', 2586, '1659', '34562052300117127','54720480'),
+ ('673420199', 2585, '7823', '34562052300117119','22923796'),
+ ('673420198', 2584, '1787', '34562052300117101','54414630'),
+ ('673420168', 2583, '6334', '34562052300117093','50694894'),
+ ('673420147', 2582, '8951', '34562052300117085','1402535'),
+ ('673420125', 2581, '3068', '34562052300117077','86216200'),
+ ('673420124', 2580, '9517', '34562052300117069','42504099'),
+ ('600294609', 2715, '7474', '34569832304894588','55923317'),
+ ('600084713', 2703, '8342', '34569832304894570','8392636'),
+ ('600084732', 2704, '1625', '34569832304894513','75477452'),
+ ('600084850', 2705, '9896', '34569832304894653','28589813'),
+ ('600084951', 2706, '5520', '34569832304894661','75353012'),
+ ('600084978', 2707, '2698', '34569832304894679','9005523'),
+ ('600085403', 2708, '0837', '34569832304894646','77051152'),
+ ('600085513', 2709, '3106', '34569832304894687','41571002'),
+ ('600293916', 2712, '8990', '34569832304894620','95188676'),
+ ('600294160', 2714, '6376', '34569832304894703','79879896'),
+ ('671919529', 2975, '9184', '34569832304806236','7535392'),
+ ('671919942', 2981, '0328', '34569832304806269','31052894'),
+ ('671919530', 2976, '0344', '34569832304806251','89860304'),
+ ('671919533', 2977, '0668', '34569832304806244','42921771'),
+ ('671919535', 2978, '0105', '34569832304806277','31009417'),
+ ('671919537', 2979, '0881', '34569832304806285','33479769'),
+ ('671919540', 2980, '9874', '34569832304806293','14103929'),
+ ('671919525', 2972, '2089', '34569832304806301','45903729'),
+ ('671919527', 2973, '8206', '34569832304806368','1586035'),
+ ('671919528', 2974, '2532', '34569832304806327','62310124'),
+ ('673668717', 2836, '7973', '34562032301044223','15635496'),
+ ('673668734', 2837, '4457', '34562032301044231','18313118'),
+ ('673668738', 2824, '2911', '34562032301044249','30875583'),
+ ('673668745', 2838, '7253', '34562032301044256','62754222'),
+ ('673668796', 2839, '0068', '34562032301044264','15556829'),
+ ('673668803', 2840, '2386', '34562032301044272','17572287'),
+ ('673669591', 2850, '3833', '34562032301044280','34828896'),
+ ('673668808', 2841, '3584', '34562032301044298','16234497'),
+ ('673670102', 2851, '3554', '34562032301044306','23652625'),
+ ('673670131', 2852, '4412', '34562032301044314','88611709'),
+ ('673670135', 2827, '6058', '34562032301044322','53918579'),
+ ('673670201', 2828, '8066', '34562032301044330','92369343'),
+ ('673670225', 2829, '4592', '34562032301044348','24126635'),
+ ('673670236', 2830, '2974', '34562032301044355','88608465'),
+ ('673671485', 2849, '0349', '34562032301044363','44944874'),
+ ('673461977', 2871, '1728', '34562032400157090','46975780'),
+ ('673461975', 2870, '4734', '34562032400157082','69628432'),
+ ('673461972', 2867, '6276', '34562032400157058','53338365'),
+ ('673461979', 2872, '6043', '34562032400157108','36525197'),
+ ('673461958', 2859, '3164', '34562032400156977','58947831'),
+ ('673461957', 2857, '8685', '34562032400156969','15826386'),
+ ('673461944', 2853, '1073', '34562032400156910','20452195'),
+ ('673461974', 2869, '7121', '34562032400157074','32044645'),
+ ('673461973', 2868, '8022', '34562032400157066','29282044'),
+ ('673461971', 2866, '3089', '34562032400157041','66149978'),
+ ('673461969', 2865, '7555', '34562032400157033','78391293'),
+ ('673461960', 2860, '5203', '34562032400156985','37138232'),
+ ('673461952', 2855, '6915', '34562032400156936','62724661'),
+ ('673461949', 2854, '8706', '34562032400156928','5594345'),
+ ('673461966', 2863, '2496', '34562032400157017','93450666'),
+ ('673461968', 2864, '3703', '34562032400157025','23208841'),
+ ('673461963', 2862, '9364', '34562032400157009','29712130'),
+ ('673462719', 2873, '9387', '34562032400156951','50434348'),
+ ('673461962', 2861, '8441', '34562032400156993','39686909'),
+ ('673461956', 2826, '5392', '34562032400156944','5496107'),
+ ('673465284', 2694, '1523', '34562032400171349','14554994'),
+ ('673465282', 2692, '4645', '34562032400171323','24871187'),
+ ('673465283', 2693, '5253', '34562032400171331','28303238'),
+ ('673465841', 2696, '0849', '34562032400171257','21673222'),
+ ('673465258', 2679, '4140', '34562032400171174','39793881'),
+ ('673465263', 2680, '6922', '34562032400171182','12253261'),
+ ('673465265', 2681, '9112', '34562032400171190','93894366'),
+ ('673465267', 2682, '3259', '34562032400171208','2342189'),
+ ('673465268', 2683, '8540', '34562032400171216','63886925'),
+ ('673465285', 2695, '4167', '34562032400171356','79227618'),
+ ('673465270', 2684, '4292', '34562032400171224','19216349'),
+ ('673465272', 2685, '4007', '34562032400171232','14396903'),
+ ('673465273', 2686, '6894', '34562032400171240','13569394'),
+ ('673465274', 2687, '5268', '34562032400171265','59453667'),
+ ('673465275', 2688, '0232', '34562032400171273','62324713'),
+ ('673465276', 2689, '2720', '34562032400171281','65977200'),
+ ('673465843', 2698, '4773', '34562032400171364','78387158'),
+ ('673465842', 2697, '3729', '34562032400171315','94201789'),
+ ('673465280', 2691, '0503', '34562032400171307','12298533'),
+ ('673465279', 2690, '8239', '34562032400171299','76183877');
+
+UPDATE vn.deviceProductionUser
+ SET simFk = NULL
+ WHERE id IN (
+ SELECT dpu.id
+ FROM vn.deviceProductionUser dpu
+ LEFT JOIN vn.sim s ON s.code = dpu.simFk
+ WHERE s.code IS NULL
+ AND dpu.simFk IS NOT NULL
+ );
+
+ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_sim_FK
+ FOREIGN KEY (simFk) REFERENCES vn.sim(code) ON DELETE RESTRICT ON UPDATE CASCADE;
+
+GRANT SELECT, INSERT, DELETE, UPDATE ON TABLE vn.sim TO hr;
diff --git a/db/versions/11332-tealErica/00-firstScript.sql b/db/versions/11332-tealErica/00-firstScript.sql
index 6358695b2..a7870632f 100644
--- a/db/versions/11332-tealErica/00-firstScript.sql
+++ b/db/versions/11332-tealErica/00-firstScript.sql
@@ -1,4 +1,4 @@
-ALTER TABLE vn.travel ADD isRaid tinyint(1) DEFAULT 0 NOT NULL COMMENT 'Redada';
+ALTER TABLE vn.travel ADD IF NOT EXISTS isRaid tinyint(1) DEFAULT 0 NOT NULL COMMENT 'Redada';
ALTER TABLE vn.travel MODIFY COLUMN daysInForward int(10) unsigned DEFAULT NULL
- COMMENT 'Cuando es una redada, indica el número de días que se añadirán a la fecha de hoy para establecer el landed. NULL si no es una redada';
+ COMMENT 'Cuando es una redada, indica el número de días que se añadirán a la fecha de hoy para establecer el landed. NULL si no es una redada';
\ No newline at end of file
diff --git a/db/versions/11352-blackErica/00-firstScript.sql b/db/versions/11352-blackErica/00-firstScript.sql
new file mode 100644
index 000000000..659f50161
--- /dev/null
+++ b/db/versions/11352-blackErica/00-firstScript.sql
@@ -0,0 +1,3 @@
+-- Place your SQL code here
+INSERT IGNORE INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
+ VALUES('InventoryConfig', 'find', 'READ', 'ALLOW', 'ROLE', 'buyer');
\ No newline at end of file
diff --git a/db/versions/11359-navyPaniculata/00-firstScript.sql b/db/versions/11359-navyPaniculata/00-firstScript.sql
new file mode 100644
index 000000000..de057b540
--- /dev/null
+++ b/db/versions/11359-navyPaniculata/00-firstScript.sql
@@ -0,0 +1,8 @@
+DELETE FROM vn.stateI18n
+ WHERE `name` IN ('Billed', 'Facturado', 'Assisted preparation', 'Preparación asistida', 'Shipped', 'Embarcado', 'Stowaway OK', 'Polizón OK');
+
+UPDATE vn.`state` SET nextStateFk = 43
+ WHERE nextStateFk IN (11, 27, 30, 32, 41);
+
+DELETE FROM vn.`state`
+ WHERE code IN ('INVOICED', 'ASSISTED_PREPARATION', 'BOARD', 'OK STOWAWAY', 'PARTIAL_PREPARATION');
\ No newline at end of file
diff --git a/db/versions/11362-limeLilium/00-firstScript.sql b/db/versions/11362-limeLilium/00-firstScript.sql
new file mode 100644
index 000000000..4a7c5b742
--- /dev/null
+++ b/db/versions/11362-limeLilium/00-firstScript.sql
@@ -0,0 +1,4 @@
+
+
+INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
+VALUES('SaleGroup', 'find', 'READ', 'ALLOW', 'ROLE', 'production');
\ No newline at end of file
diff --git a/db/versions/11363-silverCarnation/00-firstScript.sql b/db/versions/11363-silverCarnation/00-firstScript.sql
new file mode 100644
index 000000000..8c2e68ff4
--- /dev/null
+++ b/db/versions/11363-silverCarnation/00-firstScript.sql
@@ -0,0 +1,7 @@
+ALTER TABLE vn.workCenterCommission ADD IF NOT EXISTS deliveryM3Cat4 DECIMAL(5,2) DEFAULT NULL NULL;
+ALTER TABLE vn.workCenterCommission ADD IF NOT EXISTS deliveryM3Cat5 DECIMAL(5,2) DEFAULT NULL NULL;
+
+INSERT IGNORE INTO vn.workCenterCommission (workCenterFk, deliveryM3Cat4, deliveryM3Cat5)
+ VALUES (5,8.0,8.0);
+
+
diff --git a/db/versions/11366-navyBirch/00-firstScript.sql b/db/versions/11366-navyBirch/00-firstScript.sql
new file mode 100644
index 000000000..4d56c13b8
--- /dev/null
+++ b/db/versions/11366-navyBirch/00-firstScript.sql
@@ -0,0 +1,2 @@
+RENAME TABLE vn.itemShelvingLog TO vn.itemShelvingLog__;
+ALTER TABLE vn.itemShelvingLog__ COMMENT='@deprecated 2024-11-26';
diff --git a/db/versions/11367-grayOrchid/00-deprecate.sql b/db/versions/11367-grayOrchid/00-deprecate.sql
new file mode 100644
index 000000000..19e82419e
--- /dev/null
+++ b/db/versions/11367-grayOrchid/00-deprecate.sql
@@ -0,0 +1,7 @@
+ALTER TABLE `vn`.`creditInsurance` DROP COLUMN `creditClassification__`;
+ALTER TABLE `vn`.`worker` DROP COLUMN `isF11Allowed__`;
+ALTER TABLE `util`.`config` DROP COLUMN `dbVersion__`;
+ALTER TABLE `util`.`config` DROP COLUMN `hasTriggersDisabled__`;
+ALTER TABLE `vn`.`agencyMode` DROP COLUMN `showAgencyName__`;
+DROP TABLE `account`.`accountLog__`;
+DROP TABLE `vn`.`silexACL__`;
diff --git a/db/versions/11369-azureChrysanthemum/00-firstScript.sql b/db/versions/11369-azureChrysanthemum/00-firstScript.sql
new file mode 100644
index 000000000..3a86c0c59
--- /dev/null
+++ b/db/versions/11369-azureChrysanthemum/00-firstScript.sql
@@ -0,0 +1,5 @@
+ALTER TABLE vn.duaInvoiceIn DROP KEY IF EXISTS duaFk_UNIQUE;
+ALTER TABLE vn.duaInvoiceIn DROP KEY IF EXISTS duaInvoiceIn_unique;
+ALTER TABLE vn.duaInvoiceIn ADD CONSTRAINT duaInvoiceIn_unique
+ UNIQUE KEY (invoiceInFk);
+
diff --git a/db/versions/11371-salmonRuscus/00-firstScript.sql b/db/versions/11371-salmonRuscus/00-firstScript.sql
new file mode 100644
index 000000000..306ec451e
--- /dev/null
+++ b/db/versions/11371-salmonRuscus/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.route ADD dated DATE;
\ No newline at end of file
diff --git a/db/versions/11371-salmonRuscus/01-firstScript.sql b/db/versions/11371-salmonRuscus/01-firstScript.sql
new file mode 100644
index 000000000..14c8989d8
--- /dev/null
+++ b/db/versions/11371-salmonRuscus/01-firstScript.sql
@@ -0,0 +1 @@
+UPDATE vn.route SET dated = created;
\ No newline at end of file
diff --git a/db/versions/11371-salmonRuscus/02-firstScript.sql b/db/versions/11371-salmonRuscus/02-firstScript.sql
new file mode 100644
index 000000000..42666b89c
--- /dev/null
+++ b/db/versions/11371-salmonRuscus/02-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.route
+MODIFY COLUMN dated DATE NOT NULL;
\ No newline at end of file
diff --git a/db/versions/11371-salmonRuscus/03-firstScript.sql b/db/versions/11371-salmonRuscus/03-firstScript.sql
new file mode 100644
index 000000000..b7776d31d
--- /dev/null
+++ b/db/versions/11371-salmonRuscus/03-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.route
+MODIFY COLUMN created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
\ No newline at end of file
diff --git a/db/versions/11372-azureMedeola/00-firstScript.sql b/db/versions/11372-azureMedeola/00-firstScript.sql
new file mode 100644
index 000000000..53295e9f8
--- /dev/null
+++ b/db/versions/11372-azureMedeola/00-firstScript.sql
@@ -0,0 +1,2 @@
+INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
+ VALUES ('Worker','canCreateAbsenceInPast','WRITE','ALLOW','ROLE','hr');
diff --git a/db/versions/11373-pinkMastic/00-firstScript.sql b/db/versions/11373-pinkMastic/00-firstScript.sql
new file mode 100644
index 000000000..2d7cd4dc7
--- /dev/null
+++ b/db/versions/11373-pinkMastic/00-firstScript.sql
@@ -0,0 +1,107 @@
+INSERT IGNORE INTO vn.saySimpleCountry
+ SET countryFk = 1,
+ channel = '1320';
+
+UPDATE vn.saySimpleConfig
+ SET defaultChannel = '1819';
+
+INSERT IGNORE INTO pbx.prefix (country, prefix) VALUES
+ ('ES', '0034'),
+ ('IT', '0039'),
+ ('DE', '0049'),
+ ('RO', '0040'),
+ ('NL', '0031'),
+ ('BE', '0032'),
+ ('RU', '007'),
+ ('PT', '00351'),
+ ('LT', '00370'),
+ ('UA', '00380'),
+ ('CO', '0057'),
+ ('FI', '00358'),
+ ('EC', '00593'),
+ ('LB', '00961'),
+ ('IL', '00972'),
+ ('TH', '0066'),
+ ('PA', '00507'),
+ ('GB', '0044'),
+ ('FR', '0033'),
+ ('PL', '0048'),
+ ('MX', '0052'),
+ ('MA', '00212'),
+ ('AI', '001268'),
+ ('GH', '00233'),
+ ('SE', '0046'),
+ ('AE', '00971'),
+ ('KE', '00254'),
+ ('AD', '00376'),
+ ('AO', '00244'),
+ ('LU', '00352'),
+ ('BY', '00375'),
+ ('MD', '00373'),
+ ('DK', '0045'),
+ ('ET', '00251'),
+ ('AU', '0061'),
+ ('CA', '0001'),
+ ('CL', '0056'),
+ ('CN', '0086'),
+ ('CR', '00506'),
+ ('GT', '00502'),
+ ('CI', '00225'),
+ ('PE', '0051'),
+ ('LK', '0094'),
+ ('ZA', '0027'),
+ ('TR', '0090'),
+ ('ZW', '00263'),
+ ('MY', '0060'),
+ ('NZ', '0064'),
+ ('IE', '00353'),
+ ('MN', '00976'),
+ ('SV', '00503'),
+ ('ZM', '00260'),
+ ('JP', '0081'),
+ ('RW', '00250'),
+ ('AL', '00355'),
+ ('KW', '00965'),
+ ('SG', '0065'),
+ ('SR', '00597'),
+ ('KR', '0082'),
+ ('US', '0001'),
+ ('RS', '00381'),
+ ('AT', '0043'),
+ ('EG', '0020'),
+ ('LV', '00371'),
+ ('CY', '00357'),
+ ('CZ', '00420'),
+ ('BB', '001246'),
+ ('SK', '00421'),
+ ('IN', '0091'),
+ ('DZ', '00213'),
+ ('BR', '0055'),
+ ('GR', '0030'),
+ ('MC', '00377'),
+ ('SI', '00386'),
+ ('GP', '00590'),
+ ('NO', '0047'),
+ ('CH', '0041'),
+ ('AR', '0054'),
+ ('CU', '0053'),
+ ('GQ', '00240'),
+ ('GN', '00224'),
+ ('HN', '00504'),
+ ('ML', '00223'),
+ ('NI', '00505'),
+ ('PK', '0092'),
+ ('PY', '00595'),
+ ('SN', '00221'),
+ ('UY', '00598'),
+ ('VE', '0058'),
+ ('BG', '00359'),
+ ('GE', '00995'),
+ ('EE', '00372'),
+ ('SA', '00966'),
+ ('RN', '00234'),
+ ('HK', '00852'),
+ ('GI', '00350'),
+ ('CM', '00237'),
+ ('HU', '0036'),
+ ('AM', '00374');
\ No newline at end of file
diff --git a/db/versions/11375-navyIvy/00-firstScript.sql b/db/versions/11375-navyIvy/00-firstScript.sql
new file mode 100644
index 000000000..a90aaf519
--- /dev/null
+++ b/db/versions/11375-navyIvy/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.ticket DROP FOREIGN KEY tickets_zone_fk;
+ALTER TABLE vn.ticket ADD CONSTRAINT tickets_zone_fk FOREIGN KEY (zoneFk) REFERENCES vn.`zone`(id) ON DELETE SET NULL ON UPDATE CASCADE;
diff --git a/db/versions/11376-pinkBamboo/00-firstScript.sql b/db/versions/11376-pinkBamboo/00-firstScript.sql
new file mode 100644
index 000000000..0c1e71a2f
--- /dev/null
+++ b/db/versions/11376-pinkBamboo/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.`zone` MODIFY COLUMN `price` DECIMAL(10,2);
+
diff --git a/db/versions/11377-pinkCarnation/00-firstScript.sql b/db/versions/11377-pinkCarnation/00-firstScript.sql
new file mode 100644
index 000000000..fdbd7e836
--- /dev/null
+++ b/db/versions/11377-pinkCarnation/00-firstScript.sql
@@ -0,0 +1,5 @@
+-- Place your SQL code here
+
+
+ALTER TABLE vn.productionConfig ADD IF NOT EXISTS itemOrderReviewHours int(11) DEFAULT 24 NULL
+COMMENT 'Horas que no se tienen en cuenta para comprobar orden en el almacén, null para desactivar revisión';
diff --git a/db/versions/11378-orangeAsparagus/00-firstScript.sql b/db/versions/11378-orangeAsparagus/00-firstScript.sql
new file mode 100644
index 000000000..a030b7e05
--- /dev/null
+++ b/db/versions/11378-orangeAsparagus/00-firstScript.sql
@@ -0,0 +1 @@
+DROP TABLE vn.quadmindsApiConfig;
diff --git a/db/versions/11379-yellowCordyline/00-firstScript.sql b/db/versions/11379-yellowCordyline/00-firstScript.sql
new file mode 100644
index 000000000..8d90ee90c
--- /dev/null
+++ b/db/versions/11379-yellowCordyline/00-firstScript.sql
@@ -0,0 +1,20 @@
+CREATE TABLE `vn`.`osrmConfig` (
+ `id` int(10) unsigned NOT NULL,
+ `url` varchar(100) NOT NULL COMMENT 'Dirección base de la API',
+ `tolerance` decimal(6,6) NOT NULL DEFAULT 0 COMMENT 'Tolerancia entre las coordenadas enviadas y las retornadas',
+ PRIMARY KEY (`id`),
+ CONSTRAINT `osrmConfig_check` CHECK (`id` = 1)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+-- Para que no de error al añadir la FK de zone
+UPDATE vn.zone
+ SET price = 0.1
+ WHERE price = 0;
+
+ALTER TABLE vn.`zone`
+ ADD addressFk int(11) DEFAULT NULL COMMENT 'Punto de distribución de donde salen para repartir',
+ ADD CONSTRAINT zone_address_FK FOREIGN KEY (addressFk) REFERENCES vn.address(id) ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ALTER TABLE vn.zoneConfig
+ ADD defaultAddressFk int(11) DEFAULT NULL NULL COMMENT 'Punto de distribución por defecto',
+ ADD CONSTRAINT zoneConfig_address_FK FOREIGN KEY (defaultAddressFk) REFERENCES vn.address(id) ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/db/versions/11379-yellowCordyline/01-secScript.sql b/db/versions/11379-yellowCordyline/01-secScript.sql
new file mode 100644
index 000000000..30479229e
--- /dev/null
+++ b/db/versions/11379-yellowCordyline/01-secScript.sql
@@ -0,0 +1,5 @@
+INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
+ VALUES ('OsrmConfig','optimize','READ','ALLOW','ROLE','employee'),
+ ('Route', 'optimizePriority','*','ALLOW','ROLE','employee');
+INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance)
+ VALUES (1,'https://router.project-osrm.org', 0.002);
diff --git a/db/versions/11384-grayAnthurium/00-firstScript.sql b/db/versions/11384-grayAnthurium/00-firstScript.sql
new file mode 100644
index 000000000..b3a7f3da2
--- /dev/null
+++ b/db/versions/11384-grayAnthurium/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.mistakeType
+ ADD `time` int(10) NULL COMMENT 'Segundos que se suelen tardar en arreglar el fallo',
+ ADD code varchar(50) DEFAULT NULL NULL AFTER id;
diff --git a/db/versions/11385-yellowOrchid/00-firstScript.sql b/db/versions/11385-yellowOrchid/00-firstScript.sql
new file mode 100644
index 000000000..287e9fcab
--- /dev/null
+++ b/db/versions/11385-yellowOrchid/00-firstScript.sql
@@ -0,0 +1,5 @@
+RENAME TABLE vn.inventoryFailure TO vn.inventoryFailure__;
+ALTER TABLE vn.inventoryFailure__ COMMENT='@deprecated 2024-12-16';
+
+RENAME TABLE vn.inventoryFailureCause TO vn.inventoryFailureCause__;
+ALTER TABLE vn.inventoryFailureCause__ COMMENT='@deprecated 2024-12-16';
diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js
index 0a3892c86..52177b231 100644
--- a/e2e/helpers/selectors.js
+++ b/e2e/helpers/selectors.js
@@ -791,7 +791,7 @@ export default {
},
createRouteView: {
worker: 'vn-route-create vn-worker-autocomplete[ng-model="$ctrl.route.workerFk"]',
- createdDatePicker: 'vn-route-create vn-date-picker[ng-model="$ctrl.route.created"]',
+ createdDatePicker: 'vn-route-create vn-date-picker[ng-model="$ctrl.route.dated"]',
vehicleAuto: 'vn-route-create vn-autocomplete[ng-model="$ctrl.route.vehicleFk"]',
agency: 'vn-route-create vn-autocomplete[ng-model="$ctrl.route.agencyModeFk"]',
description: 'vn-route-create [ng-model="$ctrl.route.description"]',
diff --git a/front/core/components/snackbar/snackbar.js b/front/core/components/snackbar/snackbar.js
index b380c47c3..cce285d14 100644
--- a/front/core/components/snackbar/snackbar.js
+++ b/front/core/components/snackbar/snackbar.js
@@ -27,18 +27,6 @@ export default class Controller extends Component {
setTimeout(() => element.classList.add('shown'), 30);
shape.element = element;
- if (data.additionalData && this.vnToken.token) {
- this.additionalData = data.additionalData;
- let supportButton = document.createElement('i');
- supportButton.setAttribute('class', 'material-icons clickable');
- supportButton.addEventListener('click', () => this.$.supportDialog.show());
- element.appendChild(supportButton);
-
- let buttonIcon = 'support_agent';
- buttonIcon = document.createTextNode(buttonIcon);
- supportButton.appendChild(buttonIcon);
- }
-
if (shape.type)
element.classList.add(shape.type);
diff --git a/front/core/components/support-dialog/index.js b/front/core/components/support-dialog/index.js
index d15c14b4a..82f086184 100644
--- a/front/core/components/support-dialog/index.js
+++ b/front/core/components/support-dialog/index.js
@@ -9,13 +9,6 @@ export default class Controller extends Dialog {
responseHandler(response) {
if (response !== 'accept')
return super.responseHandler(response);
-
- this.$http.post('Ostickets/send-to-support', {
- reason: this.reason,
- additionalData: this.additionalData
- })
- .then(() => super.responseHandler(response))
- .then(() => this.vnApp.showSuccess(this.$t('Email sended!')));
}
}
diff --git a/loopback/locale/en.json b/loopback/locale/en.json
index 6756db37d..e6ec52d63 100644
--- a/loopback/locale/en.json
+++ b/loopback/locale/en.json
@@ -246,5 +246,8 @@
"ticketLostExpedition": "The ticket [{{ticketId}}]({{{ticketUrl}}}) has the following lost expedition:{{ expeditionId }}",
"The raid information is not correct": "The raid information is not correct",
"Payment method is required": "Payment method is required",
- "Sales already moved": "Sales already moved"
+ "Sales already moved": "Sales already moved",
+ "Holidays to past days not available": "Holidays to past days not available",
+ "Price cannot be blank": "Price cannot be blank",
+ "There are tickets to be invoiced": "There are tickets to be invoiced"
}
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index 0b10d4702..fcee0e111 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -388,7 +388,15 @@
"You do not have permission to modify the booked field": "No tienes permisos para modificar el campo contabilizada",
"ticketLostExpedition": "El ticket [{{ticketId}}]({{{ticketUrl}}}) tiene la siguiente expedición perdida:{{ expeditionId }}",
"The web user's email already exists": "El correo del usuario web ya existe",
- "Sales already moved": "Ya han sido transferidas",
- "The raid information is not correct": "La información de la redada no es correcta"
+ "Sales already moved": "Ya han sido transferidas",
+ "The raid information is not correct": "La información de la redada no es correcta",
+ "No trips found because input coordinates are not connected": "No se encontraron rutas porque las coordenadas de entrada no están conectadas",
+ "This request is not supported": "Esta solicitud no es compatible",
+ "Invalid options or too many coordinates": "Opciones invalidas o demasiadas coordenadas",
+ "No address has coordinates": "Ninguna dirección tiene coordenadas",
+ "An item type with the same code already exists": "Un tipo con el mismo código ya existe",
+ "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles",
+ "All tickets have a route order": "Todos los tickets tienen orden de ruta",
+ "Price cannot be blank": "Price cannot be blank",
+ "There are tickets to be invoiced": "La zona tiene tickets por facturar"
}
-
diff --git a/modules/client/back/methods/client/summary.js b/modules/client/back/methods/client/summary.js
index 9242fbd44..9c1420b61 100644
--- a/modules/client/back/methods/client/summary.js
+++ b/modules/client/back/methods/client/summary.js
@@ -54,7 +54,7 @@ module.exports = Self => {
{
relation: 'country',
scope: {
- fields: ['id', 'name'],
+ fields: ['id', 'name', 'code'],
include: {
relation: 'saySimpleCountry',
}
diff --git a/modules/client/back/methods/client/updateAddress.js b/modules/client/back/methods/client/updateAddress.js
index 7342b28f1..efef83d6b 100644
--- a/modules/client/back/methods/client/updateAddress.js
+++ b/modules/client/back/methods/client/updateAddress.js
@@ -72,6 +72,14 @@ module.exports = function(Self) {
{
arg: 'isLogifloraAllowed',
type: 'boolean'
+ },
+ {
+ arg: 'longitude',
+ type: 'any',
+ },
+ {
+ arg: 'latitude',
+ type: 'any',
}
],
returns: {
diff --git a/modules/entry/back/methods/entry/buyLabelSupplier.js b/modules/entry/back/methods/entry/buyLabelSupplier.js
index 61938f2f8..23806f561 100644
--- a/modules/entry/back/methods/entry/buyLabelSupplier.js
+++ b/modules/entry/back/methods/entry/buyLabelSupplier.js
@@ -9,6 +9,10 @@ module.exports = Self => {
required: true,
description: 'The entry id',
http: {source: 'path'}
+ }, {
+ arg: 'showEntryLines',
+ type: 'boolean',
+ required: false
}
],
returns: [
diff --git a/modules/entry/back/methods/entry/print.js b/modules/entry/back/methods/entry/labelSupplier.js
similarity index 85%
rename from modules/entry/back/methods/entry/print.js
rename to modules/entry/back/methods/entry/labelSupplier.js
index 5b9de9a69..07107d032 100644
--- a/modules/entry/back/methods/entry/print.js
+++ b/modules/entry/back/methods/entry/labelSupplier.js
@@ -1,6 +1,6 @@
const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
- Self.remoteMethodCtx('print', {
+ Self.remoteMethodCtx('labelSupplier', {
description: 'Print stickers of all entries',
accessType: 'READ',
accepts: [
@@ -28,13 +28,13 @@ module.exports = Self => {
}
],
http: {
- path: '/:id/print',
+ path: '/:id/labelSupplier',
verb: 'GET'
},
accessScopes: ['DEFAULT', 'read:multimedia']
});
- Self.print = async function(ctx, id, options) {
+ Self.labelSupplier = async function(ctx, id, options) {
const models = Self.app.models;
const myOptions = {};
if (typeof options == 'object')
@@ -47,8 +47,8 @@ module.exports = Self => {
for (const buy of buys) {
if (buy.stickers < 1) continue;
- ctx.args.id = buy.id;
- const pdfBuffer = await models.Entry.buyLabel(ctx, myOptions);
+ ctx.args = {...ctx.args, id: buy.id, showEntryLines: true};
+ const pdfBuffer = await models.Entry.buyLabelSupplier(ctx, myOptions);
await merger.add(new Uint8Array(pdfBuffer[0]));
}
diff --git a/modules/entry/back/methods/entry/specs/filter.spec.js b/modules/entry/back/methods/entry/specs/filter.spec.js
index 4bf5127b0..b139b00b6 100644
--- a/modules/entry/back/methods/entry/specs/filter.spec.js
+++ b/modules/entry/back/methods/entry/specs/filter.spec.js
@@ -38,8 +38,9 @@ describe('Entry filter()', () => {
};
const result = await models.Entry.filter(ctx, options);
+ const resultWithCurrency = result.filter(entry => entry.currencyFk === 1);
- expect(result.length).toEqual(12);
+ expect(result.length).toEqual(resultWithCurrency.length);
await tx.rollback();
} catch (e) {
@@ -141,18 +142,21 @@ describe('Entry filter()', () => {
it('should return the entry matching the company', async() => {
const tx = await models.Entry.beginTransaction({});
const options = {transaction: tx};
+ const companyFk = 442;
try {
const ctx = {
args: {
- companyFk: 442
+ companyFk
},
req: {accessToken: {userId: 9}}
};
const result = await models.Entry.filter(ctx, options);
- expect(result.length).toEqual(11);
+ const resultWithCurrency = result.filter(entry => entry.companyFk === companyFk);
+
+ expect(result.length).toEqual(resultWithCurrency.length);
await tx.rollback();
} catch (e) {
diff --git a/modules/entry/back/model-config.json b/modules/entry/back/model-config.json
index 5c45b6e07..49c2df2db 100644
--- a/modules/entry/back/model-config.json
+++ b/modules/entry/back/model-config.json
@@ -28,5 +28,8 @@
},
"StockBought": {
"dataSource": "vn"
+ },
+ "InventoryConfig": {
+ "dataSource": "vn"
}
}
diff --git a/modules/entry/back/models/entry.js b/modules/entry/back/models/entry.js
index 593f3fdcc..55a23bb0a 100644
--- a/modules/entry/back/models/entry.js
+++ b/modules/entry/back/models/entry.js
@@ -12,7 +12,8 @@ module.exports = Self => {
require('../methods/entry/addFromPackaging')(Self);
require('../methods/entry/addFromBuy')(Self);
require('../methods/entry/buyLabel')(Self);
- require('../methods/entry/print')(Self);
+ require('../methods/entry/labelSupplier')(Self);
+ require('../methods/entry/buyLabelSupplier')(Self);
Self.observe('before save', async function(ctx, options) {
if (ctx.isNewInstance) return;
diff --git a/modules/entry/back/models/inventory-config.json b/modules/entry/back/models/inventory-config.json
new file mode 100644
index 000000000..caa39db88
--- /dev/null
+++ b/modules/entry/back/models/inventory-config.json
@@ -0,0 +1,18 @@
+{
+ "name": "InventoryConfig",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "inventoryConfig"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true
+ },
+ "supplierFk": {
+ "type": "number"
+ }
+ }
+}
diff --git a/modules/invoiceOut/back/methods/invoiceOut/filter.js b/modules/invoiceOut/back/methods/invoiceOut/filter.js
index 99a80c169..764fdbb78 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/filter.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/filter.js
@@ -14,6 +14,12 @@ module.exports = Self => {
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
http: {source: 'query'}
},
+ {
+ arg: 'id',
+ type: 'number',
+ description: 'The invoiceOut id',
+ http: {source: 'query'}
+ },
{
arg: 'search',
type: 'string',
@@ -106,6 +112,8 @@ module.exports = Self => {
return {'i.created': value};
case 'clientFk':
return {'i.clientFk': value};
+ case 'id':
+ return {'i.id': value};
case 'fi':
return {'c.fi': value};
case 'amount':
diff --git a/modules/item/back/locale/item-minimum-quantity/en.yml b/modules/item/back/locale/item-minimum-quantity/en.yml
new file mode 100644
index 000000000..206b1d96b
--- /dev/null
+++ b/modules/item/back/locale/item-minimum-quantity/en.yml
@@ -0,0 +1,5 @@
+name: Minimum Quantity
+columns:
+ ended: Ended
+ code: Code
+ started: Started
\ No newline at end of file
diff --git a/modules/item/back/locale/item-minimum-quantity/es.yml b/modules/item/back/locale/item-minimum-quantity/es.yml
new file mode 100644
index 000000000..68c67eeff
--- /dev/null
+++ b/modules/item/back/locale/item-minimum-quantity/es.yml
@@ -0,0 +1,5 @@
+name: Cantidad Mínima
+columns:
+ ended: Finaliza
+ quantity: Cantidad
+ started: Comienza
diff --git a/modules/item/back/locale/item/en.yml b/modules/item/back/locale/item/en.yml
index ea40fd34b..f5e6fcf9a 100644
--- a/modules/item/back/locale/item/en.yml
+++ b/modules/item/back/locale/item/en.yml
@@ -46,4 +46,4 @@ columns:
itemFk: item
density: density
compression: compression
-
+ minQuantity: min quantity
diff --git a/modules/item/back/locale/item/es.yml b/modules/item/back/locale/item/es.yml
index 973f5e94f..68020d452 100644
--- a/modules/item/back/locale/item/es.yml
+++ b/modules/item/back/locale/item/es.yml
@@ -46,4 +46,4 @@ columns:
itemFk: artículo
density: densidad
compression: compresión
-
+ minQuantity: Cantidad mínima
diff --git a/modules/item/back/methods/item-shelving/getItemsByReviewOrder.js b/modules/item/back/methods/item-shelving/getItemsByReviewOrder.js
new file mode 100644
index 000000000..7a960a8c8
--- /dev/null
+++ b/modules/item/back/methods/item-shelving/getItemsByReviewOrder.js
@@ -0,0 +1,89 @@
+module.exports = Self => {
+ const models = require('vn-loopback/server/server').models;
+ Self.remoteMethod('getItemsByReviewOrder', {
+ description:
+ 'Get list items if they are ordered by pickingOrder and their created regarding where they will be parked',
+ accessType: 'READ',
+ accepts: [{
+ arg: 'shelving',
+ type: 'string',
+ required: true,
+ description: 'Shelving code'
+ },
+ {
+ arg: 'parking',
+ type: 'string',
+ required: true,
+ description: 'Parking code'
+ },
+ {
+ arg: 'itemFk',
+ type: 'number',
+ description: 'Item id'
+ },
+ ],
+ returns: {
+ type: 'Array',
+ root: true
+ },
+ http: {
+ path: `/getItemsByReviewOrder`,
+ verb: 'GET'
+ }
+ });
+
+ Self.getItemsByReviewOrder = async(shelving, parking, itemFk, options) => {
+ const myOptions = {};
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ const config = await models.ProductionConfig.findOne();
+ const hoursToCompare = config['itemOrderReviewHours'];
+ if (!hoursToCompare) return [];
+
+ const parkingItem = await models.Parking.findOne({where: {code: parking}}, myOptions);
+ if (!parkingItem) return [];
+ const pickingOrderToCompare = parkingItem['pickingOrder'];
+
+ const result = await Self.rawSql(`
+ WITH currentItemShelving AS (
+ SELECT is2.created, is2.itemFk, sh.code
+ FROM vn.itemShelving is2
+ JOIN vn.shelving sh ON sh.id = is2.shelvingFk
+ LEFT JOIN vn.parking p ON p.id = sh.parkingFk
+ LEFT JOIN vn.sector s ON s.id = p.sectorFk
+ WHERE sh.code = ? AND (? IS NULL OR is2.itemFk = ?)
+ ),
+ itemShelvings AS (
+ SELECT is2.itemFk, is2.created, sh.code, p.pickingOrder, p.code AS parkingFk
+ FROM vn.itemShelving is2
+ JOIN currentItemShelving ai ON is2.itemFk = ai.itemFk
+ JOIN vn.shelving sh ON sh.id = is2.shelvingFk AND ai.code <> sh.code
+ JOIN vn.parking p ON p.id = sh.parkingFk
+ JOIN vn.sector s ON s.id = p.sectorFk
+ ),
+ parkingDestiny AS (
+ SELECT ? AS pickingOrder
+ )
+ SELECT ish.*,
+ CASE
+ WHEN ish.pickingOrder < d.pickingOrder AND aish.created < ish.created
+ AND ABS(TIMESTAMPDIFF(HOUR, aish.created, ish.created)) > ? THEN "old"
+ WHEN ish.pickingOrder > d.pickingOrder AND aish.created > ish.created
+ AND ABS(TIMESTAMPDIFF(HOUR, aish.created, ish.created)) > ? THEN "new"
+ END AS itemCreated
+ FROM itemShelvings ish
+ JOIN parkingDestiny d ON d.pickingOrder IS NOT NULL
+ JOIN currentItemShelving aish ON ish.itemFk = aish.itemFk
+ WHERE ABS(TIMESTAMPDIFF(HOUR, aish.created, ish.created)) > ?
+ AND (
+ (ish.pickingOrder < d.pickingOrder AND aish.created < ish.created)
+ OR
+ (ish.pickingOrder > d.pickingOrder AND aish.created > ish.created)
+ );
+ `,
+ [shelving, itemFk, itemFk, pickingOrderToCompare,
+ hoursToCompare, hoursToCompare, hoursToCompare, hoursToCompare], myOptions);
+ return result;
+ };
+};
diff --git a/modules/item/back/methods/item-shelving/getListItemNewer.js b/modules/item/back/methods/item-shelving/getListItemNewer.js
index 5c4ca277d..c806c0a7e 100644
--- a/modules/item/back/methods/item-shelving/getListItemNewer.js
+++ b/modules/item/back/methods/item-shelving/getListItemNewer.js
@@ -51,7 +51,7 @@ module.exports = Self => {
JOIN vn.productionConfig pc
WHERE sh.code = ? AND s.code = pc.sectorFromCode
), tItemInSector AS (
- SELECT is2.itemFk, is2.created, is2.shelvingFk
+ SELECT is2.itemFk, is2.created, sh.code
FROM vn.itemShelving is2
JOIN vn.shelving sh ON sh.id = is2.shelvingFk
JOIN vn.parking p ON p.id = sh.parkingFk
@@ -59,7 +59,7 @@ module.exports = Self => {
JOIN vn.productionConfig pc
WHERE sh.code <> ?
AND s.code = pc.sectorFromCode)
- SELECT ti.itemFK, tis.shelvingFk
+ SELECT ti.itemFK, tis.code shelvingFk
FROM tItemShelving ti
JOIN tItemInSector tis ON tis.itemFk = ti.itemFk
JOIN vn.productionConfig pc
diff --git a/modules/item/back/methods/item-shelving/specs/getItemsByReviewOrder.spec.js b/modules/item/back/methods/item-shelving/specs/getItemsByReviewOrder.spec.js
new file mode 100644
index 000000000..8f368b57c
--- /dev/null
+++ b/modules/item/back/methods/item-shelving/specs/getItemsByReviewOrder.spec.js
@@ -0,0 +1,123 @@
+
+const {models} = require('vn-loopback/server/server');
+
+describe('itemShelving getItemsByReviewOrder()', () => {
+ it('should return empty because hoursToReview = 0', async() => {
+ const shelving = 'NBB';
+ const parking = '700-01';
+
+ const tx = await models.Sector.beginTransaction({});
+ const myOptions = {transaction: tx};
+
+ try {
+ const config = await models.ProductionConfig.findOne();
+ await config.updateAttributes({
+ itemOrderReviewHours: null,
+ });
+
+ const result = await models.ItemShelving.getItemsByReviewOrder(shelving, parking, myOptions);
+
+ expect(result.length).toEqual(0);
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should return an item because you are trying parking a shelving and there is an older item', async() => {
+ const shelving = 'NBB';
+ const parking = 'K-26-2';
+ const itemFk = 1000000;
+
+ const tx = await models.Sector.beginTransaction({});
+ const myOptions = {transaction: tx};
+
+ try {
+ const config = await models.ProductionConfig.findOne();
+ await config.updateAttributes({
+ itemOrderReviewHours: 24,
+ });
+
+ const result = await models.ItemShelving.getItemsByReviewOrder(shelving, parking, itemFk, myOptions);
+
+ expect(result.length).toEqual(1);
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should return an item because you are trying parking a shelving and there is an newer item', async() => {
+ const shelving = 'NBB';
+ const parking = 'K-26-2';
+ const itemFk = 1000000;
+
+ const tx = await models.Sector.beginTransaction({});
+ const myOptions = {transaction: tx};
+
+ try {
+ const config = await models.ProductionConfig.findOne();
+ await config.updateAttributes({
+ itemOrderReviewHours: 24,
+ });
+
+ const result = await models.ItemShelving.getItemsByReviewOrder(shelving, parking, itemFk, myOptions);
+
+ expect(result.length).toEqual(1);
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should return a item list because you are trying parking a shelving and there is an newer item', async() => {
+ const shelving = 'NCC';
+ const parking = 'K-26-2';
+ const itemFk = 1000000;
+
+ const tx = await models.Sector.beginTransaction({});
+ const myOptions = {transaction: tx};
+
+ try {
+ const config = await models.ProductionConfig.findOne();
+ await config.updateAttributes({
+ itemOrderReviewHours: 24,
+ });
+
+ const result = await models.ItemShelving.getItemsByReviewOrder(shelving, parking, itemFk, myOptions);
+
+ expect(result.length).toEqual(2);
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should return empty list because all order is correct', async() => {
+ const shelving = 'NCC';
+ const parking = 'A-01-1';
+ const itemFk = 1000000;
+
+ const tx = await models.Sector.beginTransaction({});
+ const myOptions = {transaction: tx};
+
+ try {
+ const config = await models.ProductionConfig.findOne();
+ await config.updateAttributes({
+ itemOrderReviewHours: 24,
+ });
+
+ const result = await models.ItemShelving.getItemsByReviewOrder(shelving, parking, itemFk, myOptions);
+
+ expect(result.length).toEqual(0);
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+});
diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js
index 54dd975a4..a7fde1e6c 100644
--- a/modules/item/back/methods/item/filter.js
+++ b/modules/item/back/methods/item/filter.js
@@ -178,17 +178,18 @@ module.exports = Self => {
i.isFloramondo,
i.recycledPlastic,
i.nonRecycledPlastic,
- pr.name AS producer,
- it.name AS typeName,
- it.workerFk AS buyerFk,
- u.name AS userName,
- ori.code AS origin,
- ic.name AS category,
+ pr.name producer,
+ it.name typeName,
+ it.workerFk buyerFk,
+ u.name userName,
+ ori.code origin,
+ ic.name category,
i.intrastatFk,
- intr.description AS intrastat,
+ intr.description intrastat,
b.grouping,
b.packing,
- lb.landing AS landed
+ lb.landing landed,
+ it.name typeName
FROM item i
LEFT JOIN itemType it ON it.id = i.typeFk
LEFT JOIN itemCategory ic ON ic.id = it.categoryFk
diff --git a/modules/item/back/methods/item/lastEntriesFilter.js b/modules/item/back/methods/item/lastEntriesFilter.js
index 5aafbb4f6..06c60162f 100644
--- a/modules/item/back/methods/item/lastEntriesFilter.js
+++ b/modules/item/back/methods/item/lastEntriesFilter.js
@@ -54,7 +54,8 @@ module.exports = Self => {
b.packageValue,
b.packagingFk ,
s.id AS supplierFk,
- s.name AS supplier
+ s.name AS supplier,
+ b.printedStickers
FROM itemType it
RIGHT JOIN (entry e
LEFT JOIN supplier s ON s.id = e.supplierFk
diff --git a/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js b/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js
index 2fd30c2ca..d4429e158 100644
--- a/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js
+++ b/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js
@@ -34,10 +34,31 @@ describe('item lastEntriesFilter()', () => {
const options = {transaction: tx};
try {
- const filter = {where: {itemFk: 1, landed: {between: [minDate, maxDate]}}};
+ const itemFk = 1;
+ const filter = {where: {itemFk, landed: {between: [minDate, maxDate]}}};
const result = await models.Item.lastEntriesFilter(filter, options);
+ const minDateUtc = new Date(minDate).getTime();
+ const maxDateUtc = new Date(maxDate).getTime();
- expect(result.length).toEqual(6);
+ const resultMatch = (
+ await Promise.all(
+ result.map(async item => {
+ const itemRecord = await models.Buy.findOne({
+ fields: ['id'],
+ where: {id: item.id},
+ options,
+ });
+
+ const isItemFkValid = itemRecord?.id === itemFk;
+ const landedDate = new Date(item.landed).getTime();
+ const isLandedValid = landedDate >= minDateUtc && landedDate <= maxDateUtc;
+
+ return isItemFkValid && isLandedValid;
+ })
+ )
+ ).filter(Boolean).length;
+
+ expect(result.length).toEqual(resultMatch);
await tx.rollback();
} catch (e) {
diff --git a/modules/item/back/model-config.json b/modules/item/back/model-config.json
index dcd973524..c386a8eaa 100644
--- a/modules/item/back/model-config.json
+++ b/modules/item/back/model-config.json
@@ -56,9 +56,6 @@
"ItemShelving": {
"dataSource": "vn"
},
- "ItemShelvingLog": {
- "dataSource": "vn"
- },
"ItemShelvingSale": {
"dataSource": "vn"
},
diff --git a/modules/item/back/models/item-shelving-log.json b/modules/item/back/models/item-shelving-log.json
deleted file mode 100644
index f976008f1..000000000
--- a/modules/item/back/models/item-shelving-log.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "ItemShelvingLog",
- "base": "VnModel",
- "mixins": {
- "Loggable": true
- },
- "options": {
- "mysql": {
- "table": "itemShelvingLog"
- }
- },
- "properties": {
- "id": {
- "type": "number",
- "id": true,
- "description": "Identifier"
- },
- "created": {
- "type": "date"
- },
- "shelvingFk": {
- "type": "string"
- },
- "itemFk": {
- "type": "number"
- },
- "visible": {
- "type": "number"
- },
- "accion": {
- "type": "string"
- }
- },
- "relations": {
- "item": {
- "type": "belongsTo",
- "model": "Item",
- "foreignKey": "itemFk"
- },
- "worker": {
- "type": "belongsTo",
- "model": "Worker",
- "foreignKey": "workerFk"
- },
- "shelving": {
- "type": "belongsTo",
- "model": "Shelving",
- "foreignKey": "shelvingFk",
- "primaryKey": "code"
- }
- }
-}
\ No newline at end of file
diff --git a/modules/item/back/models/item-shelving.js b/modules/item/back/models/item-shelving.js
index be72dac37..34e18f23f 100644
--- a/modules/item/back/models/item-shelving.js
+++ b/modules/item/back/models/item-shelving.js
@@ -5,4 +5,5 @@ module.exports = Self => {
require('../methods/item-shelving/getAlternative')(Self);
require('../methods/item-shelving/updateFromSale')(Self);
require('../methods/item-shelving/getListItemNewer')(Self);
+ require('../methods/item-shelving/getItemsByReviewOrder')(Self);
};
diff --git a/modules/item/back/models/item-type.js b/modules/item/back/models/item-type.js
new file mode 100644
index 000000000..4dc8adfc9
--- /dev/null
+++ b/modules/item/back/models/item-type.js
@@ -0,0 +1,9 @@
+let UserError = require('vn-loopback/util/user-error');
+
+module.exports = Self => {
+ Self.rewriteDbError(function(err) {
+ if (err.code === 'ER_DUP_ENTRY')
+ return new UserError(`An item type with the same code already exists`);
+ return err;
+ });
+};
diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js
index 927f49999..ac8a722bd 100644
--- a/modules/monitor/back/methods/sales-monitor/salesFilter.js
+++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js
@@ -88,6 +88,21 @@ module.exports = Self => {
arg: 'alertLevel',
type: 'number',
description: `The alert level of the tickets`
+ },
+ {
+ arg: 'packing',
+ type: 'string',
+ description: `The packing of the items`
+ },
+ {
+ arg: 'countryFk',
+ type: 'number',
+ description: 'The country id filter'
+ },
+ {
+ arg: 'payMethod',
+ type: 'string',
+ description: 'The payment method filter'
}
],
returns: {
@@ -155,6 +170,8 @@ module.exports = Self => {
case 'clientFk':
param = `t.${param}`;
return {[param]: value};
+ case 'payMethod':
+ return {'c.payMethodFk': value};
}
});
@@ -169,7 +186,7 @@ module.exports = Self => {
stmt = new ParameterizedSQL(`
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
(PRIMARY KEY (id))
- ENGINE = MEMORY
+ ENGINE = InnoDB
SELECT t.id,
t.shipped,
CAST(DATE(t.shipped) AS CHAR) shippedDate,
@@ -182,6 +199,7 @@ module.exports = Self => {
t.totalWithVat,
io.id invoiceOutId,
a.provinceFk,
+ p.countryFk,
p.name province,
w.name warehouse,
am.name agencyMode,
@@ -194,10 +212,20 @@ module.exports = Self => {
u.name userName,
c.salesPersonFk,
c.credit,
+ c.payMethodFk payMethodFk,
+ pm.id payMethodId,
+ pm.name payMethod,
z.hour zoneLanding,
z.name zoneName,
z.id zoneFk,
st.classColor,
+ d.id departmentFk,
+ d.name department,
+ (SELECT GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk SEPARATOR ',')
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ WHERE s.ticketFk = t.id
+ ) AS packing,
TIME_FORMAT(t.shipped, '%H:%i') preparationHour,
TIME_FORMAT(z.hour, '%H:%i') theoreticalhour,
TIME_FORMAT(zed.etc, '%H:%i') practicalHour
@@ -211,7 +239,10 @@ module.exports = Self => {
LEFT JOIN ticketState ts ON ts.ticketFk = t.id
LEFT JOIN state st ON st.id = ts.stateFk
LEFT JOIN client c ON c.id = t.clientFk
+ LEFT JOIN payMethod pm ON pm.id = c.payMethodFk
LEFT JOIN worker wk ON wk.id = c.salesPersonFk
+ LEFT JOIN workerDepartment wd ON wd.workerFk = wk.id
+ LEFT JOIN department d ON d.id = wd.departmentFk
LEFT JOIN account.user u ON u.id = wk.id
LEFT JOIN (
SELECT zoneFk,
@@ -342,7 +373,6 @@ module.exports = Self => {
'CHECKED',
'PACKING',
'PACKED',
- 'INVOICED',
'ON_DELIVERY',
'PREPARED',
'WAITING_FOR_PICKUP',
@@ -350,16 +380,15 @@ module.exports = Self => {
'PRINTED_BACK',
'LAST_CALL',
'PREVIOUS_PREPARATION',
- 'ASSISTED_PREPARATION',
- 'BOARD',
'PRINTED STOWAWAY',
- 'OK STOWAWAY',
'HALF_PACKED',
'COOLER_PREPARATION'
]}};
}
case 'agencyModeFk':
case 'warehouseFk':
+ case 'packing':
+ case 'countryFk':
param = `f.${param}`;
return {[param]: value};
}
diff --git a/modules/route/back/methods/agency-term/filter.js b/modules/route/back/methods/agency-term/filter.js
index 9d1268958..d52d93e95 100644
--- a/modules/route/back/methods/agency-term/filter.js
+++ b/modules/route/back/methods/agency-term/filter.js
@@ -66,9 +66,9 @@ module.exports = Self => {
case 'agencyFk':
return {'agencyFk': value};
case 'from':
- return {'created': {gte: value}};
+ return {'dated': {gte: value}};
case 'to':
- return {'created': {lte: value}};
+ return {'dated': {lte: value}};
}
});
@@ -81,7 +81,7 @@ module.exports = Self => {
`SELECT *
FROM (
SELECT r.id routeFk,
- r.created,
+ r.dated,
r.agencyModeFk,
am.name agencyModeName,
am.agencyFk,
@@ -103,7 +103,7 @@ module.exports = Self => {
LEFT JOIN vn.ticket t ON t.routeFk = r.id
LEFT JOIN vn.supplierAgencyTerm sat ON sat.agencyFk = a.id
LEFT JOIN vn.supplier s ON s.id = sat.supplierFk
- WHERE r.created > DATE_ADD(?, INTERVAL -2 MONTH) AND sat.supplierFk IS NOT NULL
+ WHERE r.dated > DATE_ADD(?, INTERVAL -2 MONTH) AND sat.supplierFk IS NOT NULL
GROUP BY r.id
) a`
, [date]);
diff --git a/modules/route/back/methods/route/clone.js b/modules/route/back/methods/route/clone.js
index d56118e08..c5c4d846a 100644
--- a/modules/route/back/methods/route/clone.js
+++ b/modules/route/back/methods/route/clone.js
@@ -10,10 +10,10 @@ module.exports = Self => {
description: 'The routes ids to clone'
},
{
- arg: 'created',
+ arg: 'dated',
type: 'date',
required: true,
- description: 'The created date for all routes'
+ description: 'The date for all routes'
}
],
returns: {
@@ -26,7 +26,7 @@ module.exports = Self => {
}
});
- Self.clone = async(ids, created) => {
+ Self.clone = async(ids, dated) => {
const tx = await Self.beginTransaction({});
try {
const options = {transaction: tx};
@@ -39,7 +39,7 @@ module.exports = Self => {
throw new Error(`The amount of routes found don't match`);
const routes = originalRoutes.map(route => {
- route.created = created;
+ route.dated = dated;
return route;
});
diff --git a/modules/route/back/methods/route/filter.js b/modules/route/back/methods/route/filter.js
index 925927cc8..70bf7ba67 100644
--- a/modules/route/back/methods/route/filter.js
+++ b/modules/route/back/methods/route/filter.js
@@ -93,9 +93,9 @@ module.exports = Self => {
case 'search':
return {'id': value};
case 'from':
- return {'created': {gte: value}};
+ return {'dated': {gte: value}};
case 'to':
- return {'created': {lte: value}};
+ return {'dated': {lte: value}};
case 'description':
return {'description': {like: `%${value}%`}};
case 'isOk':
@@ -119,7 +119,7 @@ module.exports = Self => {
SELECT
r.id,
r.workerFk,
- r.created,
+ r.dated,
r.vehicleFk,
r.agencyModeFk,
r.time,
diff --git a/modules/route/back/methods/route/getByWorker.js b/modules/route/back/methods/route/getByWorker.js
index 5d1881c20..92086bba0 100644
--- a/modules/route/back/methods/route/getByWorker.js
+++ b/modules/route/back/methods/route/getByWorker.js
@@ -46,14 +46,14 @@ module.exports = Self => {
and: [
{
or: [
- {'created': currentDate},
- {'created': nextDay}
+ {'dated': currentDate},
+ {'dated': nextDay}
]
}
]
},
order: [
- 'created ASC',
+ 'dated ASC',
'time ASC',
'agencyName ASC'
]
diff --git a/modules/route/back/methods/route/getSuggestedTickets.js b/modules/route/back/methods/route/getSuggestedTickets.js
index e1b90d359..daaff2bc8 100644
--- a/modules/route/back/methods/route/getSuggestedTickets.js
+++ b/modules/route/back/methods/route/getSuggestedTickets.js
@@ -43,10 +43,10 @@ module.exports = Self => {
for (let zoneAgencyMode of zoneAgencyModes)
zoneIds.push(zoneAgencyMode.zoneFk);
- const minDate = new Date(route.created);
+ const minDate = new Date(route.dated);
minDate.setHours(0, 0, 0, 0);
- const maxDate = new Date(route.created);
+ const maxDate = new Date(route.dated);
maxDate.setHours(23, 59, 59, 59);
let tickets = await Self.app.models.Ticket.find({
diff --git a/modules/route/back/methods/route/insertTicket.js b/modules/route/back/methods/route/insertTicket.js
index 4ac8bad1a..41c910116 100644
--- a/modules/route/back/methods/route/insertTicket.js
+++ b/modules/route/back/methods/route/insertTicket.js
@@ -42,10 +42,10 @@ module.exports = Self => {
try {
const route = await models.Route.findById(routeId, null, myOptions);
- const minDate = new Date(route.created);
+ const minDate = new Date(route.dated);
minDate.setHours(0, 0, 0, 0);
- const maxDate = new Date(route.created);
+ const maxDate = new Date(route.dated);
maxDate.setHours(23, 59, 59, 59);
const ticket = await models.Ticket.findOne({
where: {
diff --git a/modules/route/back/methods/route/optimizePriority.js b/modules/route/back/methods/route/optimizePriority.js
new file mode 100644
index 000000000..56db4ffb5
--- /dev/null
+++ b/modules/route/back/methods/route/optimizePriority.js
@@ -0,0 +1,122 @@
+const UserError = require('vn-loopback/util/user-error');
+
+module.exports = Self => {
+ Self.remoteMethod('optimizePriority', {
+ description: 'Updates the ticket priority of tickets without priority',
+ accepts: {
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'Route id',
+ http: {source: 'path'}
+ },
+ returns: {
+ type: 'object',
+ root: true
+ },
+ http: {
+ path: '/:id/optimizePriority',
+ verb: 'POST'
+ }
+ });
+
+ Self.optimizePriority = async(id, options) => {
+ const models = Self.app.models;
+ const myOptions = {};
+ let tx;
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ const tickets = await models.Ticket.find({
+ where: {routeFk: id}
+ }, myOptions);
+
+ let ticketAddress = [];
+ for (const ticket of tickets) {
+ ticketAddress.push({
+ ticketId: ticket.id,
+ addressId: ticket.addressFk,
+ zoneId: ticket.zoneFk,
+ priority: ticket.priority
+ });
+ }
+
+ // Igualamos los priority del mismo addressId
+ const addressPriorityMap = ticketAddress.reduce((acc, {addressId, priority}) => {
+ if (priority !== null) {
+ acc[addressId] = acc[addressId] === undefined
+ ? priority
+ : Math.max(acc[addressId], priority);
+ }
+ return acc;
+ });
+ ticketAddress.forEach(item => {
+ const maxPriority = addressPriorityMap[item.addressId];
+ if (maxPriority) item.priority = maxPriority;
+ });
+
+ // Añadimos las direcciones a optimizar
+ let addressIds = [];
+ ticketAddress.forEach(h => {
+ if (!addressIds.includes(h.addressId) && !h.priority)
+ addressIds.push(h.addressId);
+ });
+ if (!addressIds.length) throw new UserError('All tickets have a route order');
+
+ // Obtenemos el zoneId más frecuente
+ const zoneFrequency = ticketAddress.reduce((acc, {zoneId}) => {
+ if (zoneId != null) acc[zoneId] = (acc[zoneId] || 0) + 1;
+ return acc;
+ }, {});
+ const [mostFrequentZoneId] = Object.entries(zoneFrequency)
+ .reduce((maxEntry, entry) => entry[1] > maxEntry[1] ? entry : maxEntry, [null, 0]);
+
+ // Obtenemos los address inicio y fin
+ const maxPosition = Math.max(...ticketAddress.map(g => g.priority));
+ let firstAddress = (await models.Zone.findById(mostFrequentZoneId, myOptions))?.addressFk
+ || (await models.ZoneConfig.findOne())?.defaultAddressFk;
+ const lastAddress = firstAddress;
+ if (maxPosition) firstAddress = ticketAddress.find(g => g.priority === maxPosition)?.addressId;
+
+ // Revisamos las coincidencias y actualizamos la prioridad en el array
+ const addressPositions = await models.OsrmConfig.optimize(addressIds, firstAddress, lastAddress, myOptions);
+ await Promise.all(ticketAddress.map(async i => {
+ const foundPosition = addressPositions.find(item => item.addressId === i.addressId);
+ if (foundPosition) i.priority = foundPosition.position + (maxPosition + 1);
+ }));
+
+ // Suavizado de prioridad para que no hayan escalones
+ const allPriorities = ticketAddress
+ .map(item => item.priority)
+ .filter(p => p !== null);
+ const uniquePriorities = [...new Set(allPriorities)].sort((a, b) => a - b);
+ const priorityMap = {};
+ uniquePriorities.forEach((p, index) => {
+ priorityMap[p] = index + 1;
+ });
+ ticketAddress.forEach(item => {
+ if (item.priority !== null) item.priority = priorityMap[item.priority];
+ });
+
+ if (!myOptions.transaction) {
+ tx = await Self.beginTransaction({});
+ myOptions.transaction = tx;
+ }
+
+ // Realizamos el update en la base de datos
+ try {
+ await Promise.all(ticketAddress.map(async y => {
+ if (y.priority) {
+ const ticket = await models.Ticket.findById(y.ticketId);
+ await ticket.updateAttribute('priority', y.priority, myOptions);
+ }
+ }));
+ if (tx) await tx.commit();
+ return;
+ } catch (err) {
+ if (tx) await tx.rollback();
+ throw err;
+ }
+ };
+};
diff --git a/modules/route/back/methods/route/specs/optimizePriority.spec.js b/modules/route/back/methods/route/specs/optimizePriority.spec.js
new file mode 100644
index 000000000..c1c2dc45e
--- /dev/null
+++ b/modules/route/back/methods/route/specs/optimizePriority.spec.js
@@ -0,0 +1,36 @@
+const models = require('vn-loopback/server/server').models;
+const routeId = 1;
+
+describe('route optimizePriority())', function() {
+ it('should execute without throwing errors', async function() {
+ const tx = await models.Route.beginTransaction({});
+ let error;
+ try {
+ const options = {transaction: tx};
+ await models.Ticket.updateAll(
+ {routeFk: routeId},
+ {priority: null},
+ options
+ );
+ await models.Route.optimizePriority(routeId, options);
+ await tx.rollback();
+ } catch (e) {
+ error = e;
+ await tx.rollback();
+ }
+
+ expect(error).toBeUndefined();
+ });
+
+ it('should execute with error', async function() {
+ let error;
+ try {
+ await models.Route.optimizePriority(routeId);
+ } catch (e) {
+ error = e;
+ }
+
+ expect(error).toBeDefined();
+ expect(error.message).toBe('All tickets have a route order');
+ });
+});
diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js
index cd8685cec..f73ff3e51 100644
--- a/modules/route/back/models/route.js
+++ b/modules/route/back/models/route.js
@@ -16,4 +16,5 @@ module.exports = Self => {
require('../methods/route/downloadZip')(Self);
require('../methods/route/getExpeditionSummary')(Self);
require('../methods/route/getByWorker')(Self);
+ require('../methods/route/optimizePriority')(Self);
};
diff --git a/modules/route/back/models/route.json b/modules/route/back/models/route.json
index f8be9023c..8f4eab761 100644
--- a/modules/route/back/models/route.json
+++ b/modules/route/back/models/route.json
@@ -15,7 +15,7 @@
"id": true,
"description": "Identifier"
},
- "created": {
+ "dated": {
"type": "date"
},
"time": {
diff --git a/modules/route/front/descriptor/index.html b/modules/route/front/descriptor/index.html
index 4e7e99f1a..0079168a6 100644
--- a/modules/route/front/descriptor/index.html
+++ b/modules/route/front/descriptor/index.html
@@ -32,7 +32,7 @@
+ value="{{$ctrl.route.dated | date: 'dd/MM/yyyy'}}">
+ value="{{$ctrl.summary.route.dated | date: 'dd/MM/yyyy'}}">
diff --git a/modules/ticket/back/methods/expedition/deleteExpeditions.js b/modules/ticket/back/methods/expedition/deleteExpeditions.js
index 75993a485..267811d25 100644
--- a/modules/ticket/back/methods/expedition/deleteExpeditions.js
+++ b/modules/ticket/back/methods/expedition/deleteExpeditions.js
@@ -52,7 +52,8 @@ module.exports = Self => {
const deletedExpedition = await models.Expedition.destroyById(expeditionId);
deletedExpeditions.push(deletedExpedition);
- } catch (e) {
+ } catch (error) {
+ console.error('error: ', error);
notDeletedExpeditions.push(expeditionId);
}
}
diff --git a/modules/ticket/back/methods/expedition/filter.js b/modules/ticket/back/methods/expedition/filter.js
index 43be14349..bd2012668 100644
--- a/modules/ticket/back/methods/expedition/filter.js
+++ b/modules/ticket/back/methods/expedition/filter.js
@@ -49,7 +49,8 @@ module.exports = Self => {
es.workerFk expeditionScanWorkerFk,
su.name scannerUserName,
es.scanned,
- est.description state
+ est.description state,
+ de.longName
FROM vn.expedition e
LEFT JOIN vn.expeditionStateType est ON est.id = e.stateTypeFk
INNER JOIN vn.item i1 ON i1.id = e.freightItemFk
@@ -59,6 +60,7 @@ module.exports = Self => {
LEFT JOIN account.user u ON u.id = e.workerFk
LEFT JOIN vn.expeditionScan es ON es.expeditionFk = e.id
LEFT JOIN account.user su ON su.id = es.workerFk
+ LEFT JOIN dipole.expedition_PrintOut de ON de.expeditionFk = e.id
) e
`);
stmt.merge(conn.makeWhere(filter.where));
diff --git a/modules/ticket/back/methods/sale/updateQuantity.js b/modules/ticket/back/methods/sale/updateQuantity.js
index 36d75ffed..4de1bcbd6 100644
--- a/modules/ticket/back/methods/sale/updateQuantity.js
+++ b/modules/ticket/back/methods/sale/updateQuantity.js
@@ -82,7 +82,7 @@ module.exports = Self => {
const message = $t('Changed sale quantity', {
ticketId: sale.ticket().id,
- changes: change,
+ changes: JSON.stringify(change),
ticketUrl: `${url}ticket/${sale.ticket().id}/sale`,
});
diff --git a/modules/ticket/back/methods/ticket-request/confirm.js b/modules/ticket/back/methods/ticket-request/confirm.js
index 7c17d0010..45ee287de 100644
--- a/modules/ticket/back/methods/ticket-request/confirm.js
+++ b/modules/ticket/back/methods/ticket-request/confirm.js
@@ -54,9 +54,17 @@ module.exports = Self => {
throw new UserError(`That item doesn't exists`);
const request = await models.TicketRequest.findById(ctx.args.id, {
- include: {relation: 'ticket'}
+ include: {
+ relation: 'ticket',
+ scope: {
+ include: {
+ relation: 'client',
+ scope: {
+ fields: ['id', 'name', 'salesPersonFk']
+ }
+ }
+ }}
}, myOptions);
-
const itemStock = await models.Item.getVisibleAvailable(
ctx.args.itemFk,
request.ticket().warehouseFk,
@@ -89,19 +97,19 @@ module.exports = Self => {
const query = `CALL vn.sale_calculateComponent(?, NULL)`;
await Self.rawSql(query, [sale.id], myOptions);
- const url = await Self.app.models.Url.getUrl();
- const requesterId = request.requesterFk;
-
- const message = $t('Bought units from buy request', {
- quantity: sale.quantity,
- concept: sale.concept,
- itemId: sale.itemFk,
- ticketId: sale.ticketFk,
- url: `${url}ticket/${sale.ticketFk}/summary`,
- urlItem: `${url}item/${sale.itemFk}/summary`
- });
- await models.Chat.sendCheckingPresence(ctx, requesterId, message, myOptions);
-
+ const salesPerson = request.ticket().client().salesPersonFk;
+ if (salesPerson) {
+ const url = await Self.app.models.Url.getUrl();
+ const message = $t('Bought units from buy request', {
+ quantity: sale.quantity,
+ concept: sale.concept,
+ itemId: sale.itemFk,
+ ticketId: sale.ticketFk,
+ url: `${url}ticket/${sale.ticketFk}/summary`,
+ urlItem: `${url}item/${sale.itemFk}/summary`
+ });
+ await models.Chat.sendCheckingPresence(ctx, salesPerson, message, myOptions);
+ }
if (tx) await tx.commit();
return sale;
diff --git a/modules/ticket/back/methods/ticket-request/deny.js b/modules/ticket/back/methods/ticket-request/deny.js
index 44f1e48a1..26e6f63ff 100644
--- a/modules/ticket/back/methods/ticket-request/deny.js
+++ b/modules/ticket/back/methods/ticket-request/deny.js
@@ -1,18 +1,22 @@
+const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethodCtx('deny', {
- description: 'sets a ticket request to denied and returns the changes',
+ description: 'Sets a ticket request to denied and returns the changes',
accessType: 'WRITE',
- accepts: [{
- arg: 'id',
- type: 'number',
- required: true,
- description: 'The request ID',
- }, {
- arg: 'observation',
- type: 'String',
- required: true,
- description: 'The request observation',
- }],
+ accepts: [
+ {
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'The request ID',
+ },
+ {
+ arg: 'observation',
+ type: 'string',
+ required: true,
+ description: 'The request observation',
+ }
+ ],
returns: {
type: 'number',
root: true
@@ -29,7 +33,7 @@ module.exports = Self => {
const myOptions = {};
let tx;
- if (typeof options == 'object')
+ if (typeof options === 'object')
Object.assign(myOptions, options);
if (!myOptions.transaction) {
@@ -39,7 +43,7 @@ module.exports = Self => {
try {
const userId = ctx.req.accessToken.userId;
- const worker = await Self.app.models.Worker.findOne({where: {id: userId}}, myOptions);
+ const worker = await models.Worker.findById(userId, {fields: ['id']}, myOptions);
const params = {
isOk: false,
@@ -47,19 +51,32 @@ module.exports = Self => {
response: ctx.args.observation,
};
- const request = await Self.app.models.TicketRequest.findById(ctx.args.id, null, myOptions);
- await request.updateAttributes(params, myOptions);
+ const request = await models.TicketRequest.findById(ctx.args.id, {
+ include: {
+ relation: 'ticket',
+ scope: {
+ include: {
+ relation: 'client',
+ scope: {
+ fields: ['id', 'name', 'salesPersonFk']
+ }
+ }
+ }
+ }
+ }, myOptions);
- const url = await Self.app.models.Url.getUrl();
- const requesterId = request.requesterFk;
+ const salesPerson = request.ticket().client().salesPersonFk;
+ if (salesPerson) {
+ const url = await models.Url.getUrl();
+ const message = $t('Deny buy request', {
+ ticketId: request.ticketFk,
+ url: `${url}ticket/${request.ticketFk}/request/index`,
+ observation: params.response
+ });
- const message = $t('Deny buy request', {
- ticketId: request.ticketFk,
- url: `${url}ticket/${request.ticketFk}/request/index`,
- observation: params.response
- });
-
- await models.Chat.sendCheckingPresence(ctx, requesterId, message, myOptions);
+ await models.Chat.sendCheckingPresence(ctx, salesPerson, message, myOptions);
+ await request.updateAttributes(params, myOptions);
+ }
if (tx) await tx.commit();
diff --git a/modules/ticket/back/methods/ticket-request/filter.js b/modules/ticket/back/methods/ticket-request/filter.js
index 53f90b98f..c2edcae81 100644
--- a/modules/ticket/back/methods/ticket-request/filter.js
+++ b/modules/ticket/back/methods/ticket-request/filter.js
@@ -64,6 +64,11 @@ module.exports = Self => {
arg: 'myTeam',
type: 'boolean',
description: `Team partners`
+ },
+ {
+ arg: 'daysOnward',
+ type: 'number',
+ description: 'The days onward'
}
],
returns: {
@@ -104,6 +109,9 @@ module.exports = Self => {
teamMembersId.push(userId);
}
+ const today = Date.vnNew();
+ const future = Date.vnNew();
+
let where = buildFilter(ctx.args, (param, value) => {
switch (param) {
case 'search':
@@ -140,9 +148,13 @@ module.exports = Self => {
return {'tr.requesterFk': {inq: teamMembersId}};
else
return {'tr.requesterFk': {nin: teamMembersId}};
+ case 'daysOnward':
+ today.setHours(0, 0, 0, 0);
+ future.setDate(today.getDate() + value);
+ future.setHours(23, 59, 59, 999);
+ return {'t.shipped': {between: [today, future]}};
}
});
-
if (!where)
where = {};
where['tw.ticketFk'] = null;
diff --git a/modules/ticket/back/models/saleGroup.json b/modules/ticket/back/models/saleGroup.json
index aa78b4167..5f432b514 100644
--- a/modules/ticket/back/models/saleGroup.json
+++ b/modules/ticket/back/models/saleGroup.json
@@ -29,6 +29,11 @@
"type": "belongsTo",
"model": "Parking",
"foreignKey": "parkingFk"
+ },
+ "state": {
+ "type": "belongsTo",
+ "model": "State",
+ "foreignKey": "stateFk"
}
}
-}
+}
\ No newline at end of file
diff --git a/modules/ticket/front/sale/index.js b/modules/ticket/front/sale/index.js
index 4f8494ed0..3672c467d 100644
--- a/modules/ticket/front/sale/index.js
+++ b/modules/ticket/front/sale/index.js
@@ -387,10 +387,10 @@ class Controller extends Section {
}
newOrderFromTicket() {
- this.$http.post(`Orders/newFromTicket`, {ticketFk: this.ticket.id}).then(res => {
- const path = this.$state.href('order.card.catalog', {id: res.data});
- window.open(path, '_blank');
+ this.$http.post(`Orders/newFromTicket`, {ticketFk: this.ticket.id}).then(async res => {
+ const path = await this.vnApp.getUrl(`order/${res.data}/catalog`);
+ window.open(path, '_blank');
this.vnApp.showSuccess(this.$t('Order created'));
});
}
diff --git a/modules/ticket/front/sale/index.spec.js b/modules/ticket/front/sale/index.spec.js
index 931776619..8ff9aa624 100644
--- a/modules/ticket/front/sale/index.spec.js
+++ b/modules/ticket/front/sale/index.spec.js
@@ -567,14 +567,10 @@ describe('Ticket', () => {
const expectedResponse = {id: 123};
window.open = jasmine.createSpy('open');
- controller.$state.href = jasmine.createSpy('href')
- .and.returnValue('/somePath');
$httpBackend.expect('POST', `Orders/newFromTicket`, expectedParams).respond(expectedResponse);
controller.newOrderFromTicket();
$httpBackend.flush();
-
- expect(window.open).toHaveBeenCalledWith('/somePath', '_blank');
});
});
diff --git a/modules/travel/back/methods/travel/extraCommunityFilter.js b/modules/travel/back/methods/travel/extraCommunityFilter.js
index dcb704ff5..f1586f804 100644
--- a/modules/travel/back/methods/travel/extraCommunityFilter.js
+++ b/modules/travel/back/methods/travel/extraCommunityFilter.js
@@ -1,4 +1,3 @@
-
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
const buildFilter = require('vn-loopback/util/filter').buildFilter;
const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
@@ -87,7 +86,7 @@ module.exports = Self => {
return /^\d+$/.test(value)
? {'t.id': value}
: {'t.ref': {like: `%${value}%`}};
- case 'ref':
+ case 'reference':
return {'t.ref': {like: `%${value}%`}};
case 'shippedFrom':
return {'t.shipped': {gte: value}};
@@ -115,42 +114,39 @@ module.exports = Self => {
`CREATE TEMPORARY TABLE tmp.travel
(INDEX (id))
ENGINE = MEMORY
- SELECT
- t.id,
+ SELECT t.id,
t.ref,
t.shipped,
t.landed,
t.kg,
- am.id AS agencyModeFk,
- am.name AS agencyModeName,
- wo.id AS warehouseOutFk,
- wo.name AS warehouseOutName,
- w.name AS warehouseInFk,
- w.name AS warehouseInName,
- SUM(b.stickers) AS stickers,
- s.id AS cargoSupplierFk,
- s.nickname AS cargoSupplierNickname,
- s.name AS supplierName,
- CAST(SUM(b.weight * b.stickers) as DECIMAL(10,0)) as loadedKg,
+ am.id agencyModeFk,
+ am.name agencyModeName,
+ wo.id warehouseOutFk,
+ wo.name warehouseOutName,
+ w.name warehouseInFk,
+ w.name warehouseInName,
+ SUM(b.stickers) stickers,
+ s.id cargoSupplierFk,
+ s.nickname cargoSupplierNickname,
+ s.name supplierName,
+ CAST(SUM(b.weight * b.stickers) AS DECIMAL(10,0)) loadedKg,
CAST(
SUM(
vc.aerealVolumetricDensity *
b.stickers *
IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000
- ) as DECIMAL(10,0)
- ) as volumeKg,
- GREATEST(
- CAST(SUM(b.weight * b.stickers) AS INT),
- CAST(
+ ) AS DECIMAL(10,0)
+ ) volumeKg,
+ CAST(
+ GREATEST(
+ SUM(b.weight * b.stickers) ,
SUM(vc.aerealVolumetricDensity *
b.stickers *
- IF(pkg.volume,
- pkg.volume,
- pkg.width * pkg.depth * pkg.height
- ) / 1000000
- ) AS INT
- )
- / t.kg * 100, 0) percentageKg
+ IF(pkg.volume,
+ pkg.volume,
+ pkg.width * pkg.depth * pkg.height) / 1000000)
+ ) / t.kg * 100 AS INT
+ ) percentageKg
FROM travel t
LEFT JOIN supplier s ON s.id = t.cargoSupplierFk
LEFT JOIN entry e ON e.travelFk = t.id
diff --git a/modules/travel/back/methods/travel/specs/getEntries.spec.js b/modules/travel/back/methods/travel/specs/getEntries.spec.js
index fcaa80d02..9286a9d55 100644
--- a/modules/travel/back/methods/travel/specs/getEntries.spec.js
+++ b/modules/travel/back/methods/travel/specs/getEntries.spec.js
@@ -3,9 +3,10 @@ const models = require('vn-loopback/server/server').models;
describe('travel getEntries()', () => {
const travelId = 1;
it('should check the response contains the id', async() => {
- const entries = await models.Travel.getEntries(travelId);
+ const result = await models.Travel.getEntries(travelId);
+ const entries = await models.Entry.find({where: {travelFk: travelId}});
- expect(entries.length).toEqual(1);
+ expect(entries.length).toEqual(result.length);
expect(entries[0].id).toEqual(1);
});
diff --git a/modules/worker/back/methods/worker/createAbsence.js b/modules/worker/back/methods/worker/createAbsence.js
index 419659083..93ca7fd89 100644
--- a/modules/worker/back/methods/worker/createAbsence.js
+++ b/modules/worker/back/methods/worker/createAbsence.js
@@ -58,17 +58,24 @@ module.exports = Self => {
if (!isSubordinate || (isSubordinate && userId == id && !isTeamBoss))
throw new UserError(`You don't have enough privileges`);
+ const canCreateAbsenceInPast =
+ await models.ACL.checkAccessAcl(ctx, 'Worker', 'canCreateAbsenceInPast', 'WRITE');
+ const now = Date.vnNew();
+ const newDate = new Date(args.dated).getTime();
+
+ if ((now.getTime() > newDate) && !canCreateAbsenceInPast)
+ throw new UserError(`Holidays to past days not available`);
+
const labour = await models.WorkerLabour.findById(args.businessFk,
{fields: ['started', 'ended', 'businessFk']}, myOptions);
if (args.dated < labour.started || (labour.ended != null && args.dated > labour.ended))
throw new UserError(`The contract was not active during the selected date`);
- query = `SELECT *
- FROM vn.workerTimeControl
- WHERE userFk = ? AND timed BETWEEN DATE(?) AND CONCAT(DATE(?), ' 23:59:59')
- LIMIT 1;`;
- const [hasHoursRecorded] = await Self.rawSql(query, [id, args.dated, args.dated]);
+ const [hasHoursRecorded] = await Self.rawSql(`SELECT *
+ FROM vn.workerTimeControl
+ WHERE userFk = ? AND timed BETWEEN DATE(?) AND CONCAT(DATE(?), ' 23:59:59')
+ LIMIT 1;`, [id, args.dated, args.dated]);
const absenceType = await models.AbsenceType.findById(args.absenceTypeId, null, myOptions);
@@ -80,7 +87,6 @@ module.exports = Self => {
throw new UserError(`The worker has hours recorded that day`);
const date = Date.vnNew();
- const now = Date.vnNew();
date.setHours(0, 0, 0, 0);
const [result] = await Self.rawSql(
`SELECT COUNT(*) halfHolidayCounter
@@ -122,7 +128,10 @@ module.exports = Self => {
const account = await models.VnUser.findById(userId, null, myOptions);
const subordinated = await models.VnUser.findById(id, null, myOptions);
const worker = await models.Worker.findById(subordinated.id, null, myOptions);
- const departmentBoss = await models.VnUser.findById(worker.bossFk, null, myOptions);
+ const receiver = await models.EmailUser.findOne({
+ fields: ['email'],
+ where: {userFk: worker.bossFk}
+ }, myOptions);
const url = await Self.app.models.Url.getUrl();
const body = $t('Created absence', {
author: account.nickname,
@@ -134,7 +143,7 @@ module.exports = Self => {
await models.Mail.create({
subject: $t('Absence change notification on the labour calendar'),
body: body,
- receiver: departmentBoss.email
+ receiver: receiver.email
}, myOptions);
if (tx) await tx.commit();
diff --git a/modules/worker/back/methods/worker/specs/createAbsence.spec.js b/modules/worker/back/methods/worker/specs/createAbsence.spec.js
index fcb1c1633..1c7efcd28 100644
--- a/modules/worker/back/methods/worker/specs/createAbsence.spec.js
+++ b/modules/worker/back/methods/worker/specs/createAbsence.spec.js
@@ -162,4 +162,33 @@ describe('Worker createAbsence()', () => {
expect(error.message).toEqual(`The worker has hours recorded that day`);
});
+
+ it(`Should throw an error when adding a "Vacation" absence on a past day`, async() => {
+ const ctx = {
+ req: {accessToken: {userId: 19}},
+ args: {
+ id: 1110,
+ businessFk: 1110,
+ absenceTypeId: 1,
+ dated: '2000-12-27T23:00:00.000Z',
+ }
+ };
+ const workerId = 19;
+
+ 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(`Holidays to past days not available`);
+ });
});
diff --git a/modules/worker/back/models/device-production-user.json b/modules/worker/back/models/device-production-user.json
index a024cc94c..31aaf92d4 100644
--- a/modules/worker/back/models/device-production-user.json
+++ b/modules/worker/back/models/device-production-user.json
@@ -25,7 +25,7 @@
"userFk": {
"type": "number"
},
- "simSerialNumber": {
+ "simFk": {
"type": "string"
},
"created": {
diff --git a/modules/worker/back/models/worker-irpf.json b/modules/worker/back/models/worker-irpf.json
index 65f72a1fd..eafda0596 100644
--- a/modules/worker/back/models/worker-irpf.json
+++ b/modules/worker/back/models/worker-irpf.json
@@ -23,7 +23,7 @@
"type" : "number"
},
"isDependend": {
- "type" : "number"
+ "type" : "boolean"
},
"familySituation": {
"type" : "number"
@@ -35,15 +35,17 @@
"type" : "number"
},
"hasHousingPaymentBefore": {
- "type" : "number"
+ "type" : "boolean"
},
"hasHousingPaymentAfter": {
- "type" : "number"
+ "type" : "boolean"
},
"updated": {
"type" : "date"
+ },
+ "hasExtendedWorking": {
+ "type" : "boolean"
}
-
},
"relations": {
"disabilityGrade": {
diff --git a/modules/zone/back/methods/zone/deleteZone.js b/modules/zone/back/methods/zone/deleteZone.js
index 7432475b3..a147ee588 100644
--- a/modules/zone/back/methods/zone/deleteZone.js
+++ b/modules/zone/back/methods/zone/deleteZone.js
@@ -51,9 +51,9 @@ module.exports = Self => {
};
const ticketList = await models.Ticket.find(filter, myOptions);
-
- if (ticketList.length > 0)
- throw new UserError('There are tickets for this area, delete them first');
+ const hasRefFk = ticketList.some(ticket => !ticket.refFk);
+ if (hasRefFk)
+ throw new UserError('There are tickets to be invoiced');
await models.Zone.destroyById(id, myOptions);
diff --git a/modules/zone/back/methods/zone/specs/deleteZone.spec.js b/modules/zone/back/methods/zone/specs/deleteZone.spec.js
index aef7fd290..510713f9e 100644
--- a/modules/zone/back/methods/zone/specs/deleteZone.spec.js
+++ b/modules/zone/back/methods/zone/specs/deleteZone.spec.js
@@ -8,14 +8,14 @@ describe('zone deletezone()', () => {
__: value => value
};
const ctx = {req: activeCtx};
- const zoneId = 4;
- const zoneId2 = 3;
let ticketIDs;
beforeAll(async() => {
spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
active: activeCtx
});
+
+ const zoneId = 4;
const originalTickets = await models.Ticket.find({
where: {
zoneFk: zoneId
@@ -29,7 +29,7 @@ describe('zone deletezone()', () => {
it('should delete a zone and update their tickets', async() => {
const tx = await models.Zone.beginTransaction({});
-
+ const zoneId = 4;
try {
const options = {transaction: tx};
await models.Zone.deleteZone(ctx, zoneId, options);
@@ -47,17 +47,18 @@ describe('zone deletezone()', () => {
it('should not delete the zone if it has tickets', async() => {
const tx = await models.Zone.beginTransaction({});
+ const zoneId = 1;
let error;
try {
const options = {transaction: tx};
- await models.Zone.deleteZone(ctx, zoneId2, options);
+ await models.Zone.deleteZone(ctx, zoneId, options);
await tx.rollback();
} catch (e) {
error = e.message;
await tx.rollback();
}
- expect(error).toEqual('There are tickets for this area, delete them first');
+ expect(error).toEqual('There are tickets to be invoiced');
});
});
diff --git a/modules/zone/back/model-config.json b/modules/zone/back/model-config.json
index 3bbbe0d1b..2cd3f9d01 100644
--- a/modules/zone/back/model-config.json
+++ b/modules/zone/back/model-config.json
@@ -17,6 +17,9 @@
"ZoneClosure": {
"dataSource": "vn"
},
+ "ZoneConfig": {
+ "dataSource": "vn"
+ },
"ZoneEvent": {
"dataSource": "vn"
},
diff --git a/modules/zone/back/models/zone-config.json b/modules/zone/back/models/zone-config.json
new file mode 100644
index 000000000..a5da7fe55
--- /dev/null
+++ b/modules/zone/back/models/zone-config.json
@@ -0,0 +1,28 @@
+{
+ "name": "ZoneConfig",
+ "options": {
+ "mysql": {
+ "table": "zoneConfig"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "description": "Identifier"
+ },
+ "scope": {
+ "type": "number"
+ },
+ "forwardDays": {
+ "type": "number"
+ }
+ },
+ "relations": {
+ "address": {
+ "type": "belongsTo",
+ "model": "Address",
+ "foreignKey": "defaultAddressFk"
+ }
+ }
+}
diff --git a/modules/zone/back/models/zone.js b/modules/zone/back/models/zone.js
index 6d5a6cdca..7b5cb4301 100644
--- a/modules/zone/back/models/zone.js
+++ b/modules/zone/back/models/zone.js
@@ -14,4 +14,18 @@ module.exports = Self => {
Self.validatesPresenceOf('agencyModeFk', {
message: `Agency cannot be blank`
});
+
+ Self.validatesPresenceOf('price', {
+ message: 'Price cannot be blank'
+ });
+ Self.validateAsync('price', priceIsValid, {
+ message: 'Price must be greater than 0'
+ });
+
+ async function priceIsValid(err, done) {
+ if (this.price <= 0)
+ err();
+
+ done();
+ }
};
diff --git a/modules/zone/back/models/zone.json b/modules/zone/back/models/zone.json
index 5b25e40d1..141b28750 100644
--- a/modules/zone/back/models/zone.json
+++ b/modules/zone/back/models/zone.json
@@ -1,9 +1,9 @@
{
"name": "Zone",
"base": "VnModel",
- "mixins": {
- "Loggable": true
- },
+ "mixins": {
+ "Loggable": true
+ },
"options": {
"mysql": {
"table": "zone"
@@ -48,30 +48,35 @@
}
},
"relations": {
- "agencyMode": {
- "type": "belongsTo",
- "model": "AgencyMode",
- "foreignKey": "agencyModeFk"
+ "agencyMode": {
+ "type": "belongsTo",
+ "model": "AgencyMode",
+ "foreignKey": "agencyModeFk"
},
"events": {
- "type": "hasMany",
- "model": "ZoneEvent",
- "foreignKey": "zoneFk"
- },
+ "type": "hasMany",
+ "model": "ZoneEvent",
+ "foreignKey": "zoneFk"
+ },
"exclusions": {
- "type": "hasMany",
- "model": "ZoneExclusion",
+ "type": "hasMany",
+ "model": "ZoneExclusion",
"foreignKey": "zoneFk"
},
"warehouses": {
"type": "hasMany",
"model": "ZoneWarehouse",
"foreignKey": "zoneFk"
- },
+ },
"closures": {
"type": "hasMany",
"model": "ZoneClosure",
"foreignKey": "zoneFk"
- }
- }
+ },
+ "address": {
+ "type": "belongsTo",
+ "model": "Address",
+ "foreignKey": "addressFk"
+ }
+ }
}
diff --git a/myt.config.yml b/myt.config.yml
index 92936869e..a947405b3 100755
--- a/myt.config.yml
+++ b/myt.config.yml
@@ -71,6 +71,7 @@ fixtures:
- ticketUpdateAction
- ticketCanAdvanceConfig
- volumeConfig
+ - workerActivityType
- workCenter
- workerTimeControlError
cache:
@@ -258,7 +259,6 @@ localFixtures:
- itemFamily
- itemLog
- itemShelving
- - itemShelvingLog
- itemShelvingSale
- itemTag
- itemTaxCountry
diff --git a/package.json b/package.json
index ef1dd8f89..4e823eaad 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "salix-back",
- "version": "24.50.0",
+ "version": "24.52.0",
"author": "Verdnatura Levante SL",
"description": "Salix backend",
"license": "GPL-3.0",
diff --git a/print/templates/email/incoterms-authorization/locale/en.yml b/print/templates/email/incoterms-authorization/locale/en.yml
new file mode 100644
index 000000000..7e1402575
--- /dev/null
+++ b/print/templates/email/incoterms-authorization/locale/en.yml
@@ -0,0 +1,6 @@
+subject: Incoterms Authorization
+title: Incoterms Authorization
+description:
+ dear: Dear customer
+ instructions: Please find attached the Incoterms authorization form, which you must complete and sign.
+ conclusion: Thank you for your attention!
diff --git a/print/templates/reports/balance-compensation/locale/en.yml b/print/templates/reports/balance-compensation/locale/en.yml
new file mode 100644
index 000000000..824127482
--- /dev/null
+++ b/print/templates/reports/balance-compensation/locale/en.yml
@@ -0,0 +1,16 @@
+reportName: balance-compensation
+Place: Algemesí, on
+Compensation: Compensation of debtor and creditor balances
+In one hand: On one hand
+CIF: with CIF
+NIF: with NIF
+Home: and address located at
+In other hand: On the other hand
+Sr: Mr./Ms.
+Agree: Agree
+Date: On the date of
+Compensate: the balance of has been compensated
+From client: from the client/supplier
+Against the balance of: against the balance of
+Reception: Please confirm receipt of this compensation at the email
+Greetings: Best regards,
diff --git a/print/templates/reports/buy-label-barcode/assets/css/style.css b/print/templates/reports/buy-label-barcode/assets/css/style.css
index fabecd28e..ce1924878 100644
--- a/print/templates/reports/buy-label-barcode/assets/css/style.css
+++ b/print/templates/reports/buy-label-barcode/assets/css/style.css
@@ -32,6 +32,11 @@ td {
.md-txt {
font-size: 26px;
}
+.lg-txt {
+ font-size: 40px;
+ padding: 0px;
+ line-height: 1;
+}
.xl-txt {
font-size: 50px;
}
diff --git a/print/templates/reports/buy-label-barcode/buy-label-barcode.html b/print/templates/reports/buy-label-barcode/buy-label-barcode.html
index f14f0b70b..ebddb60ec 100644
--- a/print/templates/reports/buy-label-barcode/buy-label-barcode.html
+++ b/print/templates/reports/buy-label-barcode/buy-label-barcode.html
@@ -36,12 +36,12 @@
-
+ |
- {{buy.itemFk}}
+ {{formatNumber(buy.itemFk)}}
|
-
+ |
{{`${(packing || buy.packing)} x ${buy.stems || ''}`}}
@@ -56,7 +56,7 @@
{{'LAID'}}
- {{buy.entryFk}}
+ {{formatNumber(buy.entryFk)}}
|
@@ -73,17 +73,17 @@
-
+ |
- {{buy.buyFk}}
+ {{formatNumber(buy.buyFk)}}
|
-
+ |
{{date}}
|
-
+ |
{{`${buy.labelNum}/${buy.quantity / (packing || buy.packing)}`}}
diff --git a/print/templates/reports/buy-label-barcode/buy-label-barcode.js b/print/templates/reports/buy-label-barcode/buy-label-barcode.js
index 8c39a7046..37b618f09 100755
--- a/print/templates/reports/buy-label-barcode/buy-label-barcode.js
+++ b/print/templates/reports/buy-label-barcode/buy-label-barcode.js
@@ -9,7 +9,7 @@ module.exports = {
this.date = Date.vnNew();
this.buys = await this.rawSqlFromDef('buy', [this.copies || 1, this.id]);
if (!this.buys.length) throw new UserError(`Empty data source`);
- this.date = moment(this.date).format('WW/E');
+ this.date = moment(this.date).format('WW/DD');
},
methods: {
getBarcode(data) {
@@ -20,11 +20,14 @@ module.exports = {
xmlDocument: document,
format: 'code128',
displayValue: false,
- width: 3.8,
- height: 85,
+ width: 3.5,
+ height: 75,
margin: 0
});
return new XMLSerializer().serializeToString(svgNode);
+ },
+ formatNumber(number) {
+ return new Intl.NumberFormat('es-ES', {maximumFractionDigits: 0}).format(number);
}
},
props: {
diff --git a/print/templates/reports/buy-label-qr/assets/css/style.css b/print/templates/reports/buy-label-qr/assets/css/style.css
index 0e288704b..36db0fdef 100644
--- a/print/templates/reports/buy-label-qr/assets/css/style.css
+++ b/print/templates/reports/buy-label-qr/assets/css/style.css
@@ -34,6 +34,9 @@ html {
background-color: black;
color: white;
}
+.sm-txt {
+ font-size: 18px;
+}
.md-txt {
font-size: 20px;
}
diff --git a/print/templates/reports/buy-label-qr/buy-label-qr.html b/print/templates/reports/buy-label-qr/buy-label-qr.html
index 00e64b57d..00ede5488 100644
--- a/print/templates/reports/buy-label-qr/buy-label-qr.html
+++ b/print/templates/reports/buy-label-qr/buy-label-qr.html
@@ -11,8 +11,8 @@
|
-
- {{buy.buyFk}}
+ |
+ {{formatNumber(buy.buyFk)}}
|
@@ -28,7 +28,7 @@
- {{buy.itemFk}}
+ {{formatNumber(buy.itemFk)}}
|
@@ -78,8 +78,7 @@
{{'LAID'}}
-
- {{buy.entryFk}}
+
@@ -103,7 +102,7 @@
- Entrada: {{buy.entryFk}}
+ Entrada: {{formatNumber(buy.entryFk)}}
|
diff --git a/print/templates/reports/buy-label-qr/buy-label-qr.js b/print/templates/reports/buy-label-qr/buy-label-qr.js
index 74470ad6d..614e40816 100755
--- a/print/templates/reports/buy-label-qr/buy-label-qr.js
+++ b/print/templates/reports/buy-label-qr/buy-label-qr.js
@@ -9,7 +9,7 @@ module.exports = {
this.buys = await this.rawSqlFromDef('buy', [this.copies || 1, this.id]);
if (!this.buys.length) throw new UserError(`Empty data source`);
this.qr = await this.getQr(this.buys[0].buyFk);
- this.date = moment(this.date).format('WW/E');
+ this.date = moment(this.date).format('WW/DD');
},
methods: {
getQr(data) {
@@ -24,6 +24,9 @@ module.exports = {
margin: 0,
errorCorrectionLevel: 'L'
});
+ },
+ formatNumber(number) {
+ return new Intl.NumberFormat('es-ES', {maximumFractionDigits: 0}).format(number);
}
},
props: {
diff --git a/print/templates/reports/buy-label-supplier/buy-label-supplier.html b/print/templates/reports/buy-label-supplier/buy-label-supplier.html
index 5777d34de..31fef38f7 100644
--- a/print/templates/reports/buy-label-supplier/buy-label-supplier.html
+++ b/print/templates/reports/buy-label-supplier/buy-label-supplier.html
@@ -86,7 +86,7 @@
{{$t('boxNum')}}
- {{`${buy.labelNum} / ${buy.maxLabelNum}`}}
+ {{getTotal(buy)}}
|
diff --git a/print/templates/reports/buy-label-supplier/buy-label-supplier.js b/print/templates/reports/buy-label-supplier/buy-label-supplier.js
index 3cef5f295..5e59472eb 100755
--- a/print/templates/reports/buy-label-supplier/buy-label-supplier.js
+++ b/print/templates/reports/buy-label-supplier/buy-label-supplier.js
@@ -9,7 +9,7 @@ module.exports = {
mixins: [vnReport],
async serverPrefetch() {
const buy = await models.Buy.findById(this.id, null);
- this.buys = await this.rawSqlFromDef('buy', [buy.entryFk, buy.entryFk, buy.entryFk, this.id]);
+ this.buys = await this.rawSqlFromDef('buy', [buy.entryFk, buy.entryFk, buy.entryFk, this.id, this.id]);
const date = new Date();
this.weekNum = moment(date).isoWeek();
this.dayNum = moment(date).day();
@@ -27,6 +27,11 @@ module.exports = {
height: 115,
});
return new XMLSerializer().serializeToString(svgNode);
+ },
+ getTotal(buy) {
+ return (this.showEntryLines) ?
+ `${buy.entryLabelNum} / ${buy.entryLabels}` :
+ `${buy.buyLabelNum} / ${buy.buyLabels}`;
}
},
props: {
@@ -34,6 +39,10 @@ module.exports = {
type: Number,
required: true,
description: 'The entry id'
+ },
+ showEntryLines: {
+ type: Boolean,
+ required: false
}
}
};
diff --git a/print/templates/reports/buy-label-supplier/sql/buy.sql b/print/templates/reports/buy-label-supplier/sql/buy.sql
index 26efeb06e..fe001ff10 100644
--- a/print/templates/reports/buy-label-supplier/sql/buy.sql
+++ b/print/templates/reports/buy-label-supplier/sql/buy.sql
@@ -10,7 +10,7 @@ WITH RECURSIVE numbers AS (
)
),
labels AS (
- SELECT ROW_NUMBER() OVER(ORDER BY b.id, num.n) labelNum,
+ SELECT ROW_NUMBER() OVER(ORDER BY b.id, num.n) entryLabelNum,
i.name,
i.`size`,
i.category,
@@ -33,6 +33,9 @@ labels AS (
WHERE b.entryFk = ?
AND num.n <= b.stickers
)
-SELECT *, (SELECT SUM(stickers) FROM buy WHERE entryFk = ?) maxLabelNum
+SELECT *,
+ ROW_NUMBER() OVER(ORDER BY entryLabelNum) buyLabelNum,
+ (SELECT SUM(stickers) FROM buy WHERE entryFk = ?) entryLabels,
+ (SELECT stickers FROM buy WHERE id = ?) buyLabels
FROM labels
WHERE id = ?
\ No newline at end of file
diff --git a/print/templates/reports/driver-route/driver-route.html b/print/templates/reports/driver-route/driver-route.html
index 109afd2f5..e3a206656 100644
--- a/print/templates/reports/driver-route/driver-route.html
+++ b/print/templates/reports/driver-route/driver-route.html
@@ -16,7 +16,7 @@
{{$t('date')}} |
- {{formatDate(route.created, '%d-%m-%Y')}} |
+ {{formatDate(route.dated, '%d-%m-%Y')}} |
{{$t('vehicle')}} |
{{route.vehicleTradeMark}} {{route.vehicleModel}} |
diff --git a/print/templates/reports/driver-route/sql/routes.sql b/print/templates/reports/driver-route/sql/routes.sql
index 9d2dd5c13..334f2337d 100644
--- a/print/templates/reports/driver-route/sql/routes.sql
+++ b/print/templates/reports/driver-route/sql/routes.sql
@@ -1,6 +1,6 @@
SELECT r.id,
r.m3,
- r.created,
+ r.dated,
r.time,
u.nickName userNickName,
v.tradeMark vehicleTradeMark,
diff --git a/print/templates/reports/entry-order/entry-order.html b/print/templates/reports/entry-order/entry-order.html
index 90a95481f..d3f909d4d 100644
--- a/print/templates/reports/entry-order/entry-order.html
+++ b/print/templates/reports/entry-order/entry-order.html
@@ -62,7 +62,7 @@
x |
{{buy.packing}} |
{{buy.name}} |
-
referencia de prueba |
+
{{buy.comment}} |
{{buy.tag5}}→ {{buy.value5}}
diff --git a/print/templates/reports/expedition-pallet-label/sql/labelData.sql b/print/templates/reports/expedition-pallet-label/sql/labelData.sql
index 49a4031ae..5ddf8eb6e 100644
--- a/print/templates/reports/expedition-pallet-label/sql/labelData.sql
+++ b/print/templates/reports/expedition-pallet-label/sql/labelData.sql
@@ -4,7 +4,7 @@ SELECT ep.id palletFk,
r.description `zone`,
COUNT(es.id) labels,
t.warehouseFk warehouseFk,
- dayname(r.created) `dayName`,
+ dayname(r.dated) `dayName`,
rs.id <=> rm.roadmapStopFk isMatch
FROM vn.roadmapStop rs
JOIN vn.expeditionPallet ep ON ep.truckFk = rs.id
diff --git a/print/templates/reports/incoterms-authorization/locale/en.yml b/print/templates/reports/incoterms-authorization/locale/en.yml
new file mode 100644
index 000000000..eb6a8a513
--- /dev/null
+++ b/print/templates/reports/incoterms-authorization/locale/en.yml
@@ -0,0 +1,39 @@
+reportName: autorization-incoterms
+description: ' {socialName} a duly constituted and responsible company limited
+and registered under corporate law {country} and here represented by {socialName}, with address in {address},
+CIF {fiscalID}. Hereinafter referred to as {name}.'
+issued: 'In {0}, on {1} of {2} of {3}'
+client: 'Customer {0}'
+declaration: ' {socialName} hereby declares that:'
+declarations:
+ - 'All purchases made by {socialName} with {companyName} They are delivered according to the conditions defined in the Incoterm.'
+ - '{socialName} recognizes that it is important for {companyName} have
+proof of intra-community delivery of the goods to {destinationCountry} to
+be able to invoice with 0% VAT.'
+ - 'Therefore, by signing this agreement, {socialName} declares that all goods
+purchased from {companyName} will be delivered to {destinationCountry}.'
+ - 'Besides, {socialName} shall, at the first request of {companyName},
+provide proof that all products purchased from {companyName} have
+been delivered in {destinationCountry}.'
+ - 'In addition to the above, {companyName} will provide to {socialName}
+a monthly summary that includes all bills (and corresponding deliveries).
+{socialName} will sign and return the monthly summary to {companyName},
+S.L. within 5 days of receiving the summary.'
+signer:
+ representative: Representative
+ representativeRole: Position of the representative
+ signed: Date of signature
+manager: Manager
+months:
+ - 'January'
+ - 'February'
+ - 'March'
+ - 'April'
+ - 'May'
+ - 'June'
+ - 'July'
+ - 'August'
+ - 'September'
+ - 'October'
+ - 'November'
+ - 'December'
|