7983-testToMaster_2438 #2977
58
CHANGELOG.md
58
CHANGELOG.md
|
@ -1,3 +1,61 @@
|
|||
# Version 24.32 - 2024-08-06
|
||||
|
||||
### Added 🆕
|
||||
|
||||
- chore: refs #7197 add supplierActivityFk filter by:jorgep
|
||||
- feat checkExpeditionPrintOut refs #7751 by:sergiodt
|
||||
- feat(defaulter_filter): add department by:alexm
|
||||
- feat: redirect to lilium page not found by:alexm
|
||||
- feat: refactor buyUltimate refs #7736 by:Carlos Andrés
|
||||
- feat: refs #6403 add delete by:pablone
|
||||
- feat: refs #7126 Added manaClaim calc by:guillermo
|
||||
- feat: refs #7126 Refactor and added columns in bs.waste table & proc by:guillermo
|
||||
- feat: refs #7197 filter by correcting by:jorgep
|
||||
- feat: refs #7297 add new columns by:pablone
|
||||
- feat: refs #7356 new parameters in sql for Weekly tickets front by:Jon
|
||||
- feat: refs #7401 redirect lilium by:pablone
|
||||
- feat: refs #7511 Fix tests by:guillermo
|
||||
- feat: refs #7511 Rename to multiConfig tables by:guillermo
|
||||
- feat: refs #7589 Added display (item_valuateInventory) by:guillermo
|
||||
- feat: refs #7589 Added vItemTypeFk & vItemCategoryFk (item_valuateInventory) by:guillermo
|
||||
- feat: refs #7681 Changes by:guillermo
|
||||
- feat: refs #7681 Optimization and refactor by:guillermo
|
||||
- feat: refs #7683 drop temporary table by:robert
|
||||
- feat: refs #7683 productionControl by:robert
|
||||
- feat: refs #7728 Added throw due date by:guillermo
|
||||
- feat: refs #7740 Ticket before update added restriction by:guillermo
|
||||
- feat(salix): #7648 Add field for endpoint as buyLabel report by:Javier Segarra
|
||||
- feat(salix): #7648 remove white line by:Javier Segarra
|
||||
- feat: tabla config dias margen vctos. refs #7728 by:Carlos Andrés
|
||||
|
||||
### Changed 📦
|
||||
|
||||
- eat: refactor buyUltimate refs #7736 by:Carlos Andrés
|
||||
- feat: refactor buyUltimate refs #7736 by:Carlos Andrés
|
||||
- feat: refs #7681 Optimization and refactor by:guillermo
|
||||
- refactor: refs #7126 Requested changes by:guillermo
|
||||
- refactor: refs #7511 Minor change by:guillermo
|
||||
- refactor: refs #7640 Multipleinventory available by:guillermo
|
||||
- refactor: refs #7681 Changes by:guillermo
|
||||
- refactor: refs #7681 Requested changes by:guillermo
|
||||
|
||||
### Fixed 🛠️
|
||||
|
||||
- add prefix (hotFix_liliumRedirection) by:alexm
|
||||
- fix(client_filter): add recovery by:alexm
|
||||
- fix: defaulter filter correct sql (6943-fix_defaulter_filter) by:alexm
|
||||
- fix(deletExpeditions): merge test → dev by:guillermo
|
||||
- fix: refs #6403 fix mrw cancel shipment return type by:pablone
|
||||
- fix: refs #7126 Added addressWaste type by:guillermo
|
||||
- fix: refs #7126 Fix by:guillermo
|
||||
- fix: refs #7126 Minor change by:guillermo
|
||||
- fix: refs #7126 Primary key no unique data by:guillermo
|
||||
- fix: refs #7126 Slow update by:guillermo
|
||||
- fix: refs #7511 Minor change by:guillermo
|
||||
- fix: refs #7546 Deleted insert util.binlogQueue by:guillermo
|
||||
- fix: refs #7811 Variables pm2 by:guillermo
|
||||
- fix: without path by:alexm
|
||||
|
||||
# Version 24.28 - 2024-07-09
|
||||
|
||||
### Added 🆕
|
||||
|
|
|
@ -20,13 +20,14 @@ module.exports = Self => {
|
|||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
||||
const randStr = Math.random().toString(36).substring(3);
|
||||
const result = await Self.rawSql(`
|
||||
CALL vn.collection_assign(?, @vCollectionFk);
|
||||
SELECT @vCollectionFk collectionFk
|
||||
`, [userId], myOptions);
|
||||
SELECT @vCollectionFk ?
|
||||
`, [userId, randStr], myOptions);
|
||||
|
||||
// Por si entra en el SELECT FOR UPDATE y retorna un array más
|
||||
const collectionFk = result[2]?.[0]?.collectionFk || result[3]?.[0]?.collectionFk;
|
||||
// Por si entra en SELECT FOR UPDATE una o varias veces
|
||||
const collectionFk = result.find(item => item[0]?.[randStr] !== undefined)?.[0]?.[randStr];
|
||||
|
||||
if (!collectionFk) throw new UserError('There are not picking tickets');
|
||||
await Self.rawSql('CALL vn.collection_printSticker(?, NULL)', [collectionFk], myOptions);
|
||||
|
|
|
@ -57,8 +57,10 @@ module.exports = Self => {
|
|||
ROW_NUMBER () OVER (PARTITION BY s.id ORDER BY pickingOrder) currentItemShelving,
|
||||
COUNT(*) OVER (PARTITION BY s.id ORDER BY s.id) totalItemShelving,
|
||||
sh.code,
|
||||
IFNULL(p2.code, p.code) parkingCode,
|
||||
IFNULL(p2.pickingOrder, p.pickingOrder) pickingOrder,
|
||||
p2.code parkingCode,
|
||||
p2.pickingOrder pickingOrder,
|
||||
p.code parkingCodePrevia,
|
||||
p.pickingOrder pickingOrderPrevia,
|
||||
iss.id itemShelvingSaleFk,
|
||||
iss.isPicked
|
||||
FROM ticketCollection tc
|
||||
|
@ -95,8 +97,10 @@ module.exports = Self => {
|
|||
ROW_NUMBER () OVER (PARTITION BY s.id ORDER BY p.pickingOrder),
|
||||
COUNT(*) OVER (PARTITION BY s.id ORDER BY s.id) ,
|
||||
sh.code,
|
||||
IFNULL(p2.code, p.code),
|
||||
IFNULL(p2.pickingOrder, p.pickingOrder),
|
||||
p2.code,
|
||||
p2.pickingOrder,
|
||||
p.code,
|
||||
p.pickingOrder,
|
||||
iss.id itemShelvingSaleFk,
|
||||
iss.isPicked
|
||||
FROM sectorCollection sc
|
||||
|
|
|
@ -37,7 +37,6 @@ module.exports = Self => {
|
|||
});
|
||||
|
||||
const xmlString = response.data;
|
||||
console.log('xmlString: ', xmlString);
|
||||
const parser = new DOMParser();
|
||||
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
|
||||
const result = xmlDoc.getElementsByTagName('Mensaje')[0].textContent;
|
||||
|
|
|
@ -47,7 +47,7 @@ module.exports = Self => {
|
|||
co.code countryCode,
|
||||
c.fi,
|
||||
c.name clientName,
|
||||
a.mobile,
|
||||
IFNULL(a.mobile, c.mobile) mobile,
|
||||
DATE_FORMAT(t.shipped, '%d/%m/%Y') created,
|
||||
t.shipped,
|
||||
CONCAT( e.ticketFk, LPAD(e.counter, mc.counterWidth, '0')) reference,
|
||||
|
|
|
@ -11,13 +11,6 @@ module.exports = Self => {
|
|||
arg: 'filter',
|
||||
type: 'object',
|
||||
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
|
||||
http: {source: 'query'}
|
||||
},
|
||||
{
|
||||
arg: 'search',
|
||||
type: 'string',
|
||||
description: 'Value to filter',
|
||||
http: {source: 'query'}
|
||||
},
|
||||
],
|
||||
returns: {
|
||||
|
@ -29,13 +22,11 @@ module.exports = Self => {
|
|||
verb: 'GET',
|
||||
},
|
||||
});
|
||||
Self.filter = async(ctx, filter, options) => {
|
||||
Self.filter = async(filter = {}, options) => {
|
||||
const myOptions = {};
|
||||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
||||
filter = ctx?.filter ?? {};
|
||||
|
||||
const conn = Self.dataSource.connector;
|
||||
const where = buildFilter(filter?.where, (param, value) => {
|
||||
switch (param) {
|
||||
|
@ -50,7 +41,7 @@ module.exports = Self => {
|
|||
};
|
||||
}
|
||||
}) ?? {};
|
||||
delete ctx.filter.where;
|
||||
delete filter.where;
|
||||
|
||||
const stmts = [];
|
||||
let stmt;
|
||||
|
@ -70,11 +61,13 @@ module.exports = Self => {
|
|||
JOIN country c on c.id = p.countryFk
|
||||
`);
|
||||
|
||||
stmt.merge(conn.makeSuffix({where, ...ctx}));
|
||||
stmt.merge(conn.makeSuffix({where}));
|
||||
stmt.merge(conn.makeLimit(filter));
|
||||
const itemsIndex = stmts.push(stmt) - 1;
|
||||
|
||||
const sql = ParameterizedSQL.join(stmts, ';');
|
||||
const result = await conn.executeStmt(sql, myOptions);
|
||||
|
||||
return itemsIndex === 0 ? result : result[itemsIndex];
|
||||
};
|
||||
};
|
||||
|
|
|
@ -6,12 +6,9 @@ describe('Postcode filter()', () => {
|
|||
const options = {transaction: tx};
|
||||
|
||||
try {
|
||||
const ctx = {
|
||||
filter: {
|
||||
},
|
||||
const results = await models.Postcode.filter({
|
||||
limit: 1
|
||||
};
|
||||
const results = await models.Postcode.filter(ctx, options);
|
||||
}, options);
|
||||
|
||||
expect(results.length).toEqual(1);
|
||||
await tx.rollback();
|
||||
|
@ -26,14 +23,11 @@ describe('Postcode filter()', () => {
|
|||
const options = {transaction: tx};
|
||||
|
||||
try {
|
||||
const ctx = {
|
||||
filter: {
|
||||
const results = await models.Postcode.filter({
|
||||
where: {
|
||||
search: 46,
|
||||
}
|
||||
},
|
||||
};
|
||||
const results = await models.Postcode.filter(ctx, options);
|
||||
}, options);
|
||||
|
||||
expect(results.length).toEqual(4);
|
||||
await tx.rollback();
|
||||
|
@ -48,14 +42,9 @@ describe('Postcode filter()', () => {
|
|||
const options = {transaction: tx};
|
||||
|
||||
try {
|
||||
const ctx = {
|
||||
filter: {
|
||||
where: {
|
||||
const results = await models.Postcode.filter({where: {
|
||||
search: 'Alz',
|
||||
}
|
||||
},
|
||||
};
|
||||
const results = await models.Postcode.filter(ctx, options);
|
||||
}}, options);
|
||||
|
||||
expect(results.length).toEqual(1);
|
||||
await tx.rollback();
|
||||
|
@ -70,14 +59,9 @@ describe('Postcode filter()', () => {
|
|||
const options = {transaction: tx};
|
||||
|
||||
try {
|
||||
const ctx = {
|
||||
filter: {
|
||||
where: {
|
||||
const results = await models.Postcode.filter({where: {
|
||||
search: 'one',
|
||||
}
|
||||
},
|
||||
};
|
||||
const results = await models.Postcode.filter(ctx, options);
|
||||
}}, options);
|
||||
|
||||
expect(results.length).toEqual(4);
|
||||
await tx.rollback();
|
||||
|
@ -92,14 +76,11 @@ describe('Postcode filter()', () => {
|
|||
const options = {transaction: tx};
|
||||
|
||||
try {
|
||||
const ctx = {
|
||||
filter: {
|
||||
const results = await models.Postcode.filter({
|
||||
where: {
|
||||
search: 'Ec',
|
||||
}
|
||||
},
|
||||
};
|
||||
const results = await models.Postcode.filter(ctx, options);
|
||||
}, options);
|
||||
|
||||
expect(results.length).toEqual(1);
|
||||
await tx.rollback();
|
||||
|
|
|
@ -67,7 +67,9 @@ module.exports = Self => {
|
|||
if (vnUser.twoFactor === 'email') {
|
||||
const $ = Self.app.models;
|
||||
|
||||
const code = String(Math.floor(Math.random() * 999999));
|
||||
const min = 100000;
|
||||
const max = 999999;
|
||||
const code = String(Math.floor(Math.random() * (max - min + 1)) + min);
|
||||
const maxTTL = ((60 * 1000) * 5); // 5 min
|
||||
await $.AuthCode.upsertWithWhere({userFk: vnUser.id}, {
|
||||
userFk: vnUser.id,
|
||||
|
|
|
@ -24,6 +24,10 @@ module.exports = Self => {
|
|||
arg: 'lang',
|
||||
type: 'string',
|
||||
description: 'The user lang'
|
||||
}, {
|
||||
arg: 'twoFactor',
|
||||
type: 'string',
|
||||
description: 'The user twoFactor'
|
||||
}
|
||||
],
|
||||
http: {
|
||||
|
@ -32,8 +36,8 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.updateUser = async(ctx, id, name, nickname, email, lang) => {
|
||||
Self.updateUser = async(ctx, id, name, nickname, email, lang, twoFactor) => {
|
||||
await Self.userSecurity(ctx, id);
|
||||
await Self.upsertWithWhere({id}, {name, nickname, email, lang});
|
||||
await Self.upsertWithWhere({id}, {name, nickname, email, lang, twoFactor});
|
||||
};
|
||||
};
|
||||
|
|
|
@ -58,7 +58,7 @@ module.exports = Self => {
|
|||
fields: ['name', 'twoFactor']
|
||||
}, myOptions);
|
||||
|
||||
if (user.name !== username)
|
||||
if (user.name.toLowerCase() !== username.toLowerCase())
|
||||
throw new UserError('Authentication failed');
|
||||
|
||||
await authCode.destroy(myOptions);
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
module.exports = Self => {
|
||||
Self.remoteMethodCtx('add', {
|
||||
description: 'Add activity if the activity is different or is the same but have exceed time for break',
|
||||
accessType: 'WRITE',
|
||||
accepts: [
|
||||
{
|
||||
arg: 'code',
|
||||
type: 'string',
|
||||
description: 'Code for activity'
|
||||
},
|
||||
{
|
||||
arg: 'model',
|
||||
type: 'string',
|
||||
description: 'Origin model from insert'
|
||||
},
|
||||
|
||||
],
|
||||
http: {
|
||||
path: `/add`,
|
||||
verb: 'POST'
|
||||
}
|
||||
});
|
||||
|
||||
Self.add = async(ctx, code, model, options) => {
|
||||
const userId = ctx.req.accessToken.userId;
|
||||
const myOptions = {};
|
||||
|
||||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
||||
return await Self.rawSql(`
|
||||
INSERT INTO workerActivity (workerFk, workerActivityTypeFk, model)
|
||||
SELECT ?, ?, ?
|
||||
FROM workerTimeControlParams wtcp
|
||||
LEFT JOIN (
|
||||
SELECT wa.workerFk,
|
||||
wa.created,
|
||||
wat.code
|
||||
FROM workerActivity wa
|
||||
LEFT JOIN workerActivityType wat ON wat.code = wa.workerActivityTypeFk
|
||||
WHERE wa.workerFk = ?
|
||||
ORDER BY wa.created DESC
|
||||
LIMIT 1
|
||||
) sub ON TRUE
|
||||
WHERE sub.workerFk IS NULL
|
||||
OR sub.code <> ?
|
||||
OR TIMESTAMPDIFF(SECOND, sub.created, util.VN_NOW()) > wtcp.dayBreak;`
|
||||
, [userId, code, model, userId, code], myOptions);
|
||||
};
|
||||
};
|
|
@ -0,0 +1,30 @@
|
|||
const {models} = require('vn-loopback');
|
||||
|
||||
describe('workerActivity insert()', () => {
|
||||
const ctx = beforeAll.getCtx(1106);
|
||||
|
||||
it('should insert in workerActivity', async() => {
|
||||
const tx = await models.WorkerActivity.beginTransaction({});
|
||||
let count = 0;
|
||||
const options = {transaction: tx};
|
||||
|
||||
try {
|
||||
await models.WorkerActivityType.create(
|
||||
{'code': 'STOP', 'description': 'STOP'}, options
|
||||
);
|
||||
|
||||
await models.WorkerActivity.add(ctx, 'STOP', 'APP', options);
|
||||
|
||||
count = await models.WorkerActivity.count(
|
||||
{'workerFK': 1106}, options
|
||||
);
|
||||
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
throw e;
|
||||
}
|
||||
|
||||
expect(count).toEqual(1);
|
||||
});
|
||||
});
|
|
@ -28,6 +28,9 @@
|
|||
"Company": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
"Config": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
"Continent": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
|
@ -115,6 +118,9 @@
|
|||
"NotificationSubscription": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
"OrmConfig": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
"Province": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"name": "Config",
|
||||
"base": "VnModel",
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "config"
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
"inventoried": {
|
||||
"type": "date"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"accessType": "READ",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$authenticated",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"name": "OrmConfig",
|
||||
"base": "VnModel",
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "ormConfig"
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number",
|
||||
"id": true
|
||||
},
|
||||
"selectLimit": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$authenticated",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -9,7 +9,8 @@
|
|||
"properties": {
|
||||
"code": {
|
||||
"id": true,
|
||||
"type": "string"
|
||||
"type": "string",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
"type": "number"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
"type": "string",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
|
|
|
@ -101,9 +101,10 @@ module.exports = function(Self) {
|
|||
const headers = httpRequest.headers;
|
||||
const origin = headers.origin;
|
||||
|
||||
const defaultHash = '/reset-password?access_token=$token$';
|
||||
const defaultHash = '!/reset-password?access_token=$token$';
|
||||
const recoverHashes = {
|
||||
hedera: 'verificationToken=$token$'
|
||||
hedera: '!verificationToken=$token$',
|
||||
lilium: '/resetPassword?access_token=$token$'
|
||||
};
|
||||
|
||||
const app = info.options?.app;
|
||||
|
@ -115,7 +116,7 @@ module.exports = function(Self) {
|
|||
const params = {
|
||||
recipient: info.email,
|
||||
lang: user.lang,
|
||||
url: origin + '/#!' + recoverHash
|
||||
url: origin + '/#' + recoverHash
|
||||
};
|
||||
|
||||
const options = Object.assign({}, info.options);
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = Self => {
|
||||
require('../methods/workerActivity/add')(Self);
|
||||
};
|
|
@ -22,6 +22,7 @@
|
|||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
"workerFk": {
|
||||
|
@ -36,4 +37,3 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,6 @@ apps:
|
|||
- script: ./loopback/server/server.js
|
||||
name: salix-back
|
||||
instances: 1
|
||||
max_restarts: 3
|
||||
restart_delay: 15000
|
||||
max_restarts: 0
|
||||
autorestart: false
|
||||
node_args: --tls-min-v1.0 --openssl-legacy-provider
|
||||
|
|
|
@ -3,7 +3,7 @@ USE `util`;
|
|||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
INSERT INTO `version` VALUES ('vn-database','11154','04ff3e0cc79b00272d1ebbde7196292eab651c1d','2024-07-23 09:24:55','11163');
|
||||
INSERT INTO `version` VALUES ('vn-database','11161','36dee872d62ba2421c05503f374f6b208c40ecfa','2024-08-06 07:53:56','11180');
|
||||
|
||||
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);
|
||||
|
@ -822,6 +822,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','11034','00-firstScript.sql','jen
|
|||
INSERT INTO `versionLog` VALUES ('vn-database','11037','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11038','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11040','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:31',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11042','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-06 07:53:54',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11044','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:31',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11045','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-10 14:53:29',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11046','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:46',NULL,NULL);
|
||||
|
@ -896,14 +897,22 @@ INSERT INTO `versionLog` VALUES ('vn-database','11138','00-firstScript.sql','jen
|
|||
INSERT INTO `versionLog` VALUES ('vn-database','11139','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-08 10:58:01',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11140','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:34',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11145','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-09 13:55:46',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11146','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-06 07:53:54',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11149','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:35',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11150','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:35',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11152','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-16 09:06:11',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11154','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:35',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11155','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-06 07:53:54',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11156','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-06 07:53:54',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11157','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-16 13:11:00',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11158','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-17 17:06:30',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11159','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-18 17:23:32',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11160','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-18 13:46:16',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11161','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-06 07:53:54',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11164','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-23 11:03:16',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11168','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-25 08:58:34',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11169','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-25 12:38:13',NULL,NULL);
|
||||
INSERT INTO `versionLog` VALUES ('vn-database','11177','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-30 12:42:28',NULL,NULL);
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
|
@ -2046,13 +2055,14 @@ INSERT INTO `ACL` VALUES (892,'WorkerIncome','*','*','ALLOW','ROLE','hr');
|
|||
INSERT INTO `ACL` VALUES (893,'PayrollComponent','*','*','ALLOW','ROLE','hr');
|
||||
INSERT INTO `ACL` VALUES (894,'Worker','__get__incomes','*','ALLOW','ROLE','hr');
|
||||
INSERT INTO `ACL` VALUES (895,'ItemShelvingLog','*','READ','ALLOW','ROLE','production');
|
||||
INSERT INTO `ACL` VALUES (896,'Expedition_PrintOut','*','READ','ALLOW','ROLE','production');
|
||||
INSERT INTO `ACL` VALUES (897,'WorkerLog','*','READ','ALLOW','ROLE','employee');
|
||||
INSERT INTO `ACL` VALUES (901,'WorkerTimeControl','sendMail','WRITE','ALLOW','ROLE','system');
|
||||
INSERT INTO `ACL` VALUES (902,'Entry','filter','READ','ALLOW','ROLE','supplier');
|
||||
INSERT INTO `ACL` VALUES (903,'Entry','getBuys','READ','ALLOW','ROLE','supplier');
|
||||
INSERT INTO `ACL` VALUES (904,'Entry','buyLabel','READ','ALLOW','ROLE','supplier');
|
||||
INSERT INTO `ACL` VALUES (905,'AddressWaste','*','READ','ALLOW','ROLE','production');
|
||||
INSERT INTO `ACL` VALUES (906,'Entry','print','READ','ALLOW','ROLE','supplier');
|
||||
INSERT INTO `ACL` VALUES (907,'Expedition_PrintOut','*','*','ALLOW','ROLE','production');
|
||||
|
||||
INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee');
|
||||
INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee');
|
||||
|
@ -2137,11 +2147,11 @@ INSERT INTO `module` VALUES ('wagon');
|
|||
INSERT INTO `module` VALUES ('worker');
|
||||
INSERT INTO `module` VALUES ('zone');
|
||||
|
||||
INSERT INTO `defaultViewConfig` VALUES ('itemsIndex','{\"intrastat\":false,\"stemMultiplier\":false,\"landed\":false,\"producer\":false}');
|
||||
INSERT INTO `defaultViewConfig` VALUES ('latestBuys','{\"intrastat\":false,\"description\":false,\"density\":false,\"isActive\":false,\n \"freightValue\":false,\"packageValue\":false,\"isIgnored\":false,\"price2\":false,\"ektFk\":false,\"weight\":false,\n \"size\":false,\"comissionValue\":false,\"landing\":false}');
|
||||
INSERT INTO `defaultViewConfig` VALUES ('ticketsMonitor','{\"id\":false}');
|
||||
INSERT INTO `defaultViewConfig` VALUES ('clientsDetail','{\"id\":true,\"phone\":true,\"city\":true,\"socialName\":true,\"salesPersonFk\":true,\"email\":true,\"name\":false,\"fi\":false,\"credit\":false,\"creditInsurance\":false,\"mobile\":false,\"street\":false,\"countryFk\":false,\"provinceFk\":false,\"postcode\":false,\"created\":false,\"businessTypeFk\":false,\"payMethodFk\":false,\"sageTaxTypeFk\":false,\"sageTransactionTypeFk\":false,\"isActive\":false,\"isVies\":false,\"isTaxDataChecked\":false,\"isEqualizated\":false,\"isFreezed\":false,\"hasToInvoice\":false,\"hasToInvoiceByAddress\":false,\"isToBeMailed\":false,\"hasLcr\":false,\"hasCoreVnl\":false,\"hasSepaVnl\":false}');
|
||||
INSERT INTO `defaultViewConfig` VALUES ('routesList','{\"ID\":true,\"worker\":true,\"agency\":true,\"vehicle\":true,\"date\":true,\"volume\":true,\"description\":true,\"started\":true,\"finished\":true,\"actions\":true}');
|
||||
INSERT INTO `defaultViewMultiConfig` VALUES ('itemsIndex','{\"intrastat\":false,\"stemMultiplier\":false,\"landed\":false,\"producer\":false}');
|
||||
INSERT INTO `defaultViewMultiConfig` VALUES ('latestBuys','{\"intrastat\":false,\"description\":false,\"density\":false,\"isActive\":false,\n \"freightValue\":false,\"packageValue\":false,\"isIgnored\":false,\"price2\":false,\"ektFk\":false,\"weight\":false,\n \"size\":false,\"comissionValue\":false,\"landing\":false}');
|
||||
INSERT INTO `defaultViewMultiConfig` VALUES ('ticketsMonitor','{\"id\":false}');
|
||||
INSERT INTO `defaultViewMultiConfig` VALUES ('clientsDetail','{\"id\":true,\"phone\":true,\"city\":true,\"socialName\":true,\"salesPersonFk\":true,\"email\":true,\"name\":false,\"fi\":false,\"credit\":false,\"creditInsurance\":false,\"mobile\":false,\"street\":false,\"countryFk\":false,\"provinceFk\":false,\"postcode\":false,\"created\":false,\"businessTypeFk\":false,\"payMethodFk\":false,\"sageTaxTypeFk\":false,\"sageTransactionTypeFk\":false,\"isActive\":false,\"isVies\":false,\"isTaxDataChecked\":false,\"isEqualizated\":false,\"isFreezed\":false,\"hasToInvoice\":false,\"hasToInvoiceByAddress\":false,\"isToBeMailed\":false,\"hasLcr\":false,\"hasCoreVnl\":false,\"hasSepaVnl\":false}');
|
||||
INSERT INTO `defaultViewMultiConfig` VALUES ('routesList','{\"ID\":true,\"worker\":true,\"agency\":true,\"vehicle\":true,\"date\":true,\"volume\":true,\"description\":true,\"started\":true,\"finished\":true,\"actions\":true}');
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
|
@ -2153,6 +2163,7 @@ USE `vn`;
|
|||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
INSERT INTO `alertLevel` VALUES ('FREE',0,1);
|
||||
INSERT INTO `alertLevel` VALUES ('ON_PREVIOUS',1,1);
|
||||
INSERT INTO `alertLevel` VALUES ('ON_PREPARATION',2,1);
|
||||
INSERT INTO `alertLevel` VALUES ('PACKED',3,0);
|
||||
INSERT INTO `alertLevel` VALUES ('DELIVERED',4,0);
|
||||
|
@ -2384,7 +2395,7 @@ INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,37,NULL,72,1,1,1,11,1
|
|||
INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
|
||||
INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
|
||||
INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',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,71,NULL,0,0,0,1,15,1,'/1/',NULL,1,'',1,0,0,0,NULL,NULL,NULL,NULL);
|
||||
INSERT INTO `department` VALUES (43,'VT','VENTAS',40,71,NULL,0,0,0,1,15,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
|
||||
INSERT INTO `department` VALUES (44,'management','GERENCIA',72,73,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
|
||||
INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',74,75,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
|
||||
INSERT INTO `department` VALUES (46,'delivery','REPARTO',76,77,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
|
||||
|
@ -2722,6 +2733,7 @@ INSERT INTO `state` VALUES (36,'Previa Revisando',3,0,'PREVIOUS_CONTROL',2,37,1,
|
|||
INSERT INTO `state` VALUES (37,'Previa Revisado',3,0,'PREVIOUS_CONTROLLED',2,29,1,0,1,0,0,1,2,0,'warning');
|
||||
INSERT INTO `state` VALUES (38,'Prep Cámara',6,2,'COOLER_PREPARATION',7,14,0,0,0,2,0,0,2,0,'warning');
|
||||
INSERT INTO `state` VALUES (41,'Prep Parcial',6,2,'PARTIAL_PREPARATION',7,14,0,0,0,2,0,0,2,0,'warning');
|
||||
INSERT INTO `state` VALUES (42,'Entregado en parte',13,3,'PARTIAL_DELIVERED',NULL,16,0,1,0,0,0,0,0,0,NULL);
|
||||
|
||||
INSERT INTO `ticketUpdateAction` VALUES (1,'Cambiar los precios en el ticket','renewPrices');
|
||||
INSERT INTO `ticketUpdateAction` VALUES (2,'Convertir en maná','mana');
|
||||
|
|
|
@ -1292,6 +1292,8 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','srt','grafana','buffer','juan@db-p
|
|||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','greuge','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','item','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','','Select,Update');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerBoss','itemShelving','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','agencyIncoming','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','addressObservation','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','negativeOrigin','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryBoss','Vehiculos_consumo','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','entryOrder','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Delete','');
|
||||
|
@ -1357,6 +1359,8 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','accounting',
|
|||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','accounting','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','workerActivity','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','ticketRequest','guillermo@10.5.1.3','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','Vehiculos_consumo','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','budgetState','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleState','jgallego@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','srt','grafana','expeditionState','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','specialPrice','jgallego@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
|
||||
|
@ -1379,6 +1383,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','professionalCategor
|
|||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','ticketObservation','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','deliveryNoteState','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','deliveryNote','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','inventoryConfig','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','comparative','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','invoiceOutExpense','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','delivery','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
|
@ -1404,6 +1409,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','teamBoss','business','guiller
|
|||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','ticketServiceType','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','business','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','','Select');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','supplierAgencyTerm','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemMinimumQuantity','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','clientRate','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','entryEditor','Entradas','guillermo@10.5.1.3','0000-00-00 00:00:00','Insert','Update');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','clientInforma','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
|
@ -1428,6 +1434,8 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','businessReasonEnd','guil
|
|||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','buy_edi','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','buySource','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','bi','salesPerson','claims_ratio','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','employee','shelfMultiConfig','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','clientConfig','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryBoss','albaran','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryBoss','albaran_gestdoc','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryBoss','albaran_state','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -6325,10 +6325,6 @@ BEGIN
|
|||
SET NEW.userFk = account.myUser_getId();
|
||||
END IF;
|
||||
|
||||
IF (NEW.visible <> OLD.visible) THEN
|
||||
SET NEW.available = GREATEST(NEW.available + NEW.visible - OLD.visible, 0);
|
||||
END IF;
|
||||
|
||||
END */;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
|
@ -9224,13 +9220,16 @@ BEGIN
|
|||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
IF NOT (NEW.routeFk <=> OLD.routeFk) THEN
|
||||
INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`)
|
||||
SELECT r.id
|
||||
FROM vn.route r
|
||||
WHERE r.isOk = FALSE
|
||||
AND r.id IN (OLD.routeFk,NEW.routeFk)
|
||||
AND r.created >= util.VN_CURDATE()
|
||||
GROUP BY r.id;
|
||||
IF NEW.isSigned THEN
|
||||
CALL util.throw('A signed ticket cannot be rerouted');
|
||||
END IF;
|
||||
INSERT IGNORE INTO routeRecalc(routeFk)
|
||||
SELECT id
|
||||
FROM `route`
|
||||
WHERE NOT isOk
|
||||
AND id IN (OLD.routeFk, NEW.routeFk)
|
||||
AND created >= util.VN_CURDATE()
|
||||
GROUP BY id;
|
||||
END IF;
|
||||
|
||||
IF NOT (DATE(NEW.shipped) <=> DATE(OLD.shipped)) THEN
|
||||
|
@ -11143,4 +11142,4 @@ USE `vn2008`;
|
|||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2024-07-23 8:19:41
|
||||
-- Dump completed on 2024-08-06 6:03:19
|
||||
|
|
|
@ -412,7 +412,7 @@ INSERT INTO `vn`.`clientManaCache`(`clientFk`, `mana`, `dated`)
|
|||
(1103, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
|
||||
(1104, -30, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH));
|
||||
|
||||
INSERT INTO `vn`.`mandateType`(`id`, `name`)
|
||||
INSERT INTO `vn`.`mandateType`(`id`, `code`)
|
||||
VALUES
|
||||
(1, 'B2B'),
|
||||
(2, 'CORE'),
|
||||
|
@ -632,7 +632,7 @@ INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaF
|
|||
('A', 'Global nacional', 1, 'NATIONAL', 0, 'global'),
|
||||
('T', 'Española rapida', 1, 'NATIONAL', 0, 'quick'),
|
||||
('V', 'Intracomunitaria global', 0, 'CEE', 1, 'global'),
|
||||
('M', 'Múltiple nacional', 1, 'NATIONAL', 0, 'quick'),
|
||||
('M', 'Múltiple nacional', 1, 'NATIONAL', 0, 'multiple'),
|
||||
('R', 'Rectificativa', 1, 'NATIONAL', 0, NULL),
|
||||
('E', 'Exportación rápida', 0, 'WORLD', 0, 'quick');
|
||||
|
||||
|
@ -1516,7 +1516,7 @@ INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed
|
|||
(9, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 9', 1, 1, ''),
|
||||
(10, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 9', 1, 1, '');
|
||||
|
||||
INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `saleTotal`, `saleQuantity`, `saleInternalWaste`, `saleExternalWaste`)
|
||||
INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `saleTotal`, `saleWasteQuantity`, `saleInternalWaste`, `saleExternalWaste`)
|
||||
VALUES
|
||||
('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 1, 1, '1062', '51', '56.20', '56.20'),
|
||||
('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 2, 1, '35074', '687', '53.12', '89.69'),
|
||||
|
@ -3945,11 +3945,11 @@ VALUES
|
|||
(35, 'ES12346B12345679', 3, 241);
|
||||
|
||||
INSERT INTO vn.accountDetailType
|
||||
(id, description)
|
||||
(id, description, code)
|
||||
VALUES
|
||||
(1, 'IBAN'),
|
||||
(2, 'SWIFT'),
|
||||
(3, 'Referencia Remesas'),
|
||||
(4, 'Referencia Transferencias'),
|
||||
(5, 'Referencia Nominas'),
|
||||
(6, 'ABA');
|
||||
(1, 'IBAN', 'iban'),
|
||||
(2, 'SWIFT', 'swift'),
|
||||
(3, 'Referencia Remesas', 'remRef'),
|
||||
(4, 'Referencia Transferencias', 'trnRef'),
|
||||
(5, 'Referencia Nominas', 'payRef'),
|
||||
(6, 'ABA', 'aba');
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`waste_addSales`()
|
||||
BEGIN
|
||||
DECLARE vDateFrom DATE DEFAULT util.VN_CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY;
|
||||
DECLARE vDateFrom DATE DEFAULT util.VN_CURDATE() - INTERVAL WEEKDAY(util.VN_CURDATE()) DAY;
|
||||
DECLARE vDateTo DATE DEFAULT vDateFrom + INTERVAL 6 DAY;
|
||||
|
||||
CALL cache.last_buy_refresh(FALSE);
|
||||
|
@ -12,25 +12,22 @@ BEGIN
|
|||
it.workerFk,
|
||||
it.id,
|
||||
s.itemFk,
|
||||
SUM(s.quantity),
|
||||
SUM((b.buyingValue + b.freightValue + b.comissionValue + b.packageValue) * s.quantity) `value`,
|
||||
SUM((b.buyingValue + b.freightValue + b.comissionValue + b.packageValue) * s.quantity),
|
||||
SUM(IF(aw.`type`, s.quantity, 0)),
|
||||
SUM(
|
||||
IF(
|
||||
aw.`type` = 'internal',
|
||||
(b.buyingValue + b.freightValue + b.comissionValue + b.packageValue) * s.quantity,
|
||||
0
|
||||
)
|
||||
) internalWaste,
|
||||
),
|
||||
SUM(
|
||||
IF(
|
||||
aw.`type` = 'external',
|
||||
(b.buyingValue + b.freightValue + b.comissionValue + b.packageValue) * s.quantity,
|
||||
IF(c.code = 'manaClaim',
|
||||
sc.value * s.quantity,
|
||||
0
|
||||
)
|
||||
)
|
||||
) externalWaste
|
||||
FROM vn.sale s
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
JOIN vn.itemType it ON it.id = i.typeFk
|
||||
|
@ -41,10 +38,8 @@ BEGIN
|
|||
JOIN cache.last_buy lb ON lb.item_id = i.id
|
||||
AND lb.warehouse_id = w.id
|
||||
JOIN vn.buy b ON b.id = lb.buy_id
|
||||
LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id
|
||||
LEFT JOIN vn.component c ON c.id = sc.componentFk
|
||||
WHERE t.shipped BETWEEN vDateFrom AND vDateTo
|
||||
AND w.isManaged
|
||||
GROUP BY it.id, i.id;
|
||||
GROUP BY i.id;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -30,7 +30,7 @@ proc: BEGIN
|
|||
SELECT inventoried INTO started FROM vn.config LIMIT 1;
|
||||
SET ended = util.VN_CURDATE(); -- TIMESTAMPADD(DAY, -1, util.VN_CURDATE());
|
||||
|
||||
CALL vn.buyUltimateFromInterval(NULL, started, ended);
|
||||
CALL vn.buy_getUltimateFromInterval(NULL, NULL, started, ended);
|
||||
|
||||
DELETE FROM last_buy;
|
||||
|
||||
|
|
|
@ -1,59 +1,62 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_confirmWithUser`(vSelf INT, vUserId INT)
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_confirmWithUser`(
|
||||
vSelf INT,
|
||||
vUserFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Confirms an order, creating each of its tickets on the corresponding
|
||||
* date, store and user.
|
||||
* Confirms an order, creating each of its tickets
|
||||
* on the corresponding date, store and user.
|
||||
*
|
||||
* @param vSelf The order identifier
|
||||
* @param vUser The user identifier
|
||||
*/
|
||||
DECLARE vOk BOOL;
|
||||
DECLARE vDone BOOL DEFAULT FALSE;
|
||||
DECLARE vWarehouse INT;
|
||||
DECLARE vHasRows BOOL;
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vWarehouseFk INT;
|
||||
DECLARE vShipment DATE;
|
||||
DECLARE vTicket INT;
|
||||
DECLARE vShipmentDayEnd DATETIME;
|
||||
DECLARE vTicketFk INT;
|
||||
DECLARE vNotes VARCHAR(255);
|
||||
DECLARE vItem INT;
|
||||
DECLARE vItemFk INT;
|
||||
DECLARE vConcept VARCHAR(30);
|
||||
DECLARE vAmount INT;
|
||||
DECLARE vAvailable INT;
|
||||
DECLARE vPrice DECIMAL(10,2);
|
||||
DECLARE vSale INT;
|
||||
DECLARE vRate INT;
|
||||
DECLARE vRowId INT;
|
||||
DECLARE vSaleFk INT;
|
||||
DECLARE vRowFk INT;
|
||||
DECLARE vPriceFixed DECIMAL(10,2);
|
||||
DECLARE vDelivery DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vIsConfirmed BOOL;
|
||||
DECLARE vClientId INT;
|
||||
DECLARE vCompanyId INT;
|
||||
DECLARE vAgencyModeId INT;
|
||||
DECLARE TICKET_FREE INT DEFAULT 2;
|
||||
DECLARE vCalc INT;
|
||||
DECLARE vIsLogifloraItem BOOL;
|
||||
DECLARE vOldQuantity INT;
|
||||
DECLARE vNewQuantity INT;
|
||||
DECLARE vLanded DATE;
|
||||
DECLARE vAddressFk INT;
|
||||
DECLARE vClientFk INT;
|
||||
DECLARE vCompanyFk INT;
|
||||
DECLARE vAgencyModeFk INT;
|
||||
DECLARE vCalcFk INT;
|
||||
DECLARE vIsTaxDataChecked BOOL;
|
||||
|
||||
DECLARE cDates CURSOR FOR
|
||||
SELECT zgs.shipped, r.warehouse_id
|
||||
DECLARE vDates CURSOR FOR
|
||||
SELECT zgs.shipped, r.warehouseFk
|
||||
FROM `order` o
|
||||
JOIN order_row r ON r.order_id = o.id
|
||||
LEFT JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = r.warehouse_id
|
||||
WHERE o.id = vSelf AND r.amount != 0
|
||||
GROUP BY r.warehouse_id;
|
||||
JOIN orderRow r ON r.orderFk = o.id
|
||||
LEFT JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = r.warehouseFk
|
||||
WHERE o.id = vSelf
|
||||
AND r.amount
|
||||
GROUP BY r.warehouseFk;
|
||||
|
||||
DECLARE cRows CURSOR FOR
|
||||
SELECT r.id, r.item_id, i.name, r.amount, r.price, r.rate, i.isFloramondo
|
||||
FROM order_row r
|
||||
JOIN vn.item i ON i.id = r.item_id
|
||||
WHERE r.amount != 0
|
||||
AND r.warehouse_id = vWarehouse
|
||||
AND r.order_id = vSelf
|
||||
DECLARE vRows CURSOR FOR
|
||||
SELECT r.id,
|
||||
r.itemFk,
|
||||
i.name,
|
||||
r.amount,
|
||||
r.price
|
||||
FROM orderRow r
|
||||
JOIN vn.item i ON i.id = r.itemFk
|
||||
WHERE r.amount
|
||||
AND r.warehouseFk = vWarehouseFk
|
||||
AND r.orderFk = vSelf
|
||||
ORDER BY r.rate DESC;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
|
@ -62,11 +65,21 @@ BEGIN
|
|||
END;
|
||||
|
||||
-- Carga los datos del pedido
|
||||
SELECT o.date_send, o.address_id, o.note, a.clientFk,
|
||||
o.company_id, o.agency_id, c.isTaxDataChecked
|
||||
INTO vDelivery, vAddress, vNotes, vClientId,
|
||||
vCompanyId, vAgencyModeId, vIsTaxDataChecked
|
||||
FROM hedera.`order` o
|
||||
SELECT o.date_send,
|
||||
o.address_id,
|
||||
o.note,
|
||||
a.clientFk,
|
||||
o.company_id,
|
||||
o.agency_id,
|
||||
c.isTaxDataChecked
|
||||
INTO vLanded,
|
||||
vAddressFk,
|
||||
vNotes,
|
||||
vClientFk,
|
||||
vCompanyFk,
|
||||
vAgencyModeFk,
|
||||
vIsTaxDataChecked
|
||||
FROM `order` o
|
||||
JOIN vn.address a ON a.id = o.address_id
|
||||
JOIN vn.client c ON c.id = a.clientFk
|
||||
WHERE o.id = vSelf;
|
||||
|
@ -77,11 +90,11 @@ BEGIN
|
|||
END IF;
|
||||
|
||||
-- Carga las fechas de salida de cada almacen
|
||||
CALL vn.zone_getShipped (vDelivery, vAddress, vAgencyModeId, FALSE);
|
||||
CALL vn.zone_getShipped(vLanded, vAddressFk, vAgencyModeFk, FALSE);
|
||||
|
||||
-- Trabajador que realiza la accion
|
||||
IF vUserId IS NULL THEN
|
||||
SELECT employeeFk INTO vUserId FROM orderConfig;
|
||||
IF vUserFk IS NULL THEN
|
||||
SELECT employeeFk INTO vUserFk FROM orderConfig;
|
||||
END IF;
|
||||
|
||||
START TRANSACTION;
|
||||
|
@ -89,207 +102,188 @@ BEGIN
|
|||
CALL order_checkEditable(vSelf);
|
||||
|
||||
-- Check order is not empty
|
||||
SELECT COUNT(*) > 0 INTO vHasRows
|
||||
FROM orderRow
|
||||
WHERE orderFk = vSelf
|
||||
AND amount > 0;
|
||||
|
||||
SELECT COUNT(*) > 0 INTO vOk
|
||||
FROM order_row WHERE order_id = vSelf AND amount > 0;
|
||||
|
||||
IF NOT vOk THEN
|
||||
IF NOT vHasRows THEN
|
||||
CALL util.throw('ORDER_EMPTY');
|
||||
END IF;
|
||||
|
||||
-- Crea los tickets del pedido
|
||||
|
||||
OPEN cDates;
|
||||
|
||||
lDates:
|
||||
LOOP
|
||||
SET vTicket = NULL;
|
||||
OPEN vDates;
|
||||
lDates: LOOP
|
||||
SET vTicketFk = NULL;
|
||||
SET vDone = FALSE;
|
||||
FETCH cDates INTO vShipment, vWarehouse;
|
||||
FETCH vDates INTO vShipment, vWarehouseFk;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE lDates;
|
||||
END IF;
|
||||
|
||||
-- Busca un ticket existente que coincida con los parametros
|
||||
WITH tPrevia AS
|
||||
(SELECT DISTINCT s.ticketFk
|
||||
SET vShipmentDayEnd = util.dayEnd(vShipment);
|
||||
|
||||
-- Busca un ticket libre disponible
|
||||
WITH tPrevia AS (
|
||||
SELECT DISTINCT s.ticketFk
|
||||
FROM vn.sale s
|
||||
JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id
|
||||
JOIN vn.ticket t ON t.id = s.ticketFk
|
||||
WHERE t.shipped BETWEEN vShipment AND util.dayend(vShipment)
|
||||
WHERE t.shipped BETWEEN vShipment AND vShipmentDayEnd
|
||||
)
|
||||
SELECT t.id INTO vTicket
|
||||
SELECT t.id INTO vTicketFk
|
||||
FROM vn.ticket t
|
||||
JOIN vn.alertLevel al ON al.code = 'FREE'
|
||||
LEFT JOIN tPrevia tp ON tp.ticketFk = t.id
|
||||
LEFT JOIN vn.ticketState tls on tls.ticketFk = t.id
|
||||
JOIN hedera.`order` o
|
||||
ON o.address_id = t.addressFk
|
||||
AND vWarehouse = t.warehouseFk
|
||||
LEFT JOIN vn.ticketState tls ON tls.ticketFk = t.id
|
||||
JOIN hedera.`order` o ON o.address_id = t.addressFk
|
||||
AND t.shipped BETWEEN vShipment AND vShipmentDayEnd
|
||||
AND t.warehouseFk = vWarehouseFk
|
||||
AND o.date_send = t.landed
|
||||
AND DATE(t.shipped) = vShipment
|
||||
WHERE o.id = vSelf
|
||||
AND t.refFk IS NULL
|
||||
AND tp.ticketFk IS NULL
|
||||
AND (tls.alertLevel IS NULL OR tls.alertLevel = al.id)
|
||||
LIMIT 1;
|
||||
|
||||
-- Comprobamos si hay un ticket de previa disponible
|
||||
IF vTicketFk IS NULL THEN
|
||||
WITH tItemPackingTypeOrder AS (
|
||||
SELECT GROUP_CONCAT(
|
||||
DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk
|
||||
) distinctItemPackingTypes,
|
||||
o.address_id
|
||||
FROM vn.item i
|
||||
JOIN hedera.orderRow oro ON oro.itemFk = i.id
|
||||
JOIN hedera.`order` o ON o.id = oro.orderFk
|
||||
WHERE oro.orderFk = vSelf
|
||||
),
|
||||
tItemPackingTypeTicket AS (
|
||||
SELECT t.id,
|
||||
GROUP_CONCAT(
|
||||
DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk
|
||||
) distinctItemPackingTypes
|
||||
FROM vn.ticket t
|
||||
JOIN vn.ticketState tls ON tls.ticketFk = t.id
|
||||
JOIN vn.alertLevel al ON al.id = tls.alertLevel
|
||||
JOIN vn.sale s ON s.ticketFk = t.id
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
JOIN tItemPackingTypeOrder ipto
|
||||
WHERE t.shipped BETWEEN vShipment AND vShipmentDayEnd
|
||||
AND t.refFk IS NULL
|
||||
AND t.warehouseFk = vWarehouseFk
|
||||
AND t.addressFk = ipto.address_id
|
||||
AND al.code = 'ON_PREVIOUS'
|
||||
GROUP BY t.id
|
||||
)
|
||||
SELECT iptt.id INTO vTicketFk
|
||||
FROM tItemPackingTypeTicket iptt
|
||||
JOIN tItemPackingTypeOrder ipto
|
||||
WHERE INSTR(iptt.distinctItemPackingTypes, ipto.distinctItemPackingTypes)
|
||||
LIMIT 1;
|
||||
END IF;
|
||||
|
||||
-- Crea el ticket en el caso de no existir uno adecuado
|
||||
IF vTicket IS NULL
|
||||
THEN
|
||||
|
||||
IF vTicketFk IS NULL THEN
|
||||
SET vShipment = IFNULL(vShipment, util.VN_CURDATE());
|
||||
|
||||
CALL vn.ticket_add(
|
||||
vClientId,
|
||||
vClientFk,
|
||||
vShipment,
|
||||
vWarehouse,
|
||||
vCompanyId,
|
||||
vAddress,
|
||||
vAgencyModeId,
|
||||
vWarehouseFk,
|
||||
vCompanyFk,
|
||||
vAddressFk,
|
||||
vAgencyModeFk,
|
||||
NULL,
|
||||
vDelivery,
|
||||
vUserId,
|
||||
vLanded,
|
||||
vUserFk,
|
||||
TRUE,
|
||||
vTicket
|
||||
vTicketFk
|
||||
);
|
||||
ELSE
|
||||
INSERT INTO vn.ticketTracking
|
||||
SET ticketFk = vTicket,
|
||||
userFk = vUserId,
|
||||
stateFk = TICKET_FREE;
|
||||
SET ticketFk = vTicketFk,
|
||||
userFk = vUserFk,
|
||||
stateFk = (SELECT id FROM vn.state WHERE code = 'FREE');
|
||||
END IF;
|
||||
|
||||
INSERT IGNORE INTO vn.orderTicket
|
||||
SET orderFk = vSelf,
|
||||
ticketFk = vTicket;
|
||||
ticketFk = vTicketFk;
|
||||
|
||||
-- Añade las notas
|
||||
|
||||
IF vNotes IS NOT NULL AND vNotes != ''
|
||||
THEN
|
||||
INSERT INTO vn.ticketObservation SET
|
||||
ticketFk = vTicket,
|
||||
observationTypeFk = 4 /* salesperson */ ,
|
||||
IF vNotes IS NOT NULL AND vNotes <> '' THEN
|
||||
INSERT INTO vn.ticketObservation
|
||||
SET ticketFk = vTicketFk,
|
||||
observationTypeFk = (SELECT id FROM vn.observationType WHERE code = 'salesPerson'),
|
||||
`description` = vNotes
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`description` = CONCAT(VALUES(`description`),'. ', `description`);
|
||||
END IF;
|
||||
|
||||
-- Añade los movimientos y sus componentes
|
||||
|
||||
OPEN cRows;
|
||||
|
||||
OPEN vRows;
|
||||
lRows: LOOP
|
||||
SET vSaleFk = NULL;
|
||||
SET vDone = FALSE;
|
||||
FETCH cRows INTO vRowId, vItem, vConcept, vAmount, vPrice, vRate, vIsLogifloraItem;
|
||||
FETCH vRows INTO vRowFk, vItemFk, vConcept, vAmount, vPrice;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE lRows;
|
||||
END IF;
|
||||
|
||||
SET vSale = NULL;
|
||||
|
||||
SELECT s.id, s.quantity INTO vSale, vOldQuantity
|
||||
SELECT s.id INTO vSaleFk
|
||||
FROM vn.sale s
|
||||
WHERE ticketFk = vTicket
|
||||
WHERE ticketFk = vTicketFk
|
||||
AND price = vPrice
|
||||
AND itemFk = vItem
|
||||
AND itemFk = vItemFk
|
||||
AND discount = 0
|
||||
LIMIT 1;
|
||||
|
||||
IF vSale THEN
|
||||
IF vSaleFk THEN
|
||||
UPDATE vn.sale
|
||||
SET quantity = quantity + vAmount,
|
||||
originalQuantity = quantity
|
||||
WHERE id = vSale;
|
||||
|
||||
SELECT s.quantity INTO vNewQuantity
|
||||
FROM vn.sale s
|
||||
WHERE id = vSale;
|
||||
WHERE id = vSaleFk;
|
||||
ELSE
|
||||
-- Obtiene el coste
|
||||
SELECT SUM(rc.`price`) valueSum INTO vPriceFixed
|
||||
FROM orderRowComponent rc
|
||||
JOIN vn.component c ON c.id = rc.componentFk
|
||||
JOIN vn.componentType ct ON ct.id = c.typeFk AND ct.isBase
|
||||
WHERE rc.rowFk = vRowId;
|
||||
JOIN vn.componentType ct ON ct.id = c.typeFk
|
||||
AND ct.isBase
|
||||
WHERE rc.rowFk = vRowFk;
|
||||
|
||||
INSERT INTO vn.sale
|
||||
SET itemFk = vItem,
|
||||
ticketFk = vTicket,
|
||||
SET itemFk = vItemFk,
|
||||
ticketFk = vTicketFk,
|
||||
concept = vConcept,
|
||||
quantity = vAmount,
|
||||
price = vPrice,
|
||||
priceFixed = vPriceFixed,
|
||||
isPriceFixed = TRUE;
|
||||
|
||||
SET vSale = LAST_INSERT_ID();
|
||||
SET vSaleFk = LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO vn.saleComponent
|
||||
(saleFk, componentFk, `value`)
|
||||
SELECT vSale, rc.componentFk, rc.price
|
||||
INSERT INTO vn.saleComponent (saleFk, componentFk, `value`)
|
||||
SELECT vSaleFk, rc.componentFk, rc.price
|
||||
FROM orderRowComponent rc
|
||||
JOIN vn.component c ON c.id = rc.componentFk
|
||||
WHERE rc.rowFk = vRowId
|
||||
GROUP BY vSale, rc.componentFk;
|
||||
WHERE rc.rowFk = vRowFk
|
||||
GROUP BY vSaleFk, rc.componentFk;
|
||||
END IF;
|
||||
|
||||
UPDATE order_row SET Id_Movimiento = vSale
|
||||
WHERE id = vRowId;
|
||||
|
||||
-- Inserta en putOrder si la compra es de Floramondo
|
||||
IF vIsLogifloraItem THEN
|
||||
CALL cache.availableNoRaids_refresh(vCalc,FALSE,vWarehouse,vShipment);
|
||||
|
||||
SET @available := 0;
|
||||
|
||||
SELECT GREATEST(0,available) INTO @available
|
||||
FROM cache.availableNoRaids
|
||||
WHERE calc_id = vCalc
|
||||
AND item_id = vItem;
|
||||
|
||||
UPDATE cache.availableNoRaids
|
||||
SET available = GREATEST(0,available - vAmount)
|
||||
WHERE item_id = vItem
|
||||
AND calc_id = vCalc;
|
||||
|
||||
INSERT INTO edi.putOrder (
|
||||
deliveryInformationID,
|
||||
supplyResponseId,
|
||||
quantity ,
|
||||
EndUserPartyId,
|
||||
EndUserPartyGLN,
|
||||
FHAdminNumber,
|
||||
saleFk
|
||||
)
|
||||
SELECT di.ID,
|
||||
i.supplyResponseFk,
|
||||
CEIL((vAmount - @available)/ sr.NumberOfItemsPerCask),
|
||||
o.address_id ,
|
||||
vClientId,
|
||||
IFNULL(ca.fhAdminNumber, fhc.defaultAdminNumber),
|
||||
vSale
|
||||
FROM edi.deliveryInformation di
|
||||
JOIN vn.item i ON i.supplyResponseFk = di.supplyResponseID
|
||||
JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk
|
||||
LEFT JOIN edi.clientFHAdminNumber ca ON ca.clientFk = vClientId
|
||||
JOIN edi.floraHollandConfig fhc
|
||||
JOIN hedera.`order` o ON o.id = vSelf
|
||||
WHERE i.id = vItem
|
||||
AND di.LatestOrderDateTime > util.VN_NOW()
|
||||
AND vAmount > @available
|
||||
LIMIT 1;
|
||||
END IF;
|
||||
UPDATE orderRow
|
||||
SET saleFk = vSaleFk
|
||||
WHERE id = vRowFk;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cRows;
|
||||
CLOSE vRows;
|
||||
END LOOP;
|
||||
CLOSE vDates;
|
||||
|
||||
CLOSE cDates;
|
||||
|
||||
UPDATE `order` SET confirmed = TRUE, confirm_date = util.VN_NOW()
|
||||
UPDATE `order`
|
||||
SET confirmed = TRUE,
|
||||
confirm_date = util.VN_NOW()
|
||||
WHERE id = vSelf;
|
||||
|
||||
COMMIT;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `salix`.`ACL_afterDelete`
|
||||
AFTER DELETE ON `ACL`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO ACLLog
|
||||
SET `action` = 'delete',
|
||||
`changedModel` = 'Acl',
|
||||
`changedModelId` = OLD.id,
|
||||
`userFk` = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `salix`.`ACL_beforeInsert`
|
||||
BEFORE INSERT ON `ACL`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `salix`.`ACL_beforeUpdate`
|
||||
BEFORE UPDATE ON `ACL`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,13 +1,9 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `srt`.`moving_clean`
|
||||
ON SCHEDULE EVERY 5 MINUTE
|
||||
ON SCHEDULE EVERY 15 MINUTE
|
||||
STARTS '2022-01-21 00:00:00.000'
|
||||
ON COMPLETION PRESERVE
|
||||
ENABLE
|
||||
COMMENT 'Llama a srt.moving_clean para que elimine y notifique de registr'
|
||||
DO BEGIN
|
||||
|
||||
CALL srt.moving_clean();
|
||||
|
||||
END$$
|
||||
DO CALL srt.moving_clean()$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -3,61 +3,69 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `srt`.`moving_clean`()
|
|||
BEGIN
|
||||
/**
|
||||
* Elimina movimientos por inactividad
|
||||
*
|
||||
*/
|
||||
DECLARE vExpeditionFk INT;
|
||||
DECLARE vBufferToFk INT;
|
||||
DECLARE vBufferFromFk INT;
|
||||
DECLARE done BOOL DEFAULT FALSE;
|
||||
|
||||
DECLARE cur CURSOR FOR
|
||||
SELECT m.expeditionFk, m.bufferToFk, m.bufferFromFk
|
||||
FROM srt.moving m
|
||||
JOIN srt.config c
|
||||
JOIN (SELECT bufferFk, SUM(isActive) hasBox
|
||||
FROM srt.photocell
|
||||
GROUP BY bufferFk) sub ON sub.bufferFk = m.bufferFromFk
|
||||
WHERE m.created < TIMESTAMPADD(MINUTE, - c.movingMaxLife , util.VN_NOW())
|
||||
DECLARE vStateOutFk INT
|
||||
DEFAULT (SELECT id FROM expeditionState WHERE `description` = 'OUT');
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vSorter CURSOR FOR
|
||||
SELECT m.expeditionFk, m.bufferFromFk
|
||||
FROM moving m
|
||||
JOIN (
|
||||
SELECT bufferFk, SUM(isActive) hasBox
|
||||
FROM photocell
|
||||
GROUP BY bufferFk
|
||||
) sub ON sub.bufferFk = m.bufferFromFk
|
||||
WHERE m.created < (util.VN_NOW() - INTERVAL (SELECT movingMaxLife FROM config) MINUTE)
|
||||
AND NOT sub.hasBox;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
OPEN cur;
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
bucle: LOOP
|
||||
OPEN vSorter;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH vSorter INTO vExpeditionFk, vBufferFromFk;
|
||||
|
||||
FETCH cur INTO vExpeditionFk, vBufferToFk, vBufferFromFk;
|
||||
|
||||
IF done THEN
|
||||
LEAVE bucle;
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
DELETE FROM srt.moving
|
||||
START TRANSACTION;
|
||||
|
||||
SELECT id
|
||||
FROM moving
|
||||
WHERE expeditionFk = vExpeditionFk
|
||||
FOR UPDATE;
|
||||
|
||||
DELETE FROM moving
|
||||
WHERE expeditionFk = vExpeditionFk;
|
||||
|
||||
UPDATE srt.expedition e
|
||||
JOIN srt.expeditionState es ON es.description = 'OUT'
|
||||
SET
|
||||
bufferFk = NULL,
|
||||
SELECT id
|
||||
FROM expedition
|
||||
WHERE id = vExpeditionFk
|
||||
OR (bufferFk = vBufferFromFk AND `position` > 0)
|
||||
FOR UPDATE;
|
||||
|
||||
UPDATE expedition
|
||||
SET bufferFk = NULL,
|
||||
`position` = NULL,
|
||||
stateFk = es.id
|
||||
WHERE e.id = vExpeditionFk;
|
||||
stateFk = vStateOutFk
|
||||
WHERE id = vExpeditionFk;
|
||||
|
||||
UPDATE srt.expedition e
|
||||
SET e.`position` = e.`position` - 1
|
||||
WHERE e.bufferFk = vBufferFromFk
|
||||
AND e.`position` > 0;
|
||||
|
||||
CALL vn.mail_insert(
|
||||
'pako@verdnatura.es, carles@verdnatura.es',
|
||||
NULL,
|
||||
CONCAT('Moving_clean. Expedition: ', vExpeditionFk, ' estaba parada'),
|
||||
CONCAT('Expedition: ', vExpeditionFk,' vBufferToFk: ', vBufferToFk)
|
||||
);
|
||||
|
||||
END LOOP bucle;
|
||||
|
||||
CLOSE cur;
|
||||
UPDATE expedition
|
||||
SET `position` = `position` - 1
|
||||
WHERE bufferFk = vBufferFromFk
|
||||
AND `position` > 0;
|
||||
|
||||
COMMIT;
|
||||
END LOOP l;
|
||||
CLOSE vSorter;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`buffer_afterDelete`
|
||||
AFTER DELETE ON `buffer`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO buffer
|
||||
SET `action` = 'delete',
|
||||
`changedModel` = 'Buffer',
|
||||
`changedModelId` = OLD.id,
|
||||
`userFk` = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`buffer_beforeInsert`
|
||||
BEFORE INSERT ON `buffer`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`buffer_beforeUpdate`
|
||||
BEFORE UPDATE ON `buffer`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,12 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`config_afterDelete`
|
||||
AFTER DELETE ON `config`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO config
|
||||
SET `action` = 'delete',
|
||||
`changedModel` = 'Config',
|
||||
`changedModelId` = OLD.id,
|
||||
`userFk` = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`config_beforeInsert`
|
||||
BEFORE INSERT ON `config`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`config_beforeUpdate`
|
||||
BEFORE UPDATE ON `config`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,26 +1,32 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1))
|
||||
RETURNS char(1) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(15))
|
||||
RETURNS char(2) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
/**
|
||||
* Obtiene la serie de de una factura
|
||||
* Obtiene la serie de una factura
|
||||
* dependiendo del area del cliente.
|
||||
*
|
||||
* @param vClientFk Id del cliente
|
||||
* @param vCompanyFk Id de la empresa
|
||||
* @param vType Tipo de factura ["R", "M", "G"]
|
||||
* @return Serie de la factura
|
||||
* @param vType Tipo de factura ['global','multiple','quick']
|
||||
* @return vSerie de la factura
|
||||
*/
|
||||
DECLARE vTaxArea VARCHAR(25);
|
||||
DECLARE vSerie CHAR(1);
|
||||
DECLARE vTaxArea VARCHAR(25) COLLATE utf8mb3_general_ci;
|
||||
DECLARE vSerie CHAR(2);
|
||||
|
||||
IF (SELECT hasInvoiceSimplified FROM client WHERE id = vClientFk) THEN
|
||||
RETURN 'S';
|
||||
END IF;
|
||||
|
||||
SELECT clientTaxArea(vClientFk, vCompanyFk) INTO vTaxArea;
|
||||
SELECT invoiceSerialArea(vType,vTaxArea) INTO vSerie;
|
||||
SELECT addressTaxArea(defaultAddressFk, vCompanyFk) INTO vTaxArea
|
||||
FROM client
|
||||
WHERE id = vClientFk;
|
||||
|
||||
SELECT code INTO vSerie
|
||||
FROM invoiceOutSerial
|
||||
WHERE `type` = vType AND taxAreaFk = vTaxArea;
|
||||
|
||||
RETURN vSerie;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceSerialArea`(vType CHAR(1), vTaxArea VARCHAR(25))
|
||||
RETURNS char(1) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
DECLARE vSerie CHAR(1);
|
||||
|
||||
IF vType = 'R' THEN
|
||||
SELECT
|
||||
CASE vTaxArea
|
||||
WHEN 'CEE' THEN 'H'
|
||||
WHEN 'WORLD' THEN 'E'
|
||||
ELSE 'T'
|
||||
END INTO vSerie;
|
||||
-- Factura multiple
|
||||
ELSEIF vType = 'M' THEN
|
||||
SELECT
|
||||
CASE vTaxArea
|
||||
WHEN 'CEE' THEN 'H'
|
||||
WHEN 'WORLD' THEN 'E'
|
||||
ELSE 'M'
|
||||
END INTO vSerie;
|
||||
-- Factura global
|
||||
ELSEIF vType = 'G' THEN
|
||||
SELECT
|
||||
CASE vTaxArea
|
||||
WHEN 'CEE' THEN 'V'
|
||||
WHEN 'WORLD' THEN 'X'
|
||||
ELSE 'A'
|
||||
END INTO vSerie;
|
||||
END IF;
|
||||
RETURN vSerie;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,8 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`address_updateCoordinates`(
|
||||
vTicketFk INT,
|
||||
vLongitude INT,
|
||||
vLatitude INT)
|
||||
vLongitude DECIMAL(11,7),
|
||||
vLatitude DECIMAL(11,7))
|
||||
BEGIN
|
||||
/**
|
||||
* Actualiza las coordenadas de una dirección.
|
||||
|
|
|
@ -47,7 +47,7 @@ proc: BEGIN
|
|||
|
||||
-- Tabla con el ultimo dia de last_buy para cada producto
|
||||
-- que hace un replace de la anterior.
|
||||
CALL buyUltimate(vWarehouseShipment, util.VN_CURDATE());
|
||||
CALL buy_getUltimate (NULL, vWarehouseShipment, util.VN_CURDATE());
|
||||
|
||||
INSERT INTO tItemRange
|
||||
SELECT t.itemFk, tr.landed
|
||||
|
|
|
@ -5,39 +5,14 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimate`(
|
|||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula las últimas compras realizadas hasta una fecha
|
||||
* @deprecated Usar buy_getUltimate
|
||||
* 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 tmp.buyUltimate
|
||||
*/
|
||||
CALL cache.last_buy_refresh (FALSE);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate;
|
||||
CREATE TEMPORARY TABLE tmp.buyUltimate
|
||||
(PRIMARY KEY (itemFk, warehouseFk),
|
||||
INDEX(itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT item_id itemFk, buy_id buyFk, warehouse_id warehouseFk, landing
|
||||
FROM cache.last_buy
|
||||
WHERE warehouse_id = vWarehouseFk OR vWarehouseFk IS NULL;
|
||||
|
||||
IF vDated >= util.VN_CURDATE() THEN
|
||||
CALL buyUltimateFromInterval(vWarehouseFk, util.VN_CURDATE(), vDated);
|
||||
|
||||
REPLACE INTO tmp.buyUltimate
|
||||
SELECT itemFk, buyFk, warehouseFk, landed landing
|
||||
FROM tmp.buyUltimateFromInterval
|
||||
WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
|
||||
AND landed <= vDated
|
||||
AND NOT isIgnored;
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimate
|
||||
SELECT itemFk, buyFk, warehouseFk, landed landing
|
||||
FROM tmp.buyUltimateFromInterval
|
||||
WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
|
||||
AND landed > vDated
|
||||
ORDER BY isIgnored = FALSE DESC;
|
||||
END IF;
|
||||
CALL buy_getUltimate(NULL, vWarehouseFk, vDated);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -6,6 +6,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimateFromInte
|
|||
)
|
||||
BEGIN
|
||||
/**
|
||||
* @deprecated Usar buy_getUltimateFromInterval
|
||||
* Calcula las últimas compras realizadas
|
||||
* desde un rango de fechas.
|
||||
*
|
||||
|
@ -14,153 +15,6 @@ BEGIN
|
|||
* @param vEnded Fecha fin
|
||||
* @return tmp.buyUltimateFromInterval
|
||||
*/
|
||||
IF vEnded IS NULL THEN
|
||||
SET vEnded = vStarted;
|
||||
END IF;
|
||||
|
||||
IF vEnded < vStarted THEN
|
||||
SET vStarted = TIMESTAMPADD(MONTH, -1, vEnded);
|
||||
END IF;
|
||||
|
||||
-- Item
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimateFromInterval;
|
||||
CREATE TEMPORARY TABLE tmp.buyUltimateFromInterval
|
||||
(PRIMARY KEY (itemFk, warehouseFk),
|
||||
INDEX(buyFk), INDEX(landed), INDEX(warehouseFk), INDEX(itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND b.price2 > 0
|
||||
ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed > vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND b.price2 > 0
|
||||
AND NOT b.isIgnored
|
||||
ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND b.quantity = 0
|
||||
ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
-- ItemOriginal
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
itemOriginalFk,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND b.price2 > 0
|
||||
AND NOT b.isIgnored
|
||||
AND b.quantity > 0
|
||||
AND itemOriginalFk
|
||||
ORDER BY t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed > vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND b.price2 > 0
|
||||
AND NOT b.isIgnored
|
||||
AND itemOriginalFk
|
||||
ORDER BY t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM
|
||||
(SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND b.quantity = 0
|
||||
AND itemOriginalFk
|
||||
ORDER BY t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
CALL vn.buy_getUltimateFromInterval(NULL, vWarehouseFk, vStarted, vEnded);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_getUltimate`(
|
||||
vItemFk INT,
|
||||
vWarehouseFk SMALLINT,
|
||||
vDated DATE
|
||||
)
|
||||
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 tmp.buyUltimate
|
||||
*/
|
||||
CALL cache.last_buy_refresh(FALSE);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.buyUltimate
|
||||
(PRIMARY KEY (itemFk, warehouseFk),
|
||||
INDEX(itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT item_id itemFk, buy_id buyFk, warehouse_id warehouseFk, landing
|
||||
FROM cache.last_buy
|
||||
WHERE (warehouse_id = vWarehouseFk OR vWarehouseFk IS NULL)
|
||||
AND (item_id = vItemFk OR vItemFk IS NULL);
|
||||
|
||||
IF vDated >= util.VN_CURDATE() THEN
|
||||
CALL buy_getUltimateFromInterval(vItemFk, vWarehouseFk, util.VN_CURDATE(), vDated);
|
||||
|
||||
REPLACE INTO tmp.buyUltimate
|
||||
SELECT itemFk, buyFk, warehouseFk, landed landing
|
||||
FROM tmp.buyUltimateFromInterval
|
||||
WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
|
||||
AND (itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND landed <= vDated
|
||||
AND NOT isIgnored;
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimate
|
||||
SELECT itemFk, buyFk, warehouseFk, landed landing
|
||||
FROM tmp.buyUltimateFromInterval
|
||||
WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
|
||||
AND (itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND landed > vDated
|
||||
ORDER BY isIgnored = FALSE DESC;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,175 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_getUltimateFromInterval`(
|
||||
vItemFk INT,
|
||||
vWarehouseFk SMALLINT,
|
||||
vStarted DATE,
|
||||
vEnded DATE
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula las últimas compras realizadas
|
||||
* desde un rango de fechas.
|
||||
*
|
||||
* @param vItemFk Id del artículo
|
||||
* @param vWarehouseFk Id del almacén si es NULL se actualizan todos
|
||||
* @param vStarted Fecha inicial
|
||||
* @param vEnded Fecha fin
|
||||
* @return tmp.buyUltimateFromInterval
|
||||
*/
|
||||
IF vEnded IS NULL THEN
|
||||
SET vEnded = vStarted;
|
||||
END IF;
|
||||
|
||||
IF vEnded < vStarted THEN
|
||||
SET vStarted = vEnded - INTERVAL 1 MONTH;
|
||||
END IF;
|
||||
|
||||
-- Item
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.buyUltimateFromInterval
|
||||
(PRIMARY KEY (itemFk, warehouseFk),
|
||||
INDEX(buyFk), INDEX(landed), INDEX(warehouseFk), INDEX(itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND (b.itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND b.price2 > 0
|
||||
ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed > vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND (b.itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND b.price2 > 0
|
||||
AND NOT b.isIgnored
|
||||
ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND (b.itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND b.quantity = 0
|
||||
ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
-- ItemOriginal
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
itemOriginalFk,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND (b.itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND b.price2 > 0
|
||||
AND NOT b.isIgnored
|
||||
AND b.quantity > 0
|
||||
AND itemOriginalFk
|
||||
ORDER BY t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM (SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed > vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND (b.itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND b.price2 > 0
|
||||
AND NOT b.isIgnored
|
||||
AND itemOriginalFk
|
||||
ORDER BY t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
|
||||
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
buyFk,
|
||||
landed,
|
||||
isIgnored
|
||||
FROM
|
||||
(SELECT b.itemFk,
|
||||
t.warehouseInFk warehouseFk,
|
||||
b.id buyFk,
|
||||
t.landed,
|
||||
b.isIgnored
|
||||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vStarted AND vEnded
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND (b.itemFk = vItemFk OR vItemFk IS NULL)
|
||||
AND b.quantity = 0
|
||||
AND itemOriginalFk
|
||||
ORDER BY t.landed DESC, b.id DESC
|
||||
LIMIT 10000000000000000000) sub
|
||||
GROUP BY itemFk, warehouseFk;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,5 +1,9 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_updateGrouping`(vWarehouseFk INT, vItemFk INT, vGrouping INT)
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_updateGrouping`(
|
||||
vWarehouseFk INT,
|
||||
vItemFk INT,
|
||||
vGrouping INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Actualiza el grouping de las últimas compras de un artículo
|
||||
|
@ -8,9 +12,9 @@ BEGIN
|
|||
* @param vItemFk Id del Artículo
|
||||
* @param vGrouping Cantidad de grouping
|
||||
*/
|
||||
CALL vn.buyUltimate(vWarehouseFk, util.VN_CURDATE());
|
||||
CALL buy_getUltimate(vItemFk, vWarehouseFk, util.VN_CURDATE());
|
||||
|
||||
UPDATE vn.buy b
|
||||
UPDATE buy b
|
||||
JOIN tmp.buyUltimate bu ON b.id = bu.buyFk
|
||||
SET b.`grouping` = vGrouping
|
||||
WHERE bu.warehouseFk = vWarehouseFk
|
||||
|
|
|
@ -8,7 +8,7 @@ BEGIN
|
|||
* @param vItemFk id del item
|
||||
* @param vPacking packing a actualizar
|
||||
*/
|
||||
CALL buyUltimate(vWarehouseFk, util.VN_CURDATE());
|
||||
CALL buy_getUltimate(vItemFk, vWarehouseFk, util.VN_CURDATE());
|
||||
|
||||
UPDATE buy b
|
||||
JOIN tmp.buyUltimate bu ON b.id = bu.buyFk
|
||||
|
|
|
@ -29,7 +29,7 @@ BEGIN
|
|||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
CALL vn.zone_getShipped (vLanded, vAddressFk, vAgencyModeFk, vShowExpiredZones);
|
||||
CALL zone_getShipped (vLanded, vAddressFk, vAgencyModeFk, vShowExpiredZones);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot;
|
||||
CREATE TEMPORARY TABLE tmp.ticketLot(
|
||||
|
@ -74,7 +74,7 @@ BEGIN
|
|||
|
||||
CALL `cache`.available_refresh(vAvailableCalc, FALSE, vWarehouseFk, vShipped);
|
||||
CALL `cache`.availableNoRaids_refresh(vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped);
|
||||
CALL vn.buyUltimate(vWarehouseFk, vShipped);
|
||||
CALL buy_getUltimate(NULL, vWarehouseFk, vShipped);
|
||||
|
||||
INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk, zoneFk)
|
||||
SELECT vWarehouseFk,
|
||||
|
@ -86,17 +86,17 @@ BEGIN
|
|||
LEFT JOIN cache.availableNoRaids anr ON anr.item_id = a.item_id
|
||||
AND anr.calc_id = vAvailableNoRaidsCalc
|
||||
JOIN tmp.item i ON i.itemFk = a.item_id
|
||||
JOIN vn.item it ON it.id = i.itemFk
|
||||
JOIN vn.`zone` z ON z.id = vZoneFk
|
||||
JOIN item it ON it.id = i.itemFk
|
||||
JOIN `zone` z ON z.id = vZoneFk
|
||||
LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = a.item_id
|
||||
LEFT JOIN edi.supplyResponse sr ON sr.ID = it.supplyResponseFk
|
||||
LEFT JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID
|
||||
LEFT JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID
|
||||
LEFT JOIN (SELECT isVNHSupplier, isEarlyBird, TRUE AS itemAllowed
|
||||
FROM vn.addressFilter af
|
||||
FROM addressFilter af
|
||||
JOIN (SELECT ad.provinceFk, p.countryFk, ad.isLogifloraAllowed
|
||||
FROM vn.address ad
|
||||
JOIN vn.province p ON p.id = ad.provinceFk
|
||||
FROM address ad
|
||||
JOIN province p ON p.id = ad.provinceFk
|
||||
WHERE ad.id = vAddressFk
|
||||
) sub2 ON sub2.provinceFk <=> IFNULL(af.provinceFk, sub2.provinceFk)
|
||||
AND sub2.countryFk <=> IFNULL(af.countryFk, sub2.countryFk)
|
||||
|
@ -108,18 +108,18 @@ BEGIN
|
|||
OR ISNULL(af.afterDated))
|
||||
) sub ON sub.isVNHSupplier = v.isVNHSupplier
|
||||
AND (sub.isEarlyBird = mp.isEarlyBird OR ISNULL(sub.isEarlyBird))
|
||||
JOIN vn.agencyMode am ON am.id = vAgencyModeFk
|
||||
JOIN vn.agency ag ON ag.id = am.agencyFk
|
||||
JOIN vn.itemType itt ON itt.id = it.typeFk
|
||||
JOIN vn.itemCategory itc on itc.id = itt.categoryFk
|
||||
JOIN vn.address ad ON ad.id = vAddressFk
|
||||
LEFT JOIN vn.clientItemType cit
|
||||
JOIN agencyMode am ON am.id = vAgencyModeFk
|
||||
JOIN agency ag ON ag.id = am.agencyFk
|
||||
JOIN itemType itt ON itt.id = it.typeFk
|
||||
JOIN itemCategory itc on itc.id = itt.categoryFk
|
||||
JOIN address ad ON ad.id = vAddressFk
|
||||
LEFT JOIN clientItemType cit
|
||||
ON cit.clientFk = ad.clientFk
|
||||
AND cit.itemTypeFk = itt.id
|
||||
LEFT JOIN vn.zoneItemType zit
|
||||
LEFT JOIN zoneItemType zit
|
||||
ON zit.zoneFk = vZoneFk
|
||||
AND zit.itemTypeFk = itt.id
|
||||
LEFT JOIN vn.agencyModeItemType ait
|
||||
LEFT JOIN agencyModeItemType ait
|
||||
ON ait.agencyModeFk = vAgencyModeFk
|
||||
AND ait.itemTypeFk = itt.id
|
||||
WHERE a.calc_id = vAvailableCalc
|
||||
|
@ -133,7 +133,7 @@ BEGIN
|
|||
|
||||
DROP TEMPORARY TABLE tmp.buyUltimate;
|
||||
|
||||
CALL vn.catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk);
|
||||
CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk);
|
||||
|
||||
INSERT INTO tmp.ticketCalculateItem(
|
||||
itemFk,
|
||||
|
|
|
@ -21,6 +21,7 @@ BEGIN
|
|||
AND a.id IS NULL
|
||||
AND u.active
|
||||
AND c.created < util.VN_CURDATE() - INTERVAL vMonths MONTH
|
||||
AND NOT u.role = (SELECT id FROM `role` WHERE name = 'supplier')
|
||||
AND u.id NOT IN (
|
||||
SELECT DISTINCT c.id
|
||||
FROM client c
|
||||
|
|
|
@ -9,10 +9,11 @@ BEGIN
|
|||
DECLARE vWarehouseFk INT;
|
||||
DECLARE vWagons INT;
|
||||
DECLARE vTrainFk INT;
|
||||
DECLARE vLinesLimit INT DEFAULT NULL;
|
||||
DECLARE vLinesLimit INT;
|
||||
DECLARE vTicketLines INT;
|
||||
DECLARE vVolumeLimit DECIMAL DEFAULT NULL;
|
||||
DECLARE vVolumeLimit DECIMAL;
|
||||
DECLARE vTicketVolume DECIMAL;
|
||||
DECLARE vSizeLimit INT;
|
||||
DECLARE vMaxTickets INT;
|
||||
DECLARE vStateFk VARCHAR(45);
|
||||
DECLARE vFirstTicketFk INT;
|
||||
|
@ -77,6 +78,7 @@ BEGIN
|
|||
o.trainFk,
|
||||
o.linesLimit,
|
||||
o.volumeLimit,
|
||||
o.sizeLimit,
|
||||
pc.collection_new_lockname
|
||||
INTO vMaxTickets,
|
||||
vHasUniqueCollectionTime,
|
||||
|
@ -88,6 +90,7 @@ BEGIN
|
|||
vTrainFk,
|
||||
vLinesLimit,
|
||||
vVolumeLimit,
|
||||
vSizeLimit,
|
||||
vLockName
|
||||
FROM productionConfig pc
|
||||
JOIN worker w ON w.id = vUserFk
|
||||
|
@ -172,6 +175,14 @@ BEGIN
|
|||
JOIN state s ON s.id = pb.state
|
||||
JOIN agencyMode am ON am.id = pb.agencyModeFk
|
||||
JOIN agency a ON a.id = am.agencyFk
|
||||
LEFT JOIN (
|
||||
SELECT pb.ticketFk, MAX(i.`size`) maxSize
|
||||
FROM tmp.productionBuffer pb
|
||||
JOIN ticket t ON t.id = pb.ticketfk
|
||||
JOIN sale s ON s.ticketFk = t.id
|
||||
JOIN item i ON i.id = s.itemFk
|
||||
GROUP BY pb.ticketFk
|
||||
) sub ON sub.ticketFk = pb.ticketFk
|
||||
JOIN productionConfig pc
|
||||
WHERE pb.shipped <> util.VN_CURDATE()
|
||||
OR (pb.ubicacion IS NULL AND a.isOwn)
|
||||
|
@ -183,8 +194,9 @@ BEGIN
|
|||
OR (NOT pb.V AND vItemPackingTypeFk = 'V')
|
||||
OR (pc.isPreviousPreparationRequired AND pb.previousWithoutParking)
|
||||
OR LENGTH(pb.problem) > 0
|
||||
OR (pb.lines >= vLinesLimit AND vLinesLimit IS NOT NULL)
|
||||
OR (pb.m3 >= vVolumeLimit AND vVolumeLimit IS NOT NULL);
|
||||
OR (pb.lines > vLinesLimit AND vLinesLimit IS NOT NULL)
|
||||
OR (pb.m3 > vVolumeLimit AND vVolumeLimit IS NOT NULL)
|
||||
OR ((sub.maxSize > vSizeLimit OR sub.maxSize IS NOT NULL) AND vSizeLimit IS NOT NULL);
|
||||
END IF;
|
||||
|
||||
-- Es importante que el primer ticket se coja en todos los casos
|
||||
|
|
|
@ -12,6 +12,7 @@ BEGIN
|
|||
DECLARE vInvoiceFk INT;
|
||||
DECLARE vBookEntry INT;
|
||||
DECLARE vFiscalYear INT;
|
||||
DECLARE vIncorrectInvoiceInDueDay INT;
|
||||
|
||||
DECLARE vInvoicesIn CURSOR FOR
|
||||
SELECT DISTINCT e.invoiceInFk
|
||||
|
@ -24,6 +25,19 @@ BEGIN
|
|||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
SELECT GROUP_CONCAT(ii.id) INTO vIncorrectInvoiceInDueDay
|
||||
FROM invoiceInDueDay iidd
|
||||
JOIN invoiceIn ii ON iidd.invoiceInFk = ii.id
|
||||
JOIN `entry` e ON e.invoiceInFk = ii.id
|
||||
JOIN duaEntry de ON de.entryFk = e.id
|
||||
JOIN invoiceInConfig iic
|
||||
WHERE de.duaFk = vDuaFk
|
||||
AND iidd.dueDated < util.VN_CURDATE() + INTERVAL iic.dueDateMarginDays DAY;
|
||||
|
||||
IF vIncorrectInvoiceInDueDay THEN
|
||||
CALL util.throw(CONCAT('Incorrect due date, invoice: ', vIncorrectInvoiceInDueDay));
|
||||
END IF;
|
||||
|
||||
UPDATE invoiceIn ii
|
||||
JOIN entry e ON e.invoiceInFk = ii.id
|
||||
JOIN duaEntry de ON de.entryFk = e.id
|
||||
|
|
|
@ -97,7 +97,7 @@ BEGIN
|
|||
FROM tmp.itemList;
|
||||
END IF;
|
||||
|
||||
CALL buyUltimateFromInterval(vWarehouseIn,vInventoryDate, vDateLanded);
|
||||
CALL buy_getUltimateFromInterval(NULL, vWarehouseIn,vInventoryDate, vDateLanded);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tTransfer
|
||||
ENGINE = MEMORY
|
||||
|
|
|
@ -15,7 +15,7 @@ BEGIN
|
|||
|
||||
DECLARE cur CURSOR FOR
|
||||
SELECT bb.id buyFk,
|
||||
FLOOR(ish.visible / ish.packing) ishStickers,
|
||||
LEAST(bb.stickers, FLOOR(ish.visible / ish.packing)) ishStickers,
|
||||
bb.stickers buyStickers
|
||||
FROM itemShelving ish
|
||||
JOIN (SELECT b.id, b.itemFk, b.stickers
|
||||
|
@ -23,7 +23,6 @@ BEGIN
|
|||
WHERE b.entryFk = vFromEntryFk
|
||||
ORDER BY b.stickers DESC
|
||||
LIMIT 10000000000000000000) bb ON bb.itemFk = ish.itemFk
|
||||
AND bb.stickers >= FLOOR(ish.visible / ish.packing)
|
||||
WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_general_ci
|
||||
AND NOT ish.isSplit
|
||||
GROUP BY ish.id;
|
||||
|
@ -110,7 +109,7 @@ BEGIN
|
|||
|
||||
UPDATE itemShelving
|
||||
SET isSplit = TRUE
|
||||
WHERE shelvingFk = vShelvingFk;
|
||||
WHERE shelvingFk = vShelvingFk COLLATE utf8_general_ci;
|
||||
END LOOP;
|
||||
CLOSE cur;
|
||||
END$$
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionScan_Put`(vPalletFk INT, vExpeditionFk INT)
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionScan_Put`(
|
||||
vPalletFk INT,
|
||||
vExpeditionFk INT
|
||||
)
|
||||
BEGIN
|
||||
IF NOT (SELECT TRUE FROM expedition WHERE id = vExpeditionFk LIMIT 1) THEN
|
||||
CALL util.throw('Expedition not exists');
|
||||
END IF;
|
||||
|
||||
REPLACE vn.expeditionScan(expeditionFk, palletFk)
|
||||
IF NOT (SELECT TRUE FROM expeditionPallet WHERE id = vPalletFk LIMIT 1) THEN
|
||||
CALL util.throw('Pallet not exists');
|
||||
END IF;
|
||||
|
||||
REPLACE expeditionScan(expeditionFk, palletFk)
|
||||
VALUES(vExpeditionFk, vPalletFk);
|
||||
|
||||
SELECT LAST_INSERT_ID() INTO vPalletFk;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInDueDay_calculate`(vInvoiceInFk INT)
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInDueDay_calculate`(
|
||||
vInvoiceInFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula los vctos. de una factura recibida
|
||||
|
@ -56,12 +58,13 @@ BEGIN
|
|||
COUNT(DISTINCT(pdd.detail)) cont,
|
||||
s.payDay,
|
||||
ii.issued,
|
||||
DATE(ii.created) + INTERVAL 2 DAY created
|
||||
DATE(ii.created) + INTERVAL iic.dueDateMarginDays DAY created
|
||||
FROM invoiceIn ii
|
||||
JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id
|
||||
LEFT JOIN sage.TiposIva ti ON ti.CodigoIva= iit.taxTypeSageFk
|
||||
JOIN supplier s ON s.id = ii.supplierFk
|
||||
JOIN payDemDetail pdd ON pdd.id = s.payDemFk
|
||||
JOIN invoiceInConfig iic
|
||||
WHERE ii.id = vInvoiceInFk
|
||||
GROUP BY ii.id
|
||||
)sub
|
||||
|
|
|
@ -16,9 +16,11 @@ BEGIN
|
|||
DECLARE vHasRepeatedTransactions BOOL;
|
||||
|
||||
SELECT TRUE INTO vHasRepeatedTransactions
|
||||
FROM invoiceInTax
|
||||
WHERE invoiceInFk = vSelf
|
||||
HAVING COUNT(DISTINCT transactionTypeSageFk) > 1
|
||||
FROM invoiceInTax iit
|
||||
JOIN invoiceIn ii ON ii.id = iit.invoiceInFk
|
||||
WHERE ii.id = vSelf
|
||||
AND ii.serial = 'E'
|
||||
HAVING COUNT(DISTINCT iit.transactionTypeSageFk) > 1
|
||||
LIMIT 1;
|
||||
|
||||
IF vHasRepeatedTransactions THEN
|
||||
|
|
|
@ -97,7 +97,7 @@ BEGIN
|
|||
AND (vCorrectingSerial = vSerial OR NOT hasAnyNegativeBase())
|
||||
THEN
|
||||
|
||||
-- el trigger añade el siguiente Id_Factura correspondiente a la vSerial
|
||||
-- el trigger añade el siguiente ref correspondiente a la vSerial
|
||||
INSERT INTO invoiceOut(
|
||||
ref,
|
||||
serial,
|
||||
|
|
|
@ -98,6 +98,7 @@ proc: BEGIN
|
|||
itemShelvingFk,
|
||||
saleFk,
|
||||
quantity,
|
||||
userFk,
|
||||
isPicked)
|
||||
SELECT vItemShelvingFk,
|
||||
vSaleFk,
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addBySaleGroup`(
|
||||
vSaleGroupFk INT(11)
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Reserva cantidades con ubicaciones para el contenido de una preparación previa
|
||||
* a través del saleGroup
|
||||
*
|
||||
* @param vSaleGroupFk Identificador de saleGroup
|
||||
*/
|
||||
DECLARE vDone BOOL DEFAULT FALSE;
|
||||
DECLARE vSaleFk INT;
|
||||
DECLARE vSectorFk INT;
|
||||
DECLARE vSales CURSOR FOR
|
||||
SELECT s.id
|
||||
FROM saleGroupDetail sgd
|
||||
JOIN sale s ON sgd.saleFk = s.id
|
||||
JOIN saleTracking str ON str.saleFk = s.id
|
||||
JOIN `state` st ON st.id = str.stateFk
|
||||
AND st.code = 'PREVIOUS_PREPARATION'
|
||||
LEFT JOIN itemShelvingSale iss ON iss.saleFk = s.id
|
||||
WHERE sgd.saleGroupFk = vSaleGroupFk
|
||||
AND str.workerFk = account.myUser_getId()
|
||||
AND iss.id IS NULL;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
SELECT sectorFk INTO vSectorFk
|
||||
FROM operator
|
||||
WHERE workerFk = account.myUser_getId();
|
||||
|
||||
OPEN vSales;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH vSales INTO vSaleFk;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk);
|
||||
END LOOP;
|
||||
CLOSE vSales;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -12,7 +12,7 @@ BEGIN
|
|||
DECLARE vSaleFk INT;
|
||||
DECLARE vSectorFk INT;
|
||||
DECLARE vSales CURSOR FOR
|
||||
SELECT s.id
|
||||
SELECT DISTINCT s.id
|
||||
FROM sectorCollectionSaleGroup sc
|
||||
JOIN saleGroupDetail sg ON sg.saleGroupFk = sc.saleGroupFk
|
||||
JOIN sale s ON sg.saleFk = s.id
|
||||
|
|
|
@ -30,12 +30,12 @@ BEGIN
|
|||
FROM itemShelvingSale iss
|
||||
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
|
||||
WHERE iss.itemShelvingFk = vItemShelvingFk
|
||||
AND iss.itemFk = vItemFk
|
||||
AND ish.itemFk = vItemFk
|
||||
AND NOT iss.isPicked
|
||||
FOR UPDATE;
|
||||
|
||||
INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk)
|
||||
SELECT DISTINCT iss.saleFk
|
||||
INSERT INTO itemShelvingSaleReserve (saleFk, sectorFk)
|
||||
SELECT DISTINCT iss.saleFk, vSectorFk
|
||||
FROM itemShelvingSale iss
|
||||
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
|
||||
WHERE iss.itemShelvingFk = vItemShelvingFk
|
||||
|
|
|
@ -103,7 +103,7 @@ BEGIN
|
|||
COMMIT;
|
||||
|
||||
IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN
|
||||
INSERT INTO itemShelvingSaleReserve (saleFk, vSectorFk)
|
||||
INSERT INTO itemShelvingSaleReserve (saleFk, sectorFk)
|
||||
SELECT vSaleFk, vSectorFk;
|
||||
CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk);
|
||||
END IF;
|
||||
|
|
|
@ -15,7 +15,7 @@ BEGIN
|
|||
JOIN ticket t ON t.id = c.ticketFk
|
||||
WHERE c.id = vClaimFk;
|
||||
|
||||
CALL buyUltimate (vWarehouseFk, util.VN_CURDATE());
|
||||
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
|
||||
|
|
|
@ -16,7 +16,8 @@ BEGIN
|
|||
ish.id,
|
||||
s.priority,
|
||||
ish.isChecked,
|
||||
ic.url
|
||||
ic.url,
|
||||
ish.available
|
||||
FROM itemShelving ish
|
||||
JOIN item i ON i.id = ish.itemFk
|
||||
JOIN shelving s ON vSelf = s.code COLLATE utf8_unicode_ci
|
||||
|
|
|
@ -23,7 +23,7 @@ BEGIN
|
|||
FROM operator
|
||||
WHERE workerFk = account.myUser_getId();
|
||||
|
||||
CALL buyUltimate(vWarehouseFk, util.VN_CURDATE());
|
||||
CALL buy_getUltimate(vBarcodeItem, vWarehouseFk, util.VN_CURDATE());
|
||||
|
||||
SELECT buyFk INTO vBuyFk
|
||||
FROM tmp.buyUltimate
|
||||
|
|
|
@ -93,7 +93,7 @@ BEGIN
|
|||
ORDER BY created DESC
|
||||
LIMIT 1;
|
||||
|
||||
CALL buyUltimate(vWarehouseFk, vCurdate);
|
||||
CALL buy_getUltimate(vSelf, vWarehouseFk, vCurdate);
|
||||
|
||||
SELECT b.entryFk, bu.buyFk,IFNULL(b.buyingValue, 0) INTO vLastEntryFk, vLastBuyFk, vBuyingValueOriginal
|
||||
FROM tmp.buyUltimate bu
|
||||
|
|
|
@ -189,7 +189,7 @@ BEGIN
|
|||
SELECT * FROM sales
|
||||
UNION ALL
|
||||
SELECT * FROM orders
|
||||
ORDER BY shipped,
|
||||
ORDER BY shipped DESC,
|
||||
(inventorySupplierFk = entityId) DESC,
|
||||
alertLevel DESC,
|
||||
isTicket,
|
||||
|
@ -240,7 +240,7 @@ BEGIN
|
|||
NULL reference,
|
||||
NULL entityType,
|
||||
NULL entityId,
|
||||
'Inventario calculado',
|
||||
'Inventario calculado' entityName,
|
||||
@a invalue,
|
||||
NULL `out`,
|
||||
@a balance,
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getInfo`(IN `vBarcode` VARCHAR(22), IN `vWarehouseFk` INT)
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getInfo`(
|
||||
`vBarcode` VARCHAR(22),
|
||||
`vWarehouseFk` INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve información relativa al item correspondiente del vBarcode pasado
|
||||
|
@ -11,12 +14,14 @@ BEGIN
|
|||
DECLARE vCacheAvailableFk INT;
|
||||
DECLARE vVisibleItemShelving INT;
|
||||
DECLARE vItemFk INT;
|
||||
DECLARE vDated DATE;
|
||||
|
||||
SELECT barcodeToItem(vBarcode), util.VN_CURDATE() INTO vItemFk, vDated;
|
||||
|
||||
CALL cache.visible_refresh(vCacheVisibleFk, FALSE, vWarehouseFk);
|
||||
CALL cache.available_refresh(vCacheAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE());
|
||||
CALL buyUltimate(vWarehouseFk, util.VN_CURDATE());
|
||||
CALL cache.available_refresh(vCacheAvailableFk, FALSE, vWarehouseFk, vDated);
|
||||
CALL buy_getUltimate(vItemFk, vWarehouseFk, vDated);
|
||||
|
||||
SELECT barcodeToItem(vBarcode) INTO vItemFk;
|
||||
SELECT SUM(visible) INTO vVisibleItemShelving
|
||||
FROM itemShelvingStock
|
||||
WHERE itemFk = vItemFk
|
||||
|
|
|
@ -1,37 +1,40 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getMinacum`(IN vWarehouseFk TINYINT, IN vDatedFrom DATETIME, IN vRange INT, IN vItemFk INT)
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getMinacum`(
|
||||
vWarehouseFk TINYINT,
|
||||
vDated DATE,
|
||||
vRange INT,
|
||||
vItemFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Cálculo del mínimo acumulado, para un item/almacén especificado, en caso de
|
||||
* NULL para todo.
|
||||
* Cálculo del mínimo acumulado, para un item/almacén
|
||||
* especificado, en caso de NULL para todos.
|
||||
*
|
||||
* @param vWarehouseFk -> warehouseFk
|
||||
* @param vDatedFrom -> fecha inicio
|
||||
* @param vRange -> número de días a considerar
|
||||
* @param vItemFk -> Identificador de item
|
||||
* @param vWarehouseFk Id warehouse
|
||||
* @param vDated Fecha inicio
|
||||
* @param vRange Número de días a considerar
|
||||
* @param vItemFk Id de artículo
|
||||
* @return tmp.itemMinacum
|
||||
*/
|
||||
DECLARE vDatedTo DATETIME;
|
||||
DECLARE vDatedTo DATETIME DEFAULT util.dayEnd(vDated + INTERVAL vRange DAY);
|
||||
|
||||
SET vDatedFrom = TIMESTAMP(DATE(vDatedFrom), '00:00:00');
|
||||
SET vDatedTo = TIMESTAMP(TIMESTAMPADD(DAY, vRange, vDatedFrom), '23:59:59');
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.itemCalc;
|
||||
CREATE TEMPORARY TABLE tmp.itemCalc
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.itemCalc
|
||||
(INDEX (itemFk, warehouseFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT sub.itemFk,
|
||||
sub.dated,
|
||||
CAST(SUM(sub.quantity) AS SIGNED) quantity,
|
||||
sub.warehouseFk
|
||||
FROM (SELECT s.itemFk,
|
||||
FROM (
|
||||
SELECT s.itemFk,
|
||||
DATE(t.shipped) dated,
|
||||
-s.quantity quantity,
|
||||
t.warehouseFk
|
||||
FROM sale s
|
||||
JOIN ticket t ON t.id = s.ticketFk
|
||||
WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo
|
||||
WHERE t.shipped BETWEEN vDated AND vDatedTo
|
||||
AND t.warehouseFk
|
||||
AND s.quantity != 0
|
||||
AND s.quantity <> 0
|
||||
AND (vItemFk IS NULL OR s.itemFk = vItemFk)
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseFk = vWarehouseFk)
|
||||
UNION ALL
|
||||
|
@ -42,10 +45,10 @@ BEGIN
|
|||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.landed BETWEEN vDatedFrom AND vDatedTo
|
||||
WHERE t.landed BETWEEN vDated AND vDatedTo
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||||
AND !e.isExcludedFromAvailable
|
||||
AND b.quantity != 0
|
||||
AND NOT e.isExcludedFromAvailable
|
||||
AND b.quantity <> 0
|
||||
AND (vItemFk IS NULL OR b.itemFk = vItemFk)
|
||||
UNION ALL
|
||||
SELECT b.itemFk,
|
||||
|
@ -55,28 +58,45 @@ BEGIN
|
|||
FROM buy b
|
||||
JOIN entry e ON e.id = b.entryFk
|
||||
JOIN travel t ON t.id = e.travelFk
|
||||
WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo
|
||||
WHERE t.shipped BETWEEN vDated AND vDatedTo
|
||||
AND (vWarehouseFk IS NULL OR t.warehouseOutFk = vWarehouseFk)
|
||||
AND !e.isExcludedFromAvailable
|
||||
AND b.quantity != 0
|
||||
AND NOT e.isExcludedFromAvailable
|
||||
AND b.quantity <> 0
|
||||
AND (vItemFk IS NULL OR b.itemFk = vItemFk)
|
||||
AND !e.isRaid
|
||||
AND NOT e.isRaid
|
||||
UNION ALL
|
||||
SELECT r.itemFk,
|
||||
r.shipment,
|
||||
-r.amount,
|
||||
r.warehouseFk
|
||||
FROM hedera.orderRow r
|
||||
JOIN hedera.`order` o ON o.id = r.orderFk
|
||||
JOIN client c ON c.id = o.customer_id
|
||||
WHERE r.shipment BETWEEN vDated AND vDatedTo
|
||||
AND (vWarehouseFk IS NULL OR r.warehouseFk = vWarehouseFk)
|
||||
AND r.created >= (
|
||||
SELECT util.VN_NOW() - INTERVAL TIME_TO_SEC(reserveTime) SECOND
|
||||
FROM hedera.orderConfig
|
||||
)
|
||||
AND NOT o.confirmed
|
||||
AND (vItemFk IS NULL OR r.itemFk = vItemFk)
|
||||
AND r.amount <> 0
|
||||
) sub
|
||||
GROUP BY sub.itemFk, sub.warehouseFk, sub.dated;
|
||||
|
||||
CALL item_getAtp(vDatedFrom);
|
||||
DROP TEMPORARY TABLE tmp.itemCalc;
|
||||
CALL item_getAtp(vDated);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.itemMinacum;
|
||||
CREATE TEMPORARY TABLE tmp.itemMinacum
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.itemMinacum
|
||||
(INDEX(itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT i.itemFk,
|
||||
i.warehouseFk,
|
||||
i.quantity amount
|
||||
FROM tmp.itemAtp i
|
||||
HAVING amount != 0;
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
quantity amount
|
||||
FROM tmp.itemAtp
|
||||
WHERE quantity <> 0;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.itemAtp;
|
||||
DROP TEMPORARY TABLE
|
||||
tmp.itemAtp,
|
||||
tmp.itemCalc;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -13,7 +13,7 @@ BEGIN
|
|||
*/
|
||||
ALTER TABLE tmp.itemInventory ADD IF NOT EXISTS buy_id INT;
|
||||
|
||||
CALL buyUltimate(vWarehouseFk, vDate);
|
||||
CALL buy_getUltimate (NULL, vWarehouseFk, vDate);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp
|
||||
(KEY (itemFk))
|
||||
|
|
|
@ -204,7 +204,7 @@ BEGIN
|
|||
AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
|
||||
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity);
|
||||
|
||||
CALL buyUltimate(NULL, vDateDayEnd);
|
||||
CALL buy_getUltimate (NULL, NULL, vDateDayEnd);
|
||||
|
||||
DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity;
|
||||
|
||||
|
|
|
@ -86,8 +86,8 @@ proc: BEGIN
|
|||
WHERE calc_id = vCalcFk;
|
||||
|
||||
UPDATE tmp.itemInventory it
|
||||
JOIN tItemInventoryCalc iic ON iic.itemFk = it.id
|
||||
JOIN tItemVisibleCalc ivc ON ivc.item_id = it.id
|
||||
LEFT JOIN tItemInventoryCalc iic ON iic.itemFk = it.id
|
||||
LEFT JOIN tItemVisibleCalc ivc ON ivc.item_id = it.id
|
||||
SET it.inventory = iic.quantity,
|
||||
it.visible = ivc.visible,
|
||||
it.avalaible = iic.quantity,
|
||||
|
|
|
@ -174,8 +174,9 @@ proc: BEGIN
|
|||
WHERE NOT `lines`;
|
||||
|
||||
-- Lineas por linea de encajado
|
||||
UPDATE tmp.productionBuffer pb
|
||||
JOIN (
|
||||
CREATE OR REPLACE TEMPORARY TABLE tItemPackingType
|
||||
(PRIMARY KEY(ticketFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT ticketFk,
|
||||
SUM(sub.H) H,
|
||||
SUM(sub.V) V,
|
||||
|
@ -190,11 +191,13 @@ proc: BEGIN
|
|||
JOIN item i ON i.id = s.itemFk
|
||||
GROUP BY t.ticketFk, i.itemPackingTypeFk
|
||||
) sub
|
||||
GROUP BY ticketFk
|
||||
) sub2 ON sub2.ticketFk = pb.ticketFk
|
||||
SET pb.H = sub2.H,
|
||||
pb.V = sub2.V,
|
||||
pb.N = sub2.N;
|
||||
GROUP BY ticketFk;
|
||||
|
||||
UPDATE tmp.productionBuffer pb
|
||||
JOIN tItemPackingType ti ON ti.ticketFk = pb.ticketFk
|
||||
SET pb.H = ti.H,
|
||||
pb.V = ti.V,
|
||||
pb.N = ti.N;
|
||||
|
||||
-- Colecciones segun tipo de encajado
|
||||
UPDATE tmp.productionBuffer pb
|
||||
|
@ -273,6 +276,7 @@ proc: BEGIN
|
|||
tmp.risk,
|
||||
tmp.ticket_problems,
|
||||
tmp.ticketWithPrevia,
|
||||
tItemShelvingStock;
|
||||
tItemShelvingStock,
|
||||
tItemPackingType;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -10,11 +10,6 @@ BEGIN
|
|||
* @param vSaleGroupFk id de la preparación previa
|
||||
* @param vParkingFk id del parking
|
||||
*/
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
UPDATE saleGroup sg
|
||||
SET sg.parkingFk = vParkingFk
|
||||
WHERE sg.id = vSaleGroupFk
|
||||
|
|
|
@ -13,7 +13,7 @@ BEGIN
|
|||
DECLARE vAvailableCache INT;
|
||||
DECLARE vVisibleCache INT;
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vComponentCount INT;
|
||||
DECLARE vRequiredComponent INT;
|
||||
|
||||
DECLARE vCursor CURSOR FOR
|
||||
SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(tt.shipped))
|
||||
|
@ -54,7 +54,7 @@ BEGIN
|
|||
SELECT ticketFk, clientFk
|
||||
FROM tmp.sale_getProblems;
|
||||
|
||||
SELECT COUNT(*) INTO vComponentCount
|
||||
SELECT COUNT(*) INTO vRequiredComponent
|
||||
FROM component
|
||||
WHERE isRequired;
|
||||
|
||||
|
@ -96,20 +96,18 @@ BEGIN
|
|||
|
||||
-- Faltan componentes
|
||||
INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk)
|
||||
SELECT ticketFk, (vComponentCount > nComp) hasComponentLack, saleFk
|
||||
FROM (
|
||||
SELECT COUNT(s.id) nComp, tl.ticketFk, s.id saleFk
|
||||
SELECT t.id, COUNT(c.id) < vRequiredComponent hasComponentLack, s.id
|
||||
FROM tmp.ticket_list tl
|
||||
JOIN sale s ON s.ticketFk = tl.ticketFk
|
||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
||||
LEFT JOIN component c ON c.id = sc.componentFk AND c.isRequired
|
||||
JOIN ticket t ON t.id = tl.ticketFk
|
||||
JOIN sale s ON s.ticketFk = t.id
|
||||
JOIN agencyMode am ON am.id = t.agencyModeFk
|
||||
JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
|
||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
||||
LEFT JOIN component c ON c.id = sc.componentFk
|
||||
AND c.isRequired
|
||||
WHERE dm.code IN ('AGENCY','DELIVERY','PICKUP')
|
||||
AND s.quantity > 0
|
||||
GROUP BY s.id
|
||||
) sub
|
||||
HAVING hasComponentLack;
|
||||
|
||||
-- Cliente congelado
|
||||
|
@ -276,7 +274,7 @@ BEGIN
|
|||
ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk;
|
||||
|
||||
-- Redondeo: Cantidad pedida incorrecta en al grouping de la última compra
|
||||
CALL buyUltimate(vWarehouseFk, vDate);
|
||||
CALL buy_getUltimate(NULL, vWarehouseFk, vDate);
|
||||
INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk)
|
||||
SELECT ticketFk, problem ,saleFk
|
||||
FROM (
|
||||
|
|
|
@ -78,7 +78,7 @@ proc: BEGIN
|
|||
DROP TEMPORARY TABLE tmp.zoneGetLanded;
|
||||
|
||||
-- rellena la tabla buyUltimate con la ultima compra
|
||||
CALL buyUltimate (vWarehouseFk, vShipped);
|
||||
CALL buy_getUltimate(NULL, vWarehouseFk, vShipped);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
|
||||
(PRIMARY KEY (saleFk)) ENGINE = MEMORY
|
||||
|
|
|
@ -53,7 +53,7 @@ BEGIN
|
|||
JOIN ticket t ON t.id = s.ticketFk
|
||||
WHERE s.id = vSaleFk;
|
||||
|
||||
CALL buyUltimate(vWarehouseFk, vDate);
|
||||
CALL buy_getUltimate(vNewItemFk, vWarehouseFk, vDate);
|
||||
|
||||
SELECT `grouping`, groupingMode, packing
|
||||
INTO vGrouping,vGroupingMode,vPacking
|
||||
|
@ -61,6 +61,8 @@ BEGIN
|
|||
JOIN tmp.buyUltimate tmp ON b.id = tmp.buyFk
|
||||
WHERE tmp.itemFk = vNewItemFk AND tmp.WarehouseFk = vWarehouseFk;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.buyUltimate;
|
||||
|
||||
IF vGroupingMode = 'packing' AND vPacking > 0 THEN
|
||||
SET vRoundQuantity = vPacking;
|
||||
END IF;
|
||||
|
|
|
@ -11,24 +11,29 @@ BEGIN
|
|||
*/
|
||||
DECLARE vSaleFk INT;
|
||||
DECLARE vHasProblem INT;
|
||||
DECLARE vIsProblemCalcNeeded BOOL;
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vSaleList CURSOR FOR SELECT saleFk, hasProblem FROM tmp.sale;
|
||||
DECLARE vSaleList CURSOR FOR
|
||||
SELECT saleFk, hasProblem, isProblemCalcNeeded
|
||||
FROM tmp.sale;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
OPEN vSaleList;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH vSaleList INTO vSaleFk, vHasProblem;
|
||||
FETCH vSaleList INTO vSaleFk, vHasProblem, vIsProblemCalcNeeded;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
UPDATE sale
|
||||
SET problem = CONCAT(
|
||||
SET problem = IF (vIsProblemCalcNeeded,
|
||||
CONCAT(
|
||||
IF(vHasProblem,
|
||||
CONCAT(problem, ',', vProblemCode),
|
||||
REPLACE(problem, vProblemCode , '')))
|
||||
REPLACE(problem, vProblemCode , ''))),
|
||||
NULL)
|
||||
WHERE id = vSaleFk;
|
||||
END LOOP;
|
||||
CLOSE vSaleList;
|
||||
|
|
|
@ -14,7 +14,7 @@ BEGIN
|
|||
ENGINE = MEMORY
|
||||
SELECT vSelf saleFk,
|
||||
sale_hasComponentLack(vSelf) hasProblem,
|
||||
ticket_isProblemCalcNeeded(ticketFk) isProblemCalcNeeded
|
||||
(ticket_isProblemCalcNeeded(ticketFk) AND quantity > 0) isProblemCalcNeeded
|
||||
FROM sale
|
||||
WHERE id = vSelf;
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ BEGIN
|
|||
ENGINE = MEMORY
|
||||
SELECT saleFk,
|
||||
sale_hasComponentLack(saleFk) hasProblem,
|
||||
ticket_isProblemCalcNeeded(ticketFk) isProblemCalcNeeded
|
||||
(ticket_isProblemCalcNeeded(ticketFk) AND quantity > 0) isProblemCalcNeeded
|
||||
FROM (
|
||||
SELECT s.id saleFk, s.ticketFk
|
||||
SELECT s.id saleFk, s.ticketFk, s.quantity
|
||||
FROM ticket t
|
||||
JOIN sale s ON s.ticketFk = t.id
|
||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
||||
|
|
|
@ -19,7 +19,7 @@ BEGIN
|
|||
JOIN ticket t ON t.id = s.ticketFk
|
||||
WHERE s.id = vSelf;
|
||||
|
||||
CALL buyUltimate(vWarehouseFk, vShipped);
|
||||
CALL buy_getUltimate(vItemFk, vWarehouseFk, vShipped);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
|
||||
SELECT vSelf saleFk,
|
||||
|
|
|
@ -13,12 +13,6 @@ BEGIN
|
|||
DECLARE vParkingFk INT;
|
||||
DECLARE vLastWeek DATE;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
SET vParkingCode = REPLACE(vParkingCode, ' ', '');
|
||||
|
||||
SELECT id INTO vParkingFk
|
||||
|
@ -29,8 +23,6 @@ BEGIN
|
|||
CALL util.throw('parkingNotExist');
|
||||
END IF;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SET vLastWeek = util.VN_CURDATE() - INTERVAL 1 WEEK;
|
||||
|
||||
-- Comprobamos si es una prep. previa, ticket, colección o shelving
|
||||
|
@ -45,7 +37,5 @@ BEGIN
|
|||
ELSE
|
||||
CALL util.throw('paramNotExist');
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelving_setParking`(IN `vShelvingCode` VARCHAR(8), IN `vParkingFk` INT)
|
||||
proc: BEGIN
|
||||
BEGIN
|
||||
/**
|
||||
* Aparca una matrícula en un parking
|
||||
*
|
||||
* @param vShelvingCode code de la matrícula
|
||||
* @param vParkingFk id del parking
|
||||
*/
|
||||
INSERT INTO vn.shelvingLog (originFk, userFk, action , description,changedModel,changedModelId)
|
||||
INSERT INTO shelvingLog (originFk, userFk, action , description,changedModel,changedModelId)
|
||||
SELECT s.id, account.myUser_getId(), 'update', CONCAT("Cambio parking ",vShelvingCode," de ", p.code," a ", pNew.code),'Shelving',s.id
|
||||
FROM parking p
|
||||
JOIN shelving s ON s.parkingFk = p.id
|
||||
JOIN parking pNew ON pNew.id = vParkingFk
|
||||
WHERE s.code = vShelvingCode COLLATE utf8_unicode_ci;
|
||||
|
||||
UPDATE vn.shelving
|
||||
UPDATE shelving
|
||||
SET parkingFk = vParkingFk,
|
||||
parked = util.VN_NOW(),
|
||||
isPrinted = TRUE
|
||||
|
|
|
@ -36,6 +36,6 @@ BEGIN
|
|||
WHERE warehouse_id = vAuctionWarehouseFk
|
||||
ON DUPLICATE KEY UPDATE quantity = tmp.item.quantity + VALUES(quantity);
|
||||
|
||||
CALL buyUltimate(vAuctionWarehouseFk, vDated);
|
||||
CALL buy_getUltimate(NULL, vAuctionWarehouseFk, vDated);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -1,139 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_statement`(
|
||||
vSupplierFk INT,
|
||||
vCurrencyFk INT,
|
||||
vCompanyFk INT,
|
||||
vOrderBy VARCHAR(15),
|
||||
vIsConciliated BOOL
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Crea un estado de cuenta de proveedores calculando
|
||||
* los saldos en euros y en la moneda especificada.
|
||||
*
|
||||
* @param vSupplierFk Id del proveedor
|
||||
* @param vCurrencyFk Id de la moneda
|
||||
* @param vCompanyFk Id de la empresa
|
||||
* @param vOrderBy Criterio de ordenación
|
||||
* @param vIsConciliated Indica si está conciliado o no
|
||||
* @return tmp.supplierStatement
|
||||
*/
|
||||
SET @euroBalance:= 0;
|
||||
SET @currencyBalance:= 0;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.supplierStatement
|
||||
ENGINE = MEMORY
|
||||
SELECT *,
|
||||
@euroBalance:= ROUND(
|
||||
@euroBalance + IFNULL(paymentEuros, 0) -
|
||||
IFNULL(invoiceEuros, 0), 2
|
||||
) euroBalance,
|
||||
@currencyBalance:= ROUND(
|
||||
@currencyBalance + IFNULL(paymentCurrency, 0) -
|
||||
IFNULL(invoiceCurrency, 0), 2
|
||||
) currencyBalance
|
||||
FROM (
|
||||
SELECT * FROM
|
||||
(
|
||||
SELECT NULL bankFk,
|
||||
ii.companyFk,
|
||||
ii.serial,
|
||||
ii.id,
|
||||
CASE
|
||||
WHEN vOrderBy = 'issued' THEN ii.issued
|
||||
WHEN vOrderBy = 'bookEntried' THEN ii.bookEntried
|
||||
WHEN vOrderBy = 'booked' THEN ii.booked
|
||||
WHEN vOrderBy = 'dueDate' THEN iid.dueDated
|
||||
END dated,
|
||||
CONCAT('S/Fra ', ii.supplierRef) sref,
|
||||
IF(ii.currencyFk > 1,
|
||||
ROUND(SUM(iid.foreignValue) / SUM(iid.amount), 3),
|
||||
NULL
|
||||
) changeValue,
|
||||
CAST(SUM(iid.amount) AS DECIMAL(10,2)) invoiceEuros,
|
||||
CAST(SUM(iid.foreignValue) AS DECIMAL(10,2)) invoiceCurrency,
|
||||
NULL paymentEuros,
|
||||
NULL paymentCurrency,
|
||||
ii.currencyFk,
|
||||
ii.isBooked,
|
||||
c.code,
|
||||
'invoiceIn' statementType
|
||||
FROM invoiceIn ii
|
||||
JOIN invoiceInDueDay iid ON iid.invoiceInFk = ii.id
|
||||
JOIN currency c ON c.id = ii.currencyFk
|
||||
WHERE ii.issued > '2014-12-31'
|
||||
AND ii.supplierFk = vSupplierFk
|
||||
AND vCurrencyFk IN (ii.currencyFk, 0)
|
||||
AND vCompanyFk IN (ii.companyFk, 0)
|
||||
AND (vIsConciliated = ii.isBooked OR NOT vIsConciliated)
|
||||
GROUP BY iid.id
|
||||
UNION ALL
|
||||
SELECT p.bankFk,
|
||||
p.companyFk,
|
||||
NULL,
|
||||
p.id,
|
||||
CASE
|
||||
WHEN vOrderBy = 'issued' THEN p.received
|
||||
WHEN vOrderBy = 'bookEntried' THEN p.received
|
||||
WHEN vOrderBy = 'booked' THEN p.received
|
||||
WHEN vOrderBy = 'dueDate' THEN p.dueDated
|
||||
END,
|
||||
CONCAT(IFNULL(pm.name, ''),
|
||||
IF(pn.concept <> '',
|
||||
CONCAT(' : ', pn.concept),
|
||||
'')
|
||||
),
|
||||
IF(p.currencyFk > 1, p.divisa / p.amount, NULL),
|
||||
NULL,
|
||||
NULL,
|
||||
p.amount,
|
||||
p.divisa,
|
||||
p.currencyFk,
|
||||
p.isConciliated,
|
||||
c.code,
|
||||
'payment'
|
||||
FROM payment p
|
||||
LEFT JOIN currency c ON c.id = p.currencyFk
|
||||
LEFT JOIN accounting a ON a.id = p.bankFk
|
||||
LEFT JOIN payMethod pm ON pm.id = p.payMethodFk
|
||||
LEFT JOIN promissoryNote pn ON pn.paymentFk = p.id
|
||||
WHERE p.received > '2014-12-31'
|
||||
AND p.supplierFk = vSupplierFk
|
||||
AND vCurrencyFk IN (p.currencyFk, 0)
|
||||
AND vCompanyFk IN (p.companyFk, 0)
|
||||
AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated)
|
||||
UNION ALL
|
||||
SELECT NULL,
|
||||
companyFk,
|
||||
NULL,
|
||||
se.id,
|
||||
CASE
|
||||
WHEN vOrderBy = 'issued' THEN se.dated
|
||||
WHEN vOrderBy = 'bookEntried' THEN se.dated
|
||||
WHEN vOrderBy = 'booked' THEN se.dated
|
||||
WHEN vOrderBy = 'dueDate' THEN se.dueDated
|
||||
END,
|
||||
se.description,
|
||||
1,
|
||||
amount,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
currencyFk,
|
||||
isConciliated,
|
||||
c.`code`,
|
||||
'expense'
|
||||
FROM supplierExpense se
|
||||
JOIN currency c ON c.id = se.currencyFk
|
||||
WHERE se.supplierFk = vSupplierFk
|
||||
AND vCurrencyFk IN (se.currencyFk,0)
|
||||
AND vCompanyFk IN (se.companyFk,0)
|
||||
AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated)
|
||||
) sub
|
||||
ORDER BY (dated IS NULL AND NOT isBooked),
|
||||
dated,
|
||||
IF(vOrderBy = 'dueDate', id, NULL)
|
||||
LIMIT 10000000000000000000
|
||||
) t;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,166 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE vn.supplier_statementWithEntries(
|
||||
vSupplierFk INT,
|
||||
vCurrencyFk INT,
|
||||
vCompanyFk INT,
|
||||
vOrderBy VARCHAR(15),
|
||||
vIsConciliated BOOL,
|
||||
vHasEntries BOOL
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Creates a supplier statement, calculating balances in euros and the specified currency.
|
||||
*
|
||||
* @param vSupplierFk Supplier ID
|
||||
* @param vCurrencyFk Currency ID
|
||||
* @param vCompanyFk Company ID
|
||||
* @param vOrderBy Order by criteria
|
||||
* @param vIsConciliated Indicates whether it is reconciled or not
|
||||
* @param vHasEntries Indicates if future entries must be shown
|
||||
* @return tmp.supplierStatement
|
||||
*/
|
||||
DECLARE vBalanceStartingDate DATETIME;
|
||||
|
||||
SET @euroBalance:= 0;
|
||||
SET @currencyBalance:= 0;
|
||||
|
||||
SELECT balanceStartingDate
|
||||
INTO vBalanceStartingDate
|
||||
FROM invoiceInConfig;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.supplierStatement
|
||||
ENGINE = MEMORY
|
||||
SELECT *,
|
||||
@euroBalance:= ROUND(
|
||||
@euroBalance + IFNULL(paymentEuros, 0) -
|
||||
IFNULL(invoiceEuros, 0), 2
|
||||
) euroBalance,
|
||||
@currencyBalance:= ROUND(
|
||||
@currencyBalance + IFNULL(paymentCurrency, 0) -
|
||||
IFNULL(invoiceCurrency, 0), 2
|
||||
) currencyBalance
|
||||
FROM (
|
||||
SELECT NULL bankFk,
|
||||
ii.companyFk,
|
||||
ii.serial,
|
||||
ii.id,
|
||||
CASE
|
||||
WHEN vOrderBy = 'issued' THEN ii.issued
|
||||
WHEN vOrderBy = 'bookEntried' THEN ii.bookEntried
|
||||
WHEN vOrderBy = 'booked' THEN ii.booked
|
||||
WHEN vOrderBy = 'dueDate' THEN iid.dueDated
|
||||
END dated,
|
||||
CONCAT('S/Fra ', ii.supplierRef) sref,
|
||||
IF(ii.currencyFk > 1,
|
||||
ROUND(SUM(iid.foreignValue) / SUM(iid.amount), 3),
|
||||
NULL
|
||||
) changeValue,
|
||||
CAST(SUM(iid.amount) AS DECIMAL(10,2)) invoiceEuros,
|
||||
CAST(SUM(iid.foreignValue) AS DECIMAL(10,2)) invoiceCurrency,
|
||||
NULL paymentEuros,
|
||||
NULL paymentCurrency,
|
||||
ii.currencyFk,
|
||||
ii.isBooked,
|
||||
c.code,
|
||||
'invoiceIn' statementType
|
||||
FROM invoiceIn ii
|
||||
JOIN invoiceInDueDay iid ON iid.invoiceInFk = ii.id
|
||||
JOIN currency c ON c.id = ii.currencyFk
|
||||
WHERE ii.issued >= vBalanceStartingDate
|
||||
AND ii.supplierFk = vSupplierFk
|
||||
AND vCurrencyFk IN (ii.currencyFk, 0)
|
||||
AND vCompanyFk IN (ii.companyFk, 0)
|
||||
AND (vIsConciliated = ii.isBooked OR NOT vIsConciliated)
|
||||
GROUP BY iid.id
|
||||
UNION ALL
|
||||
SELECT p.bankFk,
|
||||
p.companyFk,
|
||||
NULL,
|
||||
p.id,
|
||||
CASE
|
||||
WHEN vOrderBy = 'issued' THEN p.received
|
||||
WHEN vOrderBy = 'bookEntried' THEN p.received
|
||||
WHEN vOrderBy = 'booked' THEN p.received
|
||||
WHEN vOrderBy = 'dueDate' THEN p.dueDated
|
||||
END,
|
||||
CONCAT(IFNULL(pm.name, ''),
|
||||
IF(pn.concept <> '',
|
||||
CONCAT(' : ', pn.concept),
|
||||
'')
|
||||
),
|
||||
IF(p.currencyFk > 1, p.divisa / p.amount, NULL),
|
||||
NULL,
|
||||
NULL,
|
||||
p.amount,
|
||||
p.divisa,
|
||||
p.currencyFk,
|
||||
p.isConciliated,
|
||||
c.code,
|
||||
'payment'
|
||||
FROM payment p
|
||||
LEFT JOIN currency c ON c.id = p.currencyFk
|
||||
LEFT JOIN accounting a ON a.id = p.bankFk
|
||||
LEFT JOIN payMethod pm ON pm.id = p.payMethodFk
|
||||
LEFT JOIN promissoryNote pn ON pn.paymentFk = p.id
|
||||
WHERE p.received >= vBalanceStartingDate
|
||||
AND p.supplierFk = vSupplierFk
|
||||
AND vCurrencyFk IN (p.currencyFk, 0)
|
||||
AND vCompanyFk IN (p.companyFk, 0)
|
||||
AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated)
|
||||
UNION ALL
|
||||
SELECT NULL,
|
||||
companyFk,
|
||||
NULL,
|
||||
se.id,
|
||||
CASE
|
||||
WHEN vOrderBy = 'issued' THEN se.dated
|
||||
WHEN vOrderBy = 'bookEntried' THEN se.dated
|
||||
WHEN vOrderBy = 'booked' THEN se.dated
|
||||
WHEN vOrderBy = 'dueDate' THEN se.dueDated
|
||||
END,
|
||||
se.description,
|
||||
1,
|
||||
amount,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
currencyFk,
|
||||
isConciliated,
|
||||
c.`code`,
|
||||
'expense'
|
||||
FROM supplierExpense se
|
||||
JOIN currency c ON c.id = se.currencyFk
|
||||
WHERE se.supplierFk = vSupplierFk
|
||||
AND vCurrencyFk IN (se.currencyFk,0)
|
||||
AND vCompanyFk IN (se.companyFk,0)
|
||||
AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated)
|
||||
UNION ALL
|
||||
SELECT NULL bankFk,
|
||||
e.companyFk,
|
||||
'E' serial,
|
||||
e.invoiceNumber id,
|
||||
tr.landed dated,
|
||||
CONCAT('Ent. ',e.id) sref,
|
||||
1 / ((e.commission/100)+1) changeValue,
|
||||
e.invoiceAmount * (1 + (e.commission/100)),
|
||||
e.invoiceAmount,
|
||||
NULL,
|
||||
NULL,
|
||||
e.currencyFk,
|
||||
FALSE isBooked,
|
||||
c.code,
|
||||
'order'
|
||||
FROM entry e
|
||||
JOIN travel tr ON tr.id = e.travelFk
|
||||
JOIN currency c ON c.id = e.currencyFk
|
||||
WHERE e.supplierFk = vSupplierFk
|
||||
AND tr.landed >= CURDATE()
|
||||
AND e.invoiceInFk IS NULL
|
||||
AND vHasEntries
|
||||
ORDER BY (dated IS NULL AND NOT isBooked),
|
||||
dated,
|
||||
IF(vOrderBy = 'dueDate', id, NULL)
|
||||
LIMIT 10000000000000000000
|
||||
) t;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -4,7 +4,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_cloneWeekly`
|
|||
vDateTo DATE
|
||||
)
|
||||
BEGIN
|
||||
DECLARE vIsDone BOOL;
|
||||
DECLARE vLanding DATE;
|
||||
DECLARE vShipment DATE;
|
||||
DECLARE vWarehouseFk INT;
|
||||
|
@ -15,10 +14,17 @@ BEGIN
|
|||
DECLARE vAgencyModeFk INT;
|
||||
DECLARE vNewTicket INT;
|
||||
DECLARE vYear INT;
|
||||
DECLARE vSalesPersonFK INT;
|
||||
DECLARE vItemPicker INT;
|
||||
DECLARE vObservationSalesPersonFk INT
|
||||
DEFAULT (SELECT id FROM observationType WHERE code = 'salesPerson');
|
||||
DECLARE vObservationItemPickerFk INT
|
||||
DEFAULT (SELECT id FROM observationType WHERE code = 'itemPicker');
|
||||
DECLARE vEmail VARCHAR(255);
|
||||
DECLARE vIsDuplicateMail BOOL;
|
||||
DECLARE vSubject VARCHAR(100);
|
||||
DECLARE vMessage TEXT;
|
||||
DECLARE vDone BOOL;
|
||||
|
||||
DECLARE rsTicket CURSOR FOR
|
||||
DECLARE vTickets CURSOR FOR
|
||||
SELECT tt.ticketFk,
|
||||
t.clientFk,
|
||||
t.warehouseFk,
|
||||
|
@ -31,20 +37,14 @@ BEGIN
|
|||
JOIN tmp.time ti
|
||||
WHERE WEEKDAY(ti.dated) = tt.weekDay;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
CALL `util`.`time_generate`(vDateFrom, vDateTo);
|
||||
|
||||
OPEN rsTicket;
|
||||
myLoop: LOOP
|
||||
BEGIN
|
||||
DECLARE vSalesPersonEmail VARCHAR(150);
|
||||
DECLARE vIsDuplicateMail BOOL;
|
||||
DECLARE vSubject VARCHAR(150);
|
||||
DECLARE vMessage TEXT;
|
||||
|
||||
SET vIsDone = FALSE;
|
||||
FETCH rsTicket INTO
|
||||
OPEN vTickets;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH vTickets INTO
|
||||
vTicketFk,
|
||||
vClientFk,
|
||||
vWarehouseFk,
|
||||
|
@ -53,11 +53,11 @@ BEGIN
|
|||
vAgencyModeFk,
|
||||
vShipment;
|
||||
|
||||
IF vIsDone THEN
|
||||
LEAVE myLoop;
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
-- busca si el ticket ya ha sido clonado
|
||||
-- Busca si el ticket ya ha sido clonado
|
||||
IF EXISTS (SELECT TRUE FROM ticket tOrig
|
||||
JOIN sale saleOrig ON tOrig.id = saleOrig.ticketFk
|
||||
JOIN saleCloned sc ON sc.saleOriginalFk = saleOrig.id
|
||||
|
@ -67,7 +67,7 @@ BEGIN
|
|||
AND tClon.isDeleted = FALSE
|
||||
AND DATE(tClon.shipped) = vShipment)
|
||||
THEN
|
||||
ITERATE myLoop;
|
||||
ITERATE l;
|
||||
END IF;
|
||||
|
||||
IF vAgencyModeFk IS NULL THEN
|
||||
|
@ -107,15 +107,15 @@ BEGIN
|
|||
priceFixed,
|
||||
isPriceFixed)
|
||||
SELECT vNewTicket,
|
||||
saleOrig.itemFk,
|
||||
saleOrig.concept,
|
||||
saleOrig.quantity,
|
||||
saleOrig.price,
|
||||
saleOrig.discount,
|
||||
saleOrig.priceFixed,
|
||||
saleOrig.isPriceFixed
|
||||
FROM sale saleOrig
|
||||
WHERE saleOrig.ticketFk = vTicketFk;
|
||||
itemFk,
|
||||
concept,
|
||||
quantity,
|
||||
price,
|
||||
discount,
|
||||
priceFixed,
|
||||
isPriceFixed
|
||||
FROM sale
|
||||
WHERE ticketFk = vTicketFk;
|
||||
|
||||
INSERT IGNORE INTO saleCloned(saleOriginalFk, saleClonedFk)
|
||||
SELECT saleOriginal.id, saleClon.id
|
||||
|
@ -154,21 +154,13 @@ BEGIN
|
|||
FROM ticketRequest
|
||||
WHERE ticketFk = vTicketFk;
|
||||
|
||||
SELECT id INTO vSalesPersonFK
|
||||
FROM observationType
|
||||
WHERE code = 'salesPerson';
|
||||
|
||||
SELECT id INTO vItemPicker
|
||||
FROM observationType
|
||||
WHERE code = 'itemPicker';
|
||||
|
||||
INSERT INTO ticketObservation(
|
||||
ticketFk,
|
||||
observationTypeFk,
|
||||
description)
|
||||
VALUES(
|
||||
vNewTicket,
|
||||
vSalesPersonFK,
|
||||
vObservationSalesPersonFk,
|
||||
CONCAT('turno desde ticket: ',vTicketFk))
|
||||
ON DUPLICATE KEY UPDATE description =
|
||||
CONCAT(ticketObservation.description,VALUES(description),' ');
|
||||
|
@ -178,16 +170,17 @@ BEGIN
|
|||
description)
|
||||
VALUES(
|
||||
vNewTicket,
|
||||
vItemPicker,
|
||||
vObservationItemPickerFk,
|
||||
'ATENCION: Contiene lineas de TURNO')
|
||||
ON DUPLICATE KEY UPDATE description =
|
||||
CONCAT(ticketObservation.description,VALUES(description),' ');
|
||||
|
||||
IF (vLanding IS NULL) THEN
|
||||
|
||||
SELECT e.email INTO vSalesPersonEmail
|
||||
IF vLanding IS NULL THEN
|
||||
SELECT IFNULL(d.notificationEmail, e.email) INTO vEmail
|
||||
FROM client c
|
||||
JOIN account.emailUser e ON e.userFk = c.salesPersonFk
|
||||
LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk
|
||||
LEFT JOIN department d ON d.id = wd.departmentFk
|
||||
WHERE c.id = vClientFk;
|
||||
|
||||
SET vSubject = CONCAT('Turnos - No se ha podido clonar correctamente el ticket ',
|
||||
|
@ -199,20 +192,21 @@ BEGIN
|
|||
|
||||
SELECT COUNT(*) INTO vIsDuplicateMail
|
||||
FROM mail
|
||||
WHERE receiver = vSalesPersonEmail
|
||||
WHERE receiver = vEmail
|
||||
AND subject = vSubject;
|
||||
|
||||
IF NOT vIsDuplicateMail THEN
|
||||
CALL mail_insert(vSalesPersonEmail, NULL, vSubject, vMessage);
|
||||
CALL mail_insert(vEmail, NULL, vSubject, vMessage);
|
||||
END IF;
|
||||
CALL ticket_setState(vNewTicket, 'FIXING');
|
||||
ELSE
|
||||
CALL ticketCalculateClon(vNewTicket, vTicketFk);
|
||||
END IF;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
CLOSE rsTicket;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.time, tmp.zoneGetLanded;
|
||||
CLOSE vTickets;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS
|
||||
tmp.time,
|
||||
tmp.zoneGetLanded;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -90,7 +90,7 @@ BEGIN
|
|||
IF vIsTaxDataChecked THEN
|
||||
CALL invoiceOut_newFromClient(
|
||||
vClientFk,
|
||||
(SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')),
|
||||
(SELECT invoiceSerial(vClientFk, vCompanyFk, 'multiple')),
|
||||
vShipped,
|
||||
vCompanyFk,
|
||||
NULL,
|
||||
|
|
|
@ -56,13 +56,12 @@ BEGIN
|
|||
FROM zone
|
||||
WHERE id = vZoneFk;
|
||||
|
||||
CALL buyUltimate(vWarehouseFk, vShipped);
|
||||
CALL buy_getUltimate(NULL, vWarehouseFk, vShipped);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot;
|
||||
CREATE TEMPORARY TABLE tmp.ticketLot ENGINE = MEMORY (
|
||||
SELECT
|
||||
vWarehouseFk AS warehouseFk,
|
||||
NULL AS available,
|
||||
SELECT vWarehouseFk warehouseFk,
|
||||
NULL available,
|
||||
s.itemFk,
|
||||
bu.buyFk,
|
||||
vZoneFk zoneFk
|
||||
|
|
|
@ -14,16 +14,28 @@ BEGIN
|
|||
DECLARE vTicketFk INT;
|
||||
|
||||
DECLARE cTickets CURSOR FOR
|
||||
SELECT id FROM ticket
|
||||
WHERE refFk IS NULL
|
||||
AND ((vScope = 'client' AND clientFk = vId)
|
||||
OR (vScope = 'address' AND addressFk = vId));
|
||||
SELECT DISTINCT t.id
|
||||
FROM ticket t
|
||||
LEFT JOIN tItems ti ON ti.id = t.id
|
||||
WHERE t.refFk IS NULL
|
||||
AND ((vScope = 'client' AND t.clientFk = vId)
|
||||
OR (vScope = 'address' AND t.addressFk = vId)
|
||||
OR (vScope = 'item' AND ti.id)
|
||||
);
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tItems
|
||||
(PRIMARY KEY (id))
|
||||
ENGINE = MEMORY
|
||||
SELECT DISTINCT t.id
|
||||
FROM ticket t
|
||||
JOIN sale s ON s.ticketFk = t.id
|
||||
JOIN itemTaxCountry itc ON itc.itemFk = s.itemFk
|
||||
WHERE t.refFk IS NULL
|
||||
AND (vScope = 'item' AND itc.itemFk = vId);
|
||||
|
||||
OPEN cTickets;
|
||||
|
||||
myLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cTickets INTO vTicketFk;
|
||||
|
@ -34,7 +46,8 @@ BEGIN
|
|||
|
||||
CALL ticket_recalc(vTicketFk, NULL);
|
||||
END LOOP;
|
||||
|
||||
CLOSE cTickets;
|
||||
|
||||
DROP TEMPORARY TABLE tItems;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -21,11 +21,6 @@ BEGIN
|
|||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
INSERT INTO vn.ticketParking(ticketFk, parkingFk)
|
||||
SELECT IFNULL(tc2.ticketFk, t.id), vParkingFk
|
||||
FROM ticket t
|
||||
|
|
|
@ -12,24 +12,28 @@ BEGIN
|
|||
*/
|
||||
DECLARE vTicketFk INT;
|
||||
DECLARE vHasProblem INT;
|
||||
DECLARE vIsProblemCalcNeeded BOOL;
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vTicketList CURSOR FOR SELECT ticketFk, hasProblem FROM tmp.ticket;
|
||||
DECLARE vTicketList CURSOR FOR
|
||||
SELECT ticketFk, hasProblem, isProblemCalcNeeded
|
||||
FROM tmp.ticket;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
OPEN vTicketList;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH vTicketList INTO vTicketFk, vHasProblem;
|
||||
FETCH vTicketList INTO vTicketFk, vHasProblem, vIsProblemCalcNeeded;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
UPDATE ticket
|
||||
SET problem = CONCAT(
|
||||
IF(vHasProblem,
|
||||
SET problem = IF(vIsProblemCalcNeeded,
|
||||
CONCAT(IF(vHasProblem,
|
||||
CONCAT(problem, ',', vProblemCode),
|
||||
REPLACE(problem, vProblemCode , '')))
|
||||
REPLACE(problem, vProblemCode , ''))),
|
||||
NULL)
|
||||
WHERE id = vTicketFk;
|
||||
END LOOP;
|
||||
CLOSE vTicketList;
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRiskByClient`(
|
||||
vClientFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Updates future ticket risk for a client.
|
||||
*
|
||||
* @param vClientFk Id client
|
||||
*/
|
||||
DECLARE vDone INT DEFAULT FALSE;
|
||||
DECLARE vTicketFk INT;
|
||||
DECLARE vTickets CURSOR FOR
|
||||
SELECT id
|
||||
FROM ticket
|
||||
WHERE clientFk = vClientFk
|
||||
AND shipped >= util.VN_CURDATE()
|
||||
AND refFk IS NULL;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
OPEN vTickets;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH vTickets INTO vTicketFk;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
CALL vn.ticket_setProblemRisk(vTicketFk);
|
||||
END LOOP;
|
||||
CLOSE vTickets;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -16,7 +16,7 @@ BEGIN
|
|||
FROM ticket
|
||||
WHERE id = vSelf;
|
||||
|
||||
CALL buyUltimate(vWarehouseFk, vDated);
|
||||
CALL buy_getUltimate(NULL, vWarehouseFk, vDated);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
|
||||
(INDEX(saleFk, isProblemCalcNeeded))
|
||||
|
|
|
@ -1,66 +1,61 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setRisk`(
|
||||
vClientFk INT)
|
||||
vClientFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Update the risk for a client with pending tickets
|
||||
* Update the risk for a client with pending tickets.
|
||||
*
|
||||
* @param vClientFk Id cliente
|
||||
*/
|
||||
DECLARE vHasDebt BOOL;
|
||||
DECLARE vStarted DATETIME;
|
||||
|
||||
SELECT COUNT(*) INTO vHasDebt
|
||||
FROM `client`
|
||||
WHERE id = vClientFk
|
||||
AND typeFk = 'normal';
|
||||
|
||||
IF vHasDebt THEN
|
||||
|
||||
SELECT util.VN_CURDATE() - INTERVAL riskScope MONTH INTO vStarted
|
||||
FROM clientConfig;
|
||||
|
||||
IF (SELECT COUNT(*) FROM client WHERE id = vClientFk AND typeFk = 'normal') THEN
|
||||
CREATE OR REPLACE TEMPORARY TABLE tTicketRisk
|
||||
(KEY (ticketFk))
|
||||
(PRIMARY KEY (ticketFk))
|
||||
ENGINE = MEMORY
|
||||
WITH ticket AS (
|
||||
SELECT id ticketFk,
|
||||
companyFk,
|
||||
DATE(shipped) dated,
|
||||
totalWithVat,
|
||||
ticket_isProblemCalcNeeded(id) isProblemCalcNeeded
|
||||
FROM vn.ticket
|
||||
WHERE clientFk = vClientFk
|
||||
AND refFk IS NULL
|
||||
AND NOT isDeleted
|
||||
AND IFNULL(totalWithVat, 0) <> 0
|
||||
AND shipped > vStarted
|
||||
), balance AS(
|
||||
SELECT SUM(amount)amount, companyFk
|
||||
FROM (
|
||||
SELECT amount, companyFk
|
||||
FROM vn.clientRisk
|
||||
WHERE clientFk = vClientFk
|
||||
UNION ALL
|
||||
SELECT -(SUM(amount) / 100) amount, tm.companyFk
|
||||
FROM hedera.tpvTransaction t
|
||||
JOIN hedera.tpvMerchant tm ON t.id = t.merchantFk
|
||||
WHERE clientFk = vClientFk
|
||||
AND receiptFk IS NULL
|
||||
AND status = 'ok'
|
||||
) sub
|
||||
WHERE companyFk
|
||||
GROUP BY companyFk
|
||||
SELECT t.id ticketFk,
|
||||
t.companyFk,
|
||||
DATE(t.shipped) dated,
|
||||
t.totalWithVat,
|
||||
ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
|
||||
FROM vn.ticket t
|
||||
JOIN vn.clientConfig cc
|
||||
WHERE t.clientFk = vClientFk
|
||||
AND t.refFk IS NULL
|
||||
AND NOT t.isDeleted
|
||||
AND IFNULL(t.totalWithVat, 0) <> 0
|
||||
AND t.shipped > (util.VN_CURDATE() - INTERVAL cc.riskScope MONTH)
|
||||
), uninvoiced AS (
|
||||
SELECT companyFk, dated, SUM(totalWithVat) amount
|
||||
FROM ticket
|
||||
GROUP BY companyFk, dated
|
||||
), companies AS (
|
||||
SELECT DISTINCT companyFk FROM uninvoiced
|
||||
), balance AS (
|
||||
SELECT SUM(IFNULL(amount, 0))amount, companyFk
|
||||
FROM (
|
||||
SELECT cr.amount, c.companyFk
|
||||
FROM companies c
|
||||
LEFT JOIN vn.clientRisk cr ON cr.companyFk = c.companyFk
|
||||
AND cr.clientFk = vClientFk
|
||||
UNION ALL
|
||||
SELECT -(SUM(t.amount) / 100) amount, c.companyFk
|
||||
FROM companies c
|
||||
LEFT JOIN hedera.tpvMerchant tm ON tm.companyFk = c.companyFk
|
||||
LEFT JOIN hedera.tpvTransaction t ON t.merchantFk = tm.id
|
||||
AND t.clientFk = vClientFk
|
||||
AND t.receiptFk IS NULL
|
||||
AND t.`status` = 'ok'
|
||||
) sub
|
||||
WHERE companyFk
|
||||
GROUP BY companyFk
|
||||
), receipt AS (
|
||||
SELECT companyFk, DATE(payed) dated, SUM(amountPaid) amount
|
||||
FROM vn.receipt
|
||||
WHERE clientFk = vClientFk
|
||||
AND payed > util.VN_CURDATE()
|
||||
GROUP BY companyFk, DATE(payed)
|
||||
SELECT r.companyFk, DATE(r.payed) dated, SUM(r.amountPaid) amount
|
||||
FROM vn.receipt r
|
||||
JOIN companies c ON c.companyFk = r.companyFk
|
||||
WHERE r.clientFk = vClientFk
|
||||
AND r.payed > util.VN_CURDATE()
|
||||
GROUP BY r.companyFk, DATE(r.payed)
|
||||
), risk AS (
|
||||
SELECT b.companyFk,
|
||||
ui.dated,
|
||||
|
@ -69,24 +64,18 @@ BEGIN
|
|||
SUM(IFNULL(r.amount, 0)) amount
|
||||
FROM balance b
|
||||
JOIN uninvoiced ui ON ui.companyFk = b.companyFk
|
||||
LEFT JOIN receipt r ON r.dated > ui.dated AND r.companyFk = ui.companyFk
|
||||
LEFT JOIN receipt r ON r.dated > ui.dated
|
||||
AND r.companyFk = ui.companyFk
|
||||
GROUP BY b.companyFk, ui.dated
|
||||
)
|
||||
SELECT ti.ticketFk, r.amount, ti.isProblemCalcNeeded
|
||||
FROM ticket ti
|
||||
JOIN risk r ON r.dated = ti.dated AND r.companyFk = ti.companyFk;
|
||||
JOIN risk r ON r.dated = ti.dated
|
||||
AND r.companyFk = ti.companyFk;
|
||||
|
||||
UPDATE ticket t
|
||||
JOIN tTicketRisk tr ON tr.ticketFk = t.id
|
||||
SET t.risk = tr.amount
|
||||
WHERE tr.isProblemCalcNeeded
|
||||
ORDER BY t.id;
|
||||
|
||||
UPDATE ticket t
|
||||
JOIN tTicketRisk tr ON tr.ticketFk = t.id
|
||||
SET t.risk = NULL
|
||||
WHERE tr.isProblemCalcNeeded
|
||||
ORDER BY t.id;
|
||||
SET t.risk = IF(tr.isProblemCalcNeeded, tr.amount, NULL);
|
||||
|
||||
DROP TEMPORARY TABLE tTicketRisk;
|
||||
END IF;
|
||||
|
|
|
@ -1,40 +1,41 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getAddresses`(
|
||||
vSelf INT,
|
||||
vLanded DATE
|
||||
vShipped DATE,
|
||||
vDepartmentFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve un listado de todos los clientes activos
|
||||
* con consignatarios a los que se les puede
|
||||
* vender producto para esa zona y no tiene un ticket
|
||||
* para ese día.
|
||||
* vender producto para esa zona.
|
||||
*
|
||||
* @param vSelf Id de zona
|
||||
* @param vDated Fecha de entrega
|
||||
* @param vShipped Fecha de envio
|
||||
* @param vDepartmentFk Id de departamento
|
||||
* @return Un select
|
||||
*/
|
||||
CALL zone_getPostalCode(vSelf);
|
||||
|
||||
WITH notHasTicket AS (
|
||||
SELECT id
|
||||
FROM vn.client
|
||||
WHERE id NOT IN (
|
||||
WITH clientWithTicket AS (
|
||||
SELECT clientFk
|
||||
FROM vn.ticket
|
||||
WHERE landed BETWEEN vLanded AND util.dayEnd(vLanded)
|
||||
WHERE shipped BETWEEN vShipped AND util.dayEnd(vShipped)
|
||||
)
|
||||
)
|
||||
SELECT c.id clientFk,
|
||||
SELECT c.id,
|
||||
c.name,
|
||||
c.phone,
|
||||
bt.description,
|
||||
c.salesPersonFk,
|
||||
u.name username,
|
||||
aai.invoiced,
|
||||
cnb.lastShipped
|
||||
cnb.lastShipped,
|
||||
cwt.clientFk
|
||||
FROM vn.client c
|
||||
JOIN notHasTicket ON notHasTicket.id = c.id
|
||||
JOIN vn.worker w ON w.id = c.salesPersonFk
|
||||
JOIN vn.workerDepartment wd ON wd.workerFk = w.id
|
||||
JOIN vn.department d ON d.id = wd.departmentFk
|
||||
LEFT JOIN clientWithTicket cwt ON cwt.clientFk = c.id
|
||||
LEFT JOIN account.`user` u ON u.id = c.salesPersonFk
|
||||
JOIN vn.`address` a ON a.clientFk = c.id
|
||||
JOIN vn.postCode pc ON pc.code = a.postalCode
|
||||
|
@ -49,6 +50,7 @@ BEGIN
|
|||
AND c.isActive
|
||||
AND ct.code = 'normal'
|
||||
AND bt.code <> 'worker'
|
||||
AND (d.id = vDepartmentFk OR NOT vDepartmentFk)
|
||||
GROUP BY c.id;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.zoneNodes;
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`host_beforeInsert`
|
||||
BEFORE INSERT ON `host`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue