diff --git a/CHANGELOG.md b/CHANGELOG.md
index f59a3d4c6..74109c7c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,171 @@
+# Version 24.36 - 2024-09-03
+
+### Added 🆕
+
+- chore: refs #7524 WIP limit call by:jorgep
+- chore: refs #7524 modify ormConfig table col (origin/7524-warmfix-modifyColumn) by:jorgep
+- feat(update-user): refs #7848 add twoFactor by:alexm
+- feat: #3199 Requested changes by:guillermo
+- feat: refs #3199 Added more scopes ticket_recalcByScope by:guillermo
+- feat: refs #3199 Added one more scope ticket_recalcByScope by:guillermo
+- feat: refs #3199 Created ticket_recalcItemTaxCountryByScope by:guillermo
+- feat: refs #3199 Requested changes by:guillermo
+- feat: refs #7346 add multiple feature by:jgallego
+- feat: refs #7346 backTest checks new implementation by:jgallego
+- feat: refs #7346 mas intuitivo by:jgallego
+- feat: refs #7514 Changes to put srt log (origin/7514-srtLog) by:guillermo
+- feat: refs #7524 add default limit (origin/7524-limitSelect) by:jorgep
+- feat: refs #7524 add mock limit on find query by:jorgep
+- feat: refs #7524 wip remote hooks by:jorgep
+- feat: refs #7562 Requested changes by:guillermo
+- feat: refs #7567 Changed time to call event by:guillermo
+- feat: refs #7567 Requested changes by:guillermo
+- feat: refs #7710 pr revision by:jgallego
+- feat: refs #7710 test fixed (origin/7710-cloneWithTicketPackaging, 7710-cloneWithTicketPackaging) by:jgallego
+- feat: refs #7712 Fix by:guillermo
+- feat: refs #7712 Unify by:guillermo
+- feat: refs #7712 sizeLimit (origin/7712-sizeLimit) by:guillermo
+- feat: refs #7758 Add code mandateType and accountDetailType by:ivanm
+- feat: refs #7758 Modify code lowerCamelCase and UNIQUE by:ivanm
+- feat: refs #7758 accountDetailType fix deploy error by:ivanm
+- feat: refs #7784 Changes in entry-order-pdf by:guillermo
+- feat: refs #7784 Requested changes by:guillermo
+- feat: refs #7799 Added Fk in vn.item.itemPackingTypeFk by:guillermo
+- feat: refs #7800 Added company Fk by:guillermo
+- feat: refs #7842 Added editorFk in vn.host by:guillermo
+- feat: refs #7860 Update new packagings (origin/7860-newPackaging) by:guillermo
+- feat: refs #7862 roadmap new fields by:ivanm
+- feat: refs #7882 Added quadMindsConfig table by:guillermo
+
+### Changed 📦
+
+- refactor: refs #7567 Fix and improvement by:guillermo
+- refactor: refs #7567 Minor change by:guillermo
+- refactor: refs #7756 Fix tests by:guillermo
+- refactor: refs #7798 Drop bi.Greuges_comercial_detail by:guillermo
+- refactor: refs #7848 adapt to lilium by:alexm
+
+### Fixed 🛠️
+
+- feat: refs #7710 test fixed (origin/7710-cloneWithTicketPackaging, 7710-cloneWithTicketPackaging) by:jgallego
+- feat: refs #7758 accountDetailType fix deploy error by:ivanm
+- fix(salix): #7283 ItemFixedPrice duplicated (origin/7283_itemFixedPrice_duplicated) by:Javier Segarra
+- fix: refs #7346 minor error (origin/7346, 7346) by:jgallego
+- fix: refs #7355 remove and tests accounts (origin/7355-accountMigration2) by:carlossa
+- fix: refs #7355 remove and tests accounts by:carlossa
+- fix: refs #7524 default limit select by:jorgep
+- fix: refs #7756 Foreign keys invoiceOut (origin/7756-fixRefFk) by:guillermo
+- fix: refs #7756 id 0 by:guillermo
+- fix: refs #7800 tpvMerchantEnable PRIMARY KEY (origin/7800-tpvMerchantEnable) by:guillermo
+- fix: refs #7800 tpvMerchantEnable PRIMARY KEY by:guillermo
+- fix: refs #7916 itemShelving_transfer (origin/test, test) by:guillermo
+- fix: refs #pako Deleted duplicated version by:guillermo
+
+# Version 24.34 - 2024-08-20
+
+### Added 🆕
+
+- #6900 feat: clear empty by:jorgep
+- #6900 feat: empty commit by:jorgep
+- chore: refs #6900 beautify code by:jorgep
+- chore: refs #6989 add config model by:jorgep
+- feat workerActivity refs #6078 by:sergiodt
+- feat: #6453 Refactor (origin/6453-orderConfirm) by:guillermo
+- feat: #6453 Rollback always split by itemPackingType by:guillermo
+- feat: deleted worker module code & redirect to Lilium by:Jon
+- feat: refs #6453 Added new ticket search by:guillermo
+- feat: refs #6453 Fixes by:guillermo
+- feat: refs #6453 Minor changes by:guillermo
+- feat: refs #6453 Requested changes by:guillermo
+- feat: refs #6900 drop section by:jorgep
+- feat: refs #7283 order by desc date by:jorgep
+- feat: refs #7323 add locale by:jorgep
+- feat: refs #7323 redirect to lilium by:jorgep
+- feat: refs #7646 delete scannableCodeType by:robert
+- feat: refs #7713 Created ACLLog by:guillermo
+- feat: refs #7774 (origin/7774-ticket_cloneWeekly) by:robert
+- feat: refs #7774 #7774 Changes ticket_cloneWeekly by:guillermo
+- feat: refs #7774 ticket_cloneWeekly by:robert
+
+### Changed 📦
+
+- refactor: refs #6453 Major changes by:guillermo
+- refactor: refs #6453 Minor changes by:guillermo
+- refactor: refs #6453 order_confirmWithUser by:guillermo
+- refactor: refs #7646 #7646 Deleted scannable* variables productionConfig by:guillermo
+- refactor: refs #7820 Deprecated silexACL by:guillermo
+
+### Fixed 🛠️
+
+- #6900 fix: #6900 rectificative filter by:jorgep
+- #6900 fix: empty commit by:jorgep
+- fix(orders_filter): add sourceApp accepts by:alexm
+- fix: refs #6130 commit lint by:pablone
+- fix: refs #6453 order_confirmWithUser by:guillermo
+- fix: refs #7283 sql by:jorgep
+- fix: refs #7713 ACL Log by:guillermo
+- test: fix claim descriptor redirect to lilium by:alexm
+- test: fix ticket redirect to lilium by:alexm
+- test: fix ticket sale e2e by:alexm
+
+# 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 🆕
diff --git a/back/methods/collection/assign.js b/back/methods/collection/assign.js
index 0484eb5a8..f246043b8 100644
--- a/back/methods/collection/assign.js
+++ b/back/methods/collection/assign.js
@@ -20,9 +20,14 @@ module.exports = Self => {
if (typeof options == 'object')
Object.assign(myOptions, options);
- const [, , [{collectionFk}]] =
- await Self.rawSql('CALL vn.collection_assign(?, @vCollectionFk); SELECT @vCollectionFk collectionFk',
- [userId], myOptions);
+ const randStr = Math.random().toString(36).substring(3);
+ const result = await Self.rawSql(`
+ CALL vn.collection_assign(?, @vCollectionFk);
+ SELECT @vCollectionFk ?
+ `, [userId, randStr], myOptions);
+
+ // 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);
diff --git a/back/methods/collection/getTickets.js b/back/methods/collection/getTickets.js
index b79dbc93a..2a2b67524 100644
--- a/back/methods/collection/getTickets.js
+++ b/back/methods/collection/getTickets.js
@@ -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
diff --git a/back/methods/collection/spec/assignCollection.spec.js b/back/methods/collection/spec/assignCollection.spec.js
index e8f3882a3..7cdcd6cb6 100644
--- a/back/methods/collection/spec/assignCollection.spec.js
+++ b/back/methods/collection/spec/assignCollection.spec.js
@@ -15,9 +15,7 @@ describe('ticket assignCollection()', () => {
args: {}
};
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: ctx.req
- });
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({active: ctx.req});
options = {transaction: tx};
tx = await models.Sale.beginTransaction({});
@@ -25,7 +23,7 @@ describe('ticket assignCollection()', () => {
});
afterEach(async() => {
- await tx.rollback();
+ if (tx) await tx.rollback();
});
it('should throw an error when there is not picking tickets', async() => {
diff --git a/back/methods/edi/updateData.js b/back/methods/edi/updateData.js
index 6bebad1e4..d8395cbc4 100644
--- a/back/methods/edi/updateData.js
+++ b/back/methods/edi/updateData.js
@@ -24,7 +24,7 @@ module.exports = Self => {
try {
const options = {transaction: tx, userId: ctx.req.accessToken.userId};
- const files = await Self.rawSql('SELECT name, checksum, keyValue FROM edi.fileConfig', null, options);
+ const files = await Self.rawSql('SELECT name, checksum, keyValue FROM edi.fileMultiConfig', null, options);
const updatableFiles = [];
for (const file of files) {
@@ -54,7 +54,7 @@ module.exports = Self => {
const tables = await Self.rawSql(`
SELECT fileName, toTable, file
- FROM edi.tableConfig
+ FROM edi.tableMultiConfig
WHERE file IN (?)`, [fileNames], options);
for (const table of tables) {
@@ -85,9 +85,9 @@ module.exports = Self => {
for (const file of updatableFiles) {
console.log(`Updating file ${file.name} checksum...`);
await Self.rawSql(`
- UPDATE edi.fileConfig
- SET checksum = ?
- WHERE name = ?`,
+ UPDATE edi.fileMultiConfig
+ SET checksum = ?
+ WHERE name = ?`,
[file.checksum, file.name], options);
}
@@ -228,7 +228,7 @@ module.exports = Self => {
await Self.rawSql(sqlTemplate, [filePath], options);
await Self.rawSql(`
- UPDATE edi.tableConfig
+ UPDATE edi.tableMultiConfig
SET updated = ?
WHERE fileName = ?
`, [Date.vnNew(), baseName], options);
diff --git a/back/methods/mrw-config/createShipment.ejs b/back/methods/mrw-config/createShipment.ejs
index 65326112b..52ccc859c 100644
--- a/back/methods/mrw-config/createShipment.ejs
+++ b/back/methods/mrw-config/createShipment.ejs
@@ -25,7 +25,7 @@
<%= expeditionData.fi %>
<%= expeditionData.clientName %>
- <%= expeditionData.phone %>
+ <%= expeditionData.mobile %>
<%= expeditionData.deliveryObservation %>
diff --git a/back/methods/mrw-config/createShipment.js b/back/methods/mrw-config/createShipment.js
index 900e1fc0f..2ebb80774 100644
--- a/back/methods/mrw-config/createShipment.js
+++ b/back/methods/mrw-config/createShipment.js
@@ -47,13 +47,13 @@ module.exports = Self => {
co.code countryCode,
c.fi,
c.name clientName,
- c.phone,
+ 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,
LPAD(IF(mw.serviceType IS NULL, ms.serviceType, mw.serviceType), mc.serviceTypeWidth, '0') serviceType,
IF(mw.weekdays, 'S', 'N') weekDays,
- oa.description deliveryObservation
+ ta.description deliveryObservation
FROM expedition e
JOIN ticket t ON e.ticketFk = t.id
JOIN agencyMode am ON am.id = t.agencyModeFk
@@ -62,8 +62,8 @@ module.exports = Self => {
AND mw.weekDays & (1 << WEEKDAY(t.landed))
JOIN client c ON t.clientFk = c.id
JOIN address a ON t.addressFk = a.id
- LEFT JOIN addressObservation oa ON oa.addressFk = a.id
- AND oa.observationTypeFk IN (SELECT id FROM observationType ot WHERE ot.code = 'delivery')
+ LEFT JOIN ticketObservation ta ON ta.ticketFk = t.id
+ AND ta.observationTypeFk IN (SELECT id FROM observationType ot WHERE ot.code = 'agency')
JOIN province p ON a.provinceFk = p.id
JOIN country co ON co.id = p.countryFk
JOIN mrwConfig mc
diff --git a/back/methods/postcode/filter.js b/back/methods/postcode/filter.js
index 8b0f64d97..f350b1ea9 100644
--- a/back/methods/postcode/filter.js
+++ b/back/methods/postcode/filter.js
@@ -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,31 +41,33 @@ module.exports = Self => {
};
}
}) ?? {};
- delete ctx.filter.where;
+ delete filter.where;
const stmts = [];
let stmt;
stmt = new ParameterizedSQL(`
- SELECT
- pc.townFk,
- t.provinceFk,
- p.countryFk,
- pc.code,
- t.name as town,
- p.name as province,
- c.name country
- FROM
- postCode pc
- JOIN town t on t.id = pc.townFk
- JOIN province p on p.id = t.provinceFk
- JOIN country c on c.id = p.countryFk
+ SELECT
+ pc.townFk,
+ t.provinceFk,
+ p.countryFk,
+ pc.code,
+ t.name as town,
+ p.name as province,
+ c.name country
+ FROM
+ postCode pc
+ JOIN town t on t.id = pc.townFk
+ JOIN province p on p.id = t.provinceFk
+ 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];
};
};
diff --git a/back/methods/postcode/specs/filter.spec.js b/back/methods/postcode/specs/filter.spec.js
index 60ac24809..abf450a19 100644
--- a/back/methods/postcode/specs/filter.spec.js
+++ b/back/methods/postcode/specs/filter.spec.js
@@ -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: {
- where: {
- search: 46,
- }
- },
- };
- const results = await models.Postcode.filter(ctx, options);
+ const results = await models.Postcode.filter({
+ where: {
+ search: 46,
+ }
+ }, 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: {
- search: 'Alz',
- }
- },
- };
- const results = await models.Postcode.filter(ctx, options);
+ const results = await models.Postcode.filter({where: {
+ search: 'Alz',
+ }}, 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: {
- search: 'one',
- }
- },
- };
- const results = await models.Postcode.filter(ctx, options);
+ const results = await models.Postcode.filter({where: {
+ search: 'one',
+ }}, options);
expect(results.length).toEqual(4);
await tx.rollback();
@@ -92,14 +76,11 @@ describe('Postcode filter()', () => {
const options = {transaction: tx};
try {
- const ctx = {
- filter: {
- where: {
- search: 'Ec',
- }
- },
- };
- const results = await models.Postcode.filter(ctx, options);
+ const results = await models.Postcode.filter({
+ where: {
+ search: 'Ec',
+ }
+ }, options);
expect(results.length).toEqual(1);
await tx.rollback();
diff --git a/back/methods/vn-user/renew-token.js b/back/methods/vn-user/renew-token.js
index ae2d36e3e..100e913ee 100644
--- a/back/methods/vn-user/renew-token.js
+++ b/back/methods/vn-user/renew-token.js
@@ -30,16 +30,10 @@ module.exports = Self => {
// Schedule to remove current token
setTimeout(async() => {
- let exists;
try {
- exists = await models.AccessToken.findById(token.id);
- exists && await Self.logout(token.id);
+ await Self.logout(token.id);
} catch (error) {
- // eslint-disable-next-line no-console
- console.error(error);
- const body = {error: error.message, now: Date.now(), userId: token?.userId ?? null, exists};
- await handleError(body);
- throw new Error(error);
+ // FIXME: Crash if do throw new Error(error)
}
}, courtesyTime * 1000);
@@ -53,14 +47,20 @@ module.exports = Self => {
return {id: accessToken.id, ttl: accessToken.ttl};
} catch (error) {
- const body = {error: error.message, now: Date.now(), userId: token?.userId ?? null, createTokenOptions, isNotExceeded};
- await handleError(body);
+ const body = {
+ error: error.message,
+ userId: token?.userId ?? null,
+ token: token?.id,
+ scopes: token?.scopes,
+ createTokenOptions,
+ isNotExceeded
+ };
+ await handleError(JSON.stringify(body));
throw new Error(error);
}
};
};
-async function handleError(body, tag = 'renewToken') {
- body = JSON.stringify(body);
- await models.Application.rawSql('CALL util.debugAdd(?,?);', [tag, body]);
+async function handleError(body) {
+ await models.Application.rawSql('CALL util.debugAdd(?,?);', ['renewToken', body]);
}
diff --git a/back/methods/vn-user/sign-in.js b/back/methods/vn-user/sign-in.js
index 782046641..775970d55 100644
--- a/back/methods/vn-user/sign-in.js
+++ b/back/methods/vn-user/sign-in.js
@@ -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,
diff --git a/back/methods/vn-user/update-user.js b/back/methods/vn-user/update-user.js
index ddaae8548..202b01c65 100644
--- a/back/methods/vn-user/update-user.js
+++ b/back/methods/vn-user/update-user.js
@@ -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});
};
};
diff --git a/back/methods/vn-user/validate-auth.js b/back/methods/vn-user/validate-auth.js
index beab43417..8fb8b4923 100644
--- a/back/methods/vn-user/validate-auth.js
+++ b/back/methods/vn-user/validate-auth.js
@@ -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);
diff --git a/back/methods/workerActivity/add.js b/back/methods/workerActivity/add.js
new file mode 100644
index 000000000..4592a0797
--- /dev/null
+++ b/back/methods/workerActivity/add.js
@@ -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);
+ };
+};
diff --git a/back/methods/workerActivity/specs/add.spec.js b/back/methods/workerActivity/specs/add.spec.js
new file mode 100644
index 000000000..352d67723
--- /dev/null
+++ b/back/methods/workerActivity/specs/add.spec.js
@@ -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);
+ });
+});
diff --git a/back/model-config.json b/back/model-config.json
index a16fe4e8a..cb9ee4fdb 100644
--- a/back/model-config.json
+++ b/back/model-config.json
@@ -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"
},
diff --git a/back/models/config.json b/back/models/config.json
new file mode 100644
index 000000000..e5ba1f134
--- /dev/null
+++ b/back/models/config.json
@@ -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"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/back/models/default-view-config.json b/back/models/default-view-config.json
index 88164692d..e7d856c17 100644
--- a/back/models/default-view-config.json
+++ b/back/models/default-view-config.json
@@ -3,7 +3,7 @@
"base": "VnModel",
"options": {
"mysql": {
- "table": "salix.defaultViewConfig"
+ "table": "salix.defaultViewMultiConfig"
}
},
"properties": {
diff --git a/back/models/expedition_PrintOut.json b/back/models/expedition_PrintOut.json
index 23a2fdbc4..dd49b0234 100644
--- a/back/models/expedition_PrintOut.json
+++ b/back/models/expedition_PrintOut.json
@@ -14,6 +14,9 @@
},
"itemFk": {
"type": "number"
+ },
+ "isChecked": {
+ "type": "boolean"
}
}
}
\ No newline at end of file
diff --git a/back/models/ormConfig.json b/back/models/ormConfig.json
new file mode 100644
index 000000000..ef4c2b181
--- /dev/null
+++ b/back/models/ormConfig.json
@@ -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"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/back/models/postcode.json b/back/models/postcode.json
index eadc2c86c..bad6be5d7 100644
--- a/back/models/postcode.json
+++ b/back/models/postcode.json
@@ -9,7 +9,8 @@
"properties": {
"code": {
"id": true,
- "type": "string"
+ "type": "string",
+ "required": true
}
},
"relations": {
@@ -47,4 +48,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/back/models/town.json b/back/models/town.json
index 4ad729791..e5d39314b 100644
--- a/back/models/town.json
+++ b/back/models/town.json
@@ -12,7 +12,8 @@
"type": "number"
},
"name": {
- "type": "string"
+ "type": "string",
+ "required": true
}
},
"relations": {
@@ -54,4 +55,4 @@
"fields": ["id", "name", "provinceFk"]
}
}
-}
\ No newline at end of file
+}
diff --git a/back/models/user-config.json b/back/models/user-config.json
index 5c5df1b9e..f8e563dc3 100644
--- a/back/models/user-config.json
+++ b/back/models/user-config.json
@@ -3,7 +3,7 @@
"base": "VnModel",
"options": {
"mysql": {
- "table": "userConfig"
+ "table": "userMultiConfig"
}
},
"properties": {
diff --git a/back/models/vn-user.js b/back/models/vn-user.js
index 6ec5642a2..531561e04 100644
--- a/back/models/vn-user.js
+++ b/back/models/vn-user.js
@@ -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);
diff --git a/back/models/workerActivity.js b/back/models/workerActivity.js
new file mode 100644
index 000000000..b3bb2c160
--- /dev/null
+++ b/back/models/workerActivity.js
@@ -0,0 +1,3 @@
+module.exports = Self => {
+ require('../methods/workerActivity/add')(Self);
+};
diff --git a/back/models/workerActivity.json b/back/models/workerActivity.json
index e3b994f77..ecd92bbce 100644
--- a/back/models/workerActivity.json
+++ b/back/models/workerActivity.json
@@ -22,18 +22,18 @@
},
"description": {
"type": "string"
+ }
+ },
+ "relations": {
+ "workerFk": {
+ "type": "belongsTo",
+ "model": "Worker",
+ "foreignKey": "workerFk"
},
- "relations": {
- "workerFk": {
- "type": "belongsTo",
- "model": "Worker",
- "foreignKey": "workerFk"
- },
- "workerActivityTypeFk": {
- "type": "belongsTo",
- "model": "WorkerActivityType",
- "foreignKey": "workerActivityTypeFk"
- }
+ "workerActivityTypeFk": {
+ "type": "belongsTo",
+ "model": "WorkerActivityType",
+ "foreignKey": "workerActivityTypeFk"
}
}
}
\ No newline at end of file
diff --git a/back/process.yml b/back/process.yml
index a29323240..94072b57d 100644
--- a/back/process.yml
+++ b/back/process.yml
@@ -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
diff --git a/db/dump/.dump/data.sql b/db/dump/.dump/data.sql
index 43f686022..58b892604 100644
--- a/db/dump/.dump/data.sql
+++ b/db/dump/.dump/data.sql
@@ -3,7 +3,7 @@ USE `util`;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-INSERT INTO `version` VALUES ('vn-database','11117','5558e69e648c3819d4a1edf86f8df4b94d36e71a','2024-07-09 07:39:39','11141');
+INSERT INTO `version` VALUES ('vn-database','11209','3cc19549e4a9d61542b5ba906ccaf9fc90a805ce','2024-09-03 15:04:20','11212');
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);
@@ -764,6 +764,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','10955','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','10956','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10957','00-aclTicketClone.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10959','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-18 13:32:25',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10960','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:12',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10962','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-25 08:27:35',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10964','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:52',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10967','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:52',NULL,NULL);
@@ -779,6 +780,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','10977','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','10978','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-06-11 08:32:33',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10983','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-09 07:39:37',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10984','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10986','00-addSummaryId.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:12',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10988','00-pbx_prefix.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-04-11 17:00:16',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10990','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10991','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
@@ -820,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);
@@ -877,8 +880,83 @@ INSERT INTO `versionLog` VALUES ('vn-database','11111','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','11114','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-06-25 08:39:49',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11116','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-09 07:39:38',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11117','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-09 07:39:38',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11118','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-19 12:28:49',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11119','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:13',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11120','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11121','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11126','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11128','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11129','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11130','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11131','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:15',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11134','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-05 11:02:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11135','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:16',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11136','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:22:16',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11137','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:33',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11138','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:34',NULL,NULL);
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','11141','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11142','00-invoiceOutSerialColumn.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11142','01-invoiceOutSerialUpdate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',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','11165','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-20 08:34:43',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11166','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-20 08:34:43',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','11170','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-09 07:12:38',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11171','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','02-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','03-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','04-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','05-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:08',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','06-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:08',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','07-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:40:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','08-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:54:58',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','09-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:55:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','10-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:55:16',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','11-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:20',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','12-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:20',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','13-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:20',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','14-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:25',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','15-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11175','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',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);
+INSERT INTO `versionLog` VALUES ('vn-database','11179','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-20 08:34:43',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11180','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-20 08:34:43',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11182','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-08-09 08:19:36',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11185','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11187','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11189','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11190','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11191','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11191','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11191','02-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11192','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11193','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11193','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11193','02-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11194','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11195','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11197','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11201','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-27 13:04:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11204','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11209','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
@@ -1248,6 +1326,8 @@ INSERT INTO `roleInherit` VALUES (370,72,130,10578);
INSERT INTO `roleInherit` VALUES (371,36,35,NULL);
INSERT INTO `roleInherit` VALUES (372,126,13,19295);
INSERT INTO `roleInherit` VALUES (373,131,2,19295);
+INSERT INTO `roleInherit` VALUES (375,120,131,1437);
+INSERT INTO `roleInherit` VALUES (376,124,21,19336);
INSERT INTO `userPassword` VALUES (1,7,1,0,2,1);
@@ -1264,762 +1344,769 @@ USE `salix`;
/*!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 `ACL` VALUES (3,'Address','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (5,'AgencyService','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (9,'ClientObservation','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (11,'ContactChannel','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (13,'Employee','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (14,'PayMethod','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (16,'FakeProduction','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (17,'Warehouse','* ','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (20,'TicketState','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (24,'Delivery','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (25,'Zone','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (26,'ClientCredit','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (27,'ClientCreditLimit','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (30,'GreugeType','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (31,'Mandate','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (32,'MandateType','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (33,'Company','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (34,'Greuge','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (35,'AddressObservation','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (36,'ObservationType','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (37,'Greuge','*','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (38,'AgencyMode','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (39,'ItemTag','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (40,'ItemBotanical','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (41,'ItemBotanical','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (42,'ItemPlacement','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (43,'ItemPlacement','*','WRITE','ALLOW','ROLE','replenisher');
-INSERT INTO `ACL` VALUES (44,'ItemPlacement','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (45,'ItemBarcode','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (46,'ItemBarcode','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (47,'ItemBarcode','*','WRITE','ALLOW','ROLE','replenisher');
-INSERT INTO `ACL` VALUES (51,'ItemTag','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (53,'Item','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (54,'Item','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (55,'Recovery','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (56,'Recovery','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (58,'CreditClassification','*','*','ALLOW','ROLE','insurance');
-INSERT INTO `ACL` VALUES (60,'CreditInsurance','*','*','ALLOW','ROLE','insurance');
-INSERT INTO `ACL` VALUES (61,'InvoiceOut','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (63,'TicketObservation','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (65,'Sale','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (66,'TicketTracking','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (68,'TicketPackaging','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (69,'Packaging','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (70,'Packaging','*','WRITE','ALLOW','ROLE','logistic');
-INSERT INTO `ACL` VALUES (72,'SaleComponent','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (73,'Expedition','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (74,'Expedition','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (75,'Expedition','*','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (76,'AnnualAverageInvoiced','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (77,'WorkerMana','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (78,'TicketTracking','*','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (79,'Ticket','state','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (80,'Sale','deleteSales','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (81,'Sale','moveToTicket','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (82,'Sale','updateQuantity','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (83,'Sale','updatePrice','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (84,'Sale','updateDiscount','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (85,'SaleTracking','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (86,'Order','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (87,'OrderRow','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (88,'ClientContact','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (89,'Sale','moveToNewTicket','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (90,'Sale','reserve','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (91,'TicketWeekly','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (94,'Agency','landsThatDay','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (96,'ClaimEnd','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (97,'ClaimEnd','*','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (98,'ClaimBeginning','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (99,'ClaimDevelopment','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (100,'ClaimDevelopment','*','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (102,'Claim','createFromSales','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (104,'Item','*','WRITE','ALLOW','ROLE','marketingBoss');
-INSERT INTO `ACL` VALUES (105,'ItemBarcode','*','WRITE','ALLOW','ROLE','marketingBoss');
-INSERT INTO `ACL` VALUES (106,'ItemBotanical','*','WRITE','ALLOW','ROLE','marketingBoss');
-INSERT INTO `ACL` VALUES (108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss');
-INSERT INTO `ACL` VALUES (109,'UserConfig','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (110,'Accounting','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (111,'ClientLog','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (112,'Defaulter','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (113,'ClientRisk','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (114,'Receipt','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (115,'Receipt','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (116,'BankEntity','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (117,'ClientSample','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (118,'WorkerTeam','*','*','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (119,'Travel','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (120,'Travel','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (121,'Item','regularize','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (122,'TicketRequest','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (124,'Client','confirmTransaction','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (125,'Agency','getAgenciesWithWarehouse','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (127,'TicketLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (129,'TicketService','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (130,'Expedition','*','WRITE','ALLOW','ROLE','packager');
-INSERT INTO `ACL` VALUES (131,'CreditInsurance','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (132,'CreditClassification','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (133,'ItemTag','*','WRITE','ALLOW','ROLE','marketingBoss');
-INSERT INTO `ACL` VALUES (135,'ZoneGeo','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (136,'ZoneCalendar','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (137,'ZoneIncluded','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (138,'LabourHoliday','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (139,'LabourHolidayLegend','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (140,'LabourHolidayType','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (141,'Zone','*','*','ALLOW','ROLE','logisticBoss');
-INSERT INTO `ACL` VALUES (142,'ZoneCalendar','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (143,'ZoneIncluded','*','*','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (144,'Stowaway','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (145,'Ticket','getPossibleStowaways','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (147,'UserConfigView','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (148,'UserConfigView','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (149,'Sip','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (150,'Sip','*','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (151,'Department','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (152,'Department','*','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (154,'Route','*','WRITE','ALLOW','ROLE','delivery');
-INSERT INTO `ACL` VALUES (155,'Calendar','*','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (156,'WorkerLabour','*','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (157,'Calendar','absences','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (158,'ItemTag','*','WRITE','ALLOW','ROLE','accessory');
-INSERT INTO `ACL` VALUES (160,'TicketServiceType','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (161,'TicketConfig','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (163,'InvoiceOut','book','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (165,'TicketDms','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (167,'Worker','isSubordinate','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (168,'Worker','mySubordinates','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (169,'WorkerTimeControl','filter','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (171,'TicketServiceType','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (172,'Sms','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (173,'Sms','send','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (176,'Device','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (177,'Device','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (179,'ItemLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (180,'RouteLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (181,'Dms','removeFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (182,'Dms','uploadFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (183,'Dms','downloadFile','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (184,'Client','uploadFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (185,'ClientDms','removeFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (186,'ClientDms','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (187,'Ticket','uploadFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (190,'Route','updateVolume','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (191,'Agency','getLanded','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (192,'Agency','getShipped','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (194,'Postcode','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (195,'Ticket','addSale','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (196,'Dms','updateFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (197,'Dms','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (198,'ClaimDms','removeFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (199,'ClaimDms','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (200,'Claim','uploadFile','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (201,'Sale','updateConcept','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (202,'Claim','updateClaimAction','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (203,'UserPhone','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (204,'WorkerDms','removeFile','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (205,'WorkerDms','*','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (206,'Chat','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (207,'Chat','sendMessage','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (208,'Sale','recalculatePrice','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (209,'Ticket','recalculateComponents','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (211,'TravelLog','*','READ','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (212,'Thermograph','*','*','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (213,'TravelThermograph','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (214,'Entry','*','*','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (216,'TravelThermograph','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (218,'Intrastat','*','*','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (221,'UserConfig','getUserConfig','READ','ALLOW','ROLE','guest');
-INSERT INTO `ACL` VALUES (226,'ClientObservation','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (227,'Address','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (228,'AddressObservation','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (230,'ClientCredit','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (231,'ClientContact','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (232,'ClientSample','*','READ','ALLOW','ROLE','trainee');
-INSERT INTO `ACL` VALUES (233,'EntryLog','*','READ','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (234,'WorkerLog','find','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (235,'CustomsAgent','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (236,'Buy','*','*','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (237,'WorkerDms','filter','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (238,'Town','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (239,'Province','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (241,'SupplierContact','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (248,'RoleMapping','*','READ','ALLOW','ROLE','account');
-INSERT INTO `ACL` VALUES (249,'UserPassword','*','READ','ALLOW','ROLE','account');
-INSERT INTO `ACL` VALUES (250,'Town','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (251,'Province','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (252,'Supplier','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (253,'Supplier','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (254,'SupplierLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (256,'Image','*','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (257,'FixedPrice','*','*','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (258,'PayDem','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (259,'Client','createReceipt','*','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (260,'PrintServerQueue','*','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (261,'SupplierAccount','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (262,'Entry','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (263,'InvoiceIn','*','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (264,'StarredModule','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (265,'ItemBotanical','*','WRITE','ALLOW','ROLE','logisticBoss');
-INSERT INTO `ACL` VALUES (266,'ZoneLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (267,'Genus','*','WRITE','ALLOW','ROLE','logisticBoss');
-INSERT INTO `ACL` VALUES (268,'Specie','*','WRITE','ALLOW','ROLE','logisticBoss');
-INSERT INTO `ACL` VALUES (269,'InvoiceOut','createPdf','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (270,'SupplierAddress','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (271,'SalesMonitor','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (272,'InvoiceInLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (273,'InvoiceInTax','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (274,'InvoiceInLog','*','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (275,'InvoiceOut','createManualInvoice','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (276,'InvoiceOut','globalInvoicing','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (278,'RoleInherit','*','WRITE','ALLOW','ROLE','grant');
-INSERT INTO `ACL` VALUES (279,'MailAlias','*','READ','ALLOW','ROLE','marketing');
-INSERT INTO `ACL` VALUES (283,'EntryObservation','*','*','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (284,'LdapConfig','*','*','ALLOW','ROLE','sysadmin');
-INSERT INTO `ACL` VALUES (285,'SambaConfig','*','*','ALLOW','ROLE','sysadmin');
-INSERT INTO `ACL` VALUES (286,'ACL','*','*','ALLOW','ROLE','developer');
-INSERT INTO `ACL` VALUES (287,'AccessToken','*','*','ALLOW','ROLE','developer');
-INSERT INTO `ACL` VALUES (293,'RoleInherit','*','*','ALLOW','ROLE','it');
-INSERT INTO `ACL` VALUES (294,'RoleRole','*','*','ALLOW','ROLE','it');
-INSERT INTO `ACL` VALUES (295,'AccountConfig','*','*','ALLOW','ROLE','sysadmin');
-INSERT INTO `ACL` VALUES (296,'Collection','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (297,'Sale','clone','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (298,'InvoiceInDueDay','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (299,'Collection','setSaleQuantity','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (302,'AgencyTerm','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (303,'ClaimLog','*','READ','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (304,'Edi','updateData','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (305,'EducationLevel','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (306,'InvoiceInIntrastat','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (307,'SupplierAgencyTerm','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (308,'InvoiceInIntrastat','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (309,'Zone','getZoneClosing','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (310,'ExpeditionState','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (311,'Expense','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (312,'Expense','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (314,'SupplierActivity','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (315,'SupplierActivity','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (316,'Dms','deleteTrashFiles','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (317,'ClientUnpaid','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (318,'MdbVersion','*','*','ALLOW','ROLE','developer');
-INSERT INTO `ACL` VALUES (319,'ItemType','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (320,'ItemType','*','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (321,'InvoiceOut','refund','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (322,'InvoiceOut','refund','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (323,'InvoiceOut','refund','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (324,'Ticket','refund','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (325,'Ticket','refund','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (326,'Ticket','refund','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (327,'Sale','clone','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (328,'Sale','clone','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (329,'TicketRefund','*','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (330,'ClaimObservation','*','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (331,'ClaimObservation','*','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (332,'Client','setPassword','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (333,'Client','updateUser','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (334,'ShelvingLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (335,'ZoneExclusionGeo','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (336,'ZoneExclusionGeo','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (337,'Parking','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (338,'Shelving','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (339,'OsTicket','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (340,'OsTicketConfig','*','*','ALLOW','ROLE','it');
-INSERT INTO `ACL` VALUES (341,'ClientConsumptionQueue','*','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (343,'Ticket','deliveryNoteEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (344,'Ticket','deliveryNoteCsvPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (345,'Ticket','deliveryNoteCsvEmail','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (346,'Client','campaignMetricsPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (347,'Client','campaignMetricsEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (348,'Client','clientWelcomeHtml','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (349,'Client','clientWelcomeEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (350,'Client','creditRequestPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (351,'Client','creditRequestHtml','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (352,'Client','creditRequestEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (353,'Client','printerSetupHtml','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (354,'Client','printerSetupEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (355,'Client','sepaCoreEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (356,'Client','letterDebtorPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (357,'Client','letterDebtorStHtml','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (358,'Client','letterDebtorStEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (359,'Client','letterDebtorNdHtml','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (360,'Client','letterDebtorNdEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (361,'Client','clientDebtStatementPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (362,'Client','clientDebtStatementHtml','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (363,'Client','clientDebtStatementEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (364,'Client','incotermsAuthorizationPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (365,'Client','incotermsAuthorizationHtml','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (366,'Client','incotermsAuthorizationEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (367,'Client','consumptionSendQueued','WRITE','ALLOW','ROLE','system');
-INSERT INTO `ACL` VALUES (368,'InvoiceOut','invoiceEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (369,'InvoiceOut','exportationPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (370,'InvoiceOut','sendQueued','WRITE','ALLOW','ROLE','system');
-INSERT INTO `ACL` VALUES (371,'Ticket','invoiceCsvPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (372,'Ticket','invoiceCsvEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (373,'Supplier','campaignMetricsPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (374,'Supplier','campaignMetricsEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (375,'Travel','extraCommunityPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (376,'Travel','extraCommunityEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (377,'Entry','entryOrderPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (378,'OsTicket','osTicketReportEmail','WRITE','ALLOW','ROLE','system');
-INSERT INTO `ACL` VALUES (379,'Item','buyerWasteEmail','WRITE','ALLOW','ROLE','system');
-INSERT INTO `ACL` VALUES (380,'Claim','claimPickupPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (381,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (382,'Item','labelPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (383,'Sector','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (384,'Sector','*','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (385,'Route','driverRoutePdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (386,'Route','driverRouteEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (387,'Ticket','deliveryNotePdf','READ','ALLOW','ROLE','$owner');
-INSERT INTO `ACL` VALUES (388,'Supplier','newSupplier','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (389,'ClaimRma','*','READ','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (390,'ClaimRma','*','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (391,'Notification','*','WRITE','ALLOW','ROLE','system');
-INSERT INTO `ACL` VALUES (392,'Boxing','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (393,'Url','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (394,'Url','*','WRITE','ALLOW','ROLE','it');
-INSERT INTO `ACL` VALUES (395,'ItemShelving','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (396,'ItemShelving','*','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (397,'ItemShelvingPlacementSupplyStock','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (398,'NotificationQueue','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (399,'InvoiceOut','clientsToInvoice','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (400,'InvoiceOut','invoiceClient','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (401,'Sale','editTracked','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (402,'Sale','editFloramondo','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (403,'Receipt','balanceCompensationEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (404,'Receipt','balanceCompensationPdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (405,'Ticket','getTicketsFuture','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (406,'Ticket','merge','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (407,'Sale','editFloramondo','WRITE','ALLOW','ROLE','logistic');
-INSERT INTO `ACL` VALUES (408,'ZipConfig','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (409,'Item','*','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (410,'Sale','editCloned','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (411,'Sale','editCloned','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (414,'MdbVersion','*','READ','ALLOW','ROLE','$everyone');
-INSERT INTO `ACL` VALUES (416,'TicketLog','getChanges','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (417,'Ticket','getTicketsAdvance','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (418,'EntryLog','*','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (419,'Sale','editTracked','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (420,'MdbBranch','*','READ','ALLOW','ROLE','$everyone');
-INSERT INTO `ACL` VALUES (421,'ItemShelvingSale','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (422,'Docuware','checkFile','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (423,'Docuware','download','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (424,'Docuware','upload','WRITE','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (425,'Docuware','deliveryNoteEmail','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (426,'TpvTransaction','confirm','WRITE','ALLOW','ROLE','$everyone');
-INSERT INTO `ACL` VALUES (427,'TpvTransaction','start','WRITE','ALLOW','ROLE','$authenticated');
-INSERT INTO `ACL` VALUES (428,'TpvTransaction','end','WRITE','ALLOW','ROLE','$authenticated');
-INSERT INTO `ACL` VALUES (429,'ItemConfig','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (431,'Tag','onSubmit','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (432,'Worker','updateAttributes','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (433,'Worker','createAbsence','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (434,'Worker','updateAbsence','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (435,'Worker','deleteAbsence','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (436,'Worker','new','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (438,'Client','getClientOrSupplierReference','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (439,'NotificationSubscription','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (440,'NotificationAcl','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (441,'MdbApp','*','READ','ALLOW','ROLE','$everyone');
-INSERT INTO `ACL` VALUES (442,'MdbApp','*','*','ALLOW','ROLE','developer');
-INSERT INTO `ACL` VALUES (443,'ItemConfig','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (444,'DeviceProduction','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (445,'DeviceProductionModels','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (446,'DeviceProductionState','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (447,'DeviceProductionUser','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (448,'DeviceProduction','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (449,'DeviceProductionModels','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (450,'DeviceProductionState','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (451,'DeviceProductionUser','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (452,'Worker','deallocatePDA','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (453,'Worker','allocatePDA','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (454,'Worker','deallocatePDA','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (455,'Worker','allocatePDA','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (456,'Zone','*','*','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (458,'Operator','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (459,'Operator','*','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (460,'InvoiceIn','getSerial','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (461,'Ticket','saveSign','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (462,'InvoiceOut','negativeBases','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (463,'InvoiceOut','negativeBasesCsv','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (464,'WorkerObservation','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (465,'ClientInforma','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (466,'ClientInforma','*','WRITE','ALLOW','ROLE','financial');
-INSERT INTO `ACL` VALUES (467,'Receipt','receiptEmail','*','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (468,'Client','setRating','WRITE','ALLOW','ROLE','financial');
-INSERT INTO `ACL` VALUES (470,'Client','addressesPropagateRe','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (471,'Client','canBeInvoiced','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (472,'Client','canCreateTicket','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (473,'Client','consumption','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (474,'Client','createAddress','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (475,'Client','createWithUser','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (476,'Client','extendedListFilter','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (477,'Client','getAverageInvoiced','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (478,'Client','getCard','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (479,'Client','getDebt','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (480,'Client','getMana','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (481,'Client','transactions','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (482,'Client','hasCustomerRole','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (483,'Client','isValidClient','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (484,'Client','lastActiveTickets','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (485,'Client','sendSms','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (486,'Client','setPassword','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (487,'Client','summary','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (488,'Client','updateAddress','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (489,'Client','updateFiscalData','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (491,'Client','uploadFile','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (492,'Client','campaignMetricsPdf','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (493,'Client','campaignMetricsEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (494,'Client','clientWelcomeHtml','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (495,'Client','clientWelcomeEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (496,'Client','printerSetupHtml','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (497,'Client','printerSetupEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (498,'Client','sepaCoreEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (499,'Client','letterDebtorPdf','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (500,'Client','letterDebtorStHtml','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (501,'Client','letterDebtorStEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (502,'Client','letterDebtorNdHtml','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (503,'Client','letterDebtorNdEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (504,'Client','clientDebtStatementPdf','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (505,'Client','clientDebtStatementHtml','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (506,'Client','clientDebtStatementEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (507,'Client','creditRequestPdf','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (508,'Client','creditRequestHtml','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (509,'Client','creditRequestEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (510,'Client','incotermsAuthorizationPdf','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (511,'Client','incotermsAuthorizationHtml','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (512,'Client','incotermsAuthorizationEmail','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (513,'Client','consumptionSendQueued','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (514,'Client','filter','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (515,'Client','getClientOrSupplierReference','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (516,'Client','upsert','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (518,'Client','replaceById','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (519,'Client','updateAttributes','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (520,'Client','updateAttributes','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (521,'Client','deleteById','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (522,'Client','replaceOrCreate','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (523,'Client','updateAll','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (524,'Client','upsertWithWhere','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (525,'Defaulter','observationEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (527,'VnUser','acl','READ','ALLOW','ROLE','guest');
-INSERT INTO `ACL` VALUES (528,'VnUser','getCurrentUserData','READ','ALLOW','ROLE','account');
-INSERT INTO `ACL` VALUES (530,'Account','exists','READ','ALLOW','ROLE','account');
-INSERT INTO `ACL` VALUES (531,'Account','exists','READ','ALLOW','ROLE','account');
-INSERT INTO `ACL` VALUES (532,'UserLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (533,'RoleLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (534,'WagonType','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (535,'WagonTypeColor','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (536,'WagonTypeTray','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (537,'WagonConfig','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (538,'CollectionWagon','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (539,'CollectionWagonTicket','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (540,'Wagon','*','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (541,'WagonType','createWagonType','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (542,'WagonType','deleteWagonType','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (543,'WagonType','editWagonType','*','ALLOW','ROLE','productionAssi');
-INSERT INTO `ACL` VALUES (544,'Docuware','deliveryNoteEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (545,'Agency','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (546,'Agency','seeExpired','READ','ALLOW','ROLE','coolerAssist');
-INSERT INTO `ACL` VALUES (547,'WorkerLog','models','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (548,'Ticket','editDiscount','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (549,'Ticket','editDiscount','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (550,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (551,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (552,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (553,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (554,'Ticket','deleteTicketWithPartPrepared','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (555,'Ticket','editZone','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (556,'State','editableStates','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (557,'State','seeEditableStates','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (558,'State','seeEditableStates','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (559,'State','isSomeEditable','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (560,'State','isAllEditable','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (561,'State','isAllEditable','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (562,'Agency','seeExpired','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (563,'Agency','seeExpired','READ','ALLOW','ROLE','productionBoss');
-INSERT INTO `ACL` VALUES (564,'Claim','createAfterDeadline','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (565,'Client','editAddressLogifloraAllowed','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (566,'Client','editFiscalDataWithoutTaxDataCheck','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (567,'Client','editVerifiedDataWithoutTaxDataCheck','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (568,'Client','editCredit','WRITE','ALLOW','ROLE','financialBoss');
-INSERT INTO `ACL` VALUES (569,'Client','zeroCreditEditor','WRITE','ALLOW','ROLE','financialBoss');
-INSERT INTO `ACL` VALUES (570,'InvoiceOut','canCreatePdf','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (571,'Supplier','editPayMethodCheck','WRITE','ALLOW','ROLE','financial');
-INSERT INTO `ACL` VALUES (572,'Worker','isTeamBoss','WRITE','ALLOW','ROLE','teamBoss');
-INSERT INTO `ACL` VALUES (573,'Worker','forceIsSubordinate','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (574,'Claim','editPickup','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (577,'Claim','findOne','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (579,'Claim','updateClaim','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (580,'Claim','regularizeClaim','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (581,'Claim','updateClaimDestination','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (582,'Claim','downloadFile','READ','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (583,'Claim','deleteById','WRITE','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (585,'Claim','logs','READ','ALLOW','ROLE','claimManager');
-INSERT INTO `ACL` VALUES (586,'Ticket','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (587,'Ticket','findById','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (588,'Ticket','findOne','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (589,'Ticket','getVolume','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (590,'Ticket','getTotalVolume','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (591,'Ticket','summary','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (592,'Ticket','priceDifference','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (593,'Ticket','componentUpdate','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (594,'Ticket','new','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (595,'Ticket','isEditable','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (596,'Ticket','setDeleted','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (597,'Ticket','restore','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (598,'Ticket','getSales','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (599,'Ticket','getSalesPersonMana','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (600,'Ticket','filter','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (601,'Ticket','makeInvoice','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (602,'Ticket','updateEditableTicket','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (603,'Ticket','updateDiscount','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (604,'Ticket','transferSales','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (605,'Ticket','sendSms','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (606,'Ticket','isLocked','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (607,'Ticket','freightCost','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (608,'Ticket','getComponentsSum','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (609,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','delivery');
-INSERT INTO `ACL` VALUES (610,'Ticket','deliveryNoteCsv','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (611,'State','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (612,'State','findById','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (613,'State','findOne','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (614,'Worker','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (615,'Worker','findById','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (616,'Worker','findOne','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (617,'Worker','filter','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (618,'Worker','getWorkedHours','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (619,'Worker','active','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (620,'Worker','activeWithRole','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (621,'Worker','uploadFile','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (622,'Worker','contracts','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (623,'Worker','holidays','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (624,'Worker','activeContract','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (625,'Worker','activeWithInheritedRole','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (626,'Ticket','collectionLabel','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (628,'Ticket','expeditionPalletLabel','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (629,'Ticket','editDiscount','WRITE','ALLOW','ROLE','artificialBoss');
-INSERT INTO `ACL` VALUES (630,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','salesTeamBoss');
-INSERT INTO `ACL` VALUES (635,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (636,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (637,'Claim','downloadFile','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (638,'Agency','seeExpired','READ','ALLOW','ROLE','artificialBoss');
-INSERT INTO `ACL` VALUES (639,'Agency','seeExpired','READ','ALLOW','ROLE','logisticAssistant');
-INSERT INTO `ACL` VALUES (654,'Ticket','editZone','WRITE','ALLOW','ROLE','logisticAssistant');
-INSERT INTO `ACL` VALUES (655,'Entry','addFromPackaging','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (656,'Entry','addFromBuy','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (657,'Supplier','getItemsPackaging','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (658,'Ticket','closeAll','WRITE','ALLOW','ROLE','system');
-INSERT INTO `ACL` VALUES (659,'Account','*','*','ALLOW','ROLE','developerBoss');
-INSERT INTO `ACL` VALUES (664,'MailForward','*','*','ALLOW','ROLE','itManagement');
-INSERT INTO `ACL` VALUES (667,'VnUser','*','*','ALLOW','ROLE','itManagement');
-INSERT INTO `ACL` VALUES (668,'VnUser','__get__preview','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (669,'VnUser','preview','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (670,'VnUser','create','*','ALLOW','ROLE','itManagement');
-INSERT INTO `ACL` VALUES (672,'PackingSiteAdvanced','*','*','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (673,'InvoiceOut','makePdfAndNotify','WRITE','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (674,'InvoiceOutConfig','*','READ','ALLOW','ROLE','invoicing');
-INSERT INTO `ACL` VALUES (676,'Ticket','invoiceTickets','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (680,'MailAliasAccount','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (683,'MailAliasAccount','canEditAlias','WRITE','ALLOW','ROLE','developerBoss');
-INSERT INTO `ACL` VALUES (684,'WorkerDisableExcluded','*','READ','ALLOW','ROLE','itManagement');
-INSERT INTO `ACL` VALUES (685,'WorkerDisableExcluded','*','WRITE','ALLOW','ROLE','itManagement');
-INSERT INTO `ACL` VALUES (686,'MailForward','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (687,'ClientSms','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (688,'ClientSms','create','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (689,'Vehicle','sorted','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (695,'ViaexpressConfig','internationalExpedition','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (696,'ViaexpressConfig','renderer','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (697,'Ticket','transferClient','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (698,'Ticket','canEditWeekly','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (699,'TicketSms','find','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (701,'Docuware','upload','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (702,'Ticket','docuwareDownload','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (703,'Worker','search','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (704,'ExpeditionState','addExpeditionState','WRITE','ALLOW','ROLE','delivery');
-INSERT INTO `ACL` VALUES (705,'SaleGroupDetail','deleteById','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (706,'Ticket','setDeleted','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (707,'DeviceLog','create','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (708,'Collection','getTickets','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (709,'Client','findOne','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (710,'Client','findById','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (711,'Client','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (712,'Client','exists','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (713,'Client','__get__addresses','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (714,'ExpeditionMistakeType','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (715,'WorkerMistakeType','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (716,'ExpeditionMistake','*','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (717,'WorkerMistake','*','WRITE','ALLOW','ROLE','coolerAssist');
-INSERT INTO `ACL` VALUES (718,'MistakesTypes','*','WRITE','ALLOW','ROLE','coolerAssist');
-INSERT INTO `ACL` VALUES (719,'MistakeType','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (720,'MachineWorker','*','READ','ALLOW','ROLE','coolerAssist');
-INSERT INTO `ACL` VALUES (721,'Printer','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (722,'SaleMistake','*','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (723,'Item','setVisibleDiscard','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (724,'Address','getAddress','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (725,'Account','findOne','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (726,'Account','findById','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (727,'Account','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (728,'Account','exists','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (729,'Sale','clone','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (730,'Ticket','setDeleted','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (732,'Sale','isInPreparing','*','ALLOW','ROLE','reviewer');
-INSERT INTO `ACL` VALUES (733,'Train','*','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (734,'WorkerDepartment','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (735,'VnUser','higherPrivileges','*','ALLOW','ROLE','itManagement');
-INSERT INTO `ACL` VALUES (736,'VnUser','mediumPrivileges','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (737,'VnUser','updateUser','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (738,'TicketCollection','*','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (739,'Worker','setPassword','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (740,'Url','getByUser','READ','ALLOW','ROLE','$everyone');
-INSERT INTO `ACL` VALUES (741,'Claim','__get__lines','READ','ALLOW','ROLE','claimViewer');
-INSERT INTO `ACL` VALUES (742,'AddressShortage','*','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (743,'Claim','filter','READ','ALLOW','ROLE','claimViewer');
-INSERT INTO `ACL` VALUES (744,'Claim','find','READ','ALLOW','ROLE','claimViewer');
-INSERT INTO `ACL` VALUES (745,'Claim','findById','READ','ALLOW','ROLE','claimViewer');
-INSERT INTO `ACL` VALUES (746,'Claim','getSummary','READ','ALLOW','ROLE','claimViewer');
-INSERT INTO `ACL` VALUES (747,'CplusRectificationType','*','READ','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (748,'SiiTypeInvoiceOut','*','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (749,'InvoiceCorrectionType','*','READ','ALLOW','ROLE','salesPerson');
-INSERT INTO `ACL` VALUES (750,'InvoiceOut','transferInvoice','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (751,'Application','executeProc','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (752,'Application','executeFunc','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (753,'NotificationSubscription','getList','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (754,'Route','find','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (755,'Route','findById','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (756,'Route','findOne','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (757,'Route','getRoutesByWorker','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (758,'Route','canViewAllRoute','READ','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (759,'Route','cmr','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (760,'Route','downloadCmrsZip','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (761,'Route','downloadZip','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (762,'Route','filter','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (763,'Route','getByWorker','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (764,'Route','getDeliveryPoint','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (765,'Route','cmrs','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (766,'Route','getSuggestedTickets','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (767,'Route','getTickets','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (768,'Route','guessPriority','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (769,'Route','insertTicket','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (770,'Route','getDeliveryPoint','READ','ALLOW','ROLE','deliveryBoss');
-INSERT INTO `ACL` VALUES (771,'Route','summary','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (772,'Route','getExpeditionSummary','READ','ALLOW','ROLE','delivery');
-INSERT INTO `ACL` VALUES (773,'WorkerTimeControl','login','READ','ALLOW','ROLE','timeControl');
-INSERT INTO `ACL` VALUES (774,'WorkerTimeControl','getClockIn','READ','ALLOW','ROLE','timeControl');
-INSERT INTO `ACL` VALUES (775,'WorkerTimeControl','clockIn','WRITE','ALLOW','ROLE','timeControl');
-INSERT INTO `ACL` VALUES (776,'WorkerTimeControl','addTimeEntry','WRITE','ALLOW','ROLE','teamBoss');
-INSERT INTO `ACL` VALUES (777,'WorkerTimeControl','deleteTimeEntry','WRITE','ALLOW','ROLE','teamBoss');
-INSERT INTO `ACL` VALUES (778,'WorkerTimeControl','updateTimeEntry','WRITE','ALLOW','ROLE','teamBoss');
-INSERT INTO `ACL` VALUES (779,'WorkerTimeControl','sendMail','WRITE','ALLOW','ROLE','developer');
-INSERT INTO `ACL` VALUES (780,'WorkerTimeControl','updateMailState','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (781,'WorkerTimeControl','weeklyHourRecordEmail','WRITE','ALLOW','ROLE','teamBoss');
-INSERT INTO `ACL` VALUES (782,'WorkerTimeControl','getMailStates','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (783,'WorkerTimeControl','resendWeeklyHourEmail','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (784,'VnRole','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (785,'VnRole','*','WRITE','ALLOW','ROLE','it');
-INSERT INTO `ACL` VALUES (786,'State','isAllEditable','READ','ALLOW','ROLE','delivery');
-INSERT INTO `ACL` VALUES (787,'Ticket','makePdfList','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (788,'Ticket','invoiceTicketsAndPdf','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (789,'InvoiceIn','*','READ','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (790,'InvoiceIn','getSerial','READ','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (791,'InvoiceIn','corrective','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (792,'InvoiceInCorrection','*','*','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (793,'Supplier','updateAllFiscalData','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (794,'Supplier','updateFiscalData','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (795,'Ticket','myLastModified','*','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (796,'MrwConfig','cancelShipment','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (797,'MrwConfig','createShipment','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (798,'MailAliasAccount','*','*','ALLOW','ROLE','itManagement');
-INSERT INTO `ACL` VALUES (799,'Ticket','saveCmr','*','ALLOW','ROLE','developer');
-INSERT INTO `ACL` VALUES (800,'EntryDms','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (801,'MailAliasAccount','create','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (802,'MailAliasAccount','deleteById','WRITE','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (804,'DeviceProduction','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (805,'Collection','assign','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (806,'ExpeditionPallet','getPallet','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (807,'MachineWorker','updateInTime','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (808,'MobileAppVersionControl','getVersion','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (809,'SaleTracking','delete','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (810,'SaleTracking','updateTracking','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (811,'SaleTracking','setPicked','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (813,'Sale','getFromSectorCollection','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (814,'ItemBarcode','delete','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (815,'WorkerActivityType','*','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (816,'WorkerActivity','*','*','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (817,'ParkingLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (818,'ExpeditionPallet','*','*','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (819,'Ticket','addSaleByCode','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (820,'TicketCollection','*','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (821,'Ticket','clone','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (822,'SupplierDms','*','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (823,'MailAlias','*','*','ALLOW','ROLE','developerBoss');
-INSERT INTO `ACL` VALUES (824,'ItemShelving','hasItemOlder','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (825,'Application','getEnumValues','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (826,'Ticket','editZone','WRITE','ALLOW','ROLE','salesAssistant');
-INSERT INTO `ACL` VALUES (827,'TicketWeekly','deleteById','WRITE','ALLOW','ROLE','buyerBoss');
-INSERT INTO `ACL` VALUES (828,'TicketWeekly','upsert','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (830,'InvoiceIn','*','READ','ALLOW','ROLE','deliveryBoss');
-INSERT INTO `ACL` VALUES (831,'InvoiceIn','exchangeRateUpdate','*','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (832,'AgencyLog','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (833,'AgencyWorkCenter','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (835,'Agency','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (836,'Agency','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (837,'AgencyWorkCenter','*','WRITE','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (838,'Worker','getAvailablePda','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (839,'Locker','__get__codes','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (840,'Locker','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (841,'Locker','*','*','ALLOW','ROLE','productionBoss');
-INSERT INTO `ACL` VALUES (842,'Worker','__get__locker','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (843,'Worker','__get__locker','READ','ALLOW','ROLE','productionBoss');
-INSERT INTO `ACL` VALUES (846,'Ticket','refund','WRITE','ALLOW','ROLE','logistic');
-INSERT INTO `ACL` VALUES (847,'RouteConfig','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (848,'InvoiceIn','updateInvoiceIn','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (849,'InvoiceIn','clone','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (850,'InvoiceIn','corrective','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (851,'InvoiceIn','exchangeRateUpdate','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (852,'InvoiceIn','invoiceInEmail','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (853,'InvoiceIn','toBook','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (854,'InvoiceIn','toUnbook','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (855,'InvoiceIn','deleteById','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (856,'InvoiceIn','updateInvoiceIn','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (857,'InvoiceIn','clone','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (858,'InvoiceIn','corrective','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (859,'InvoiceIn','exchangeRateUpdate','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (860,'InvoiceIn','invoiceInEmail','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (861,'InvoiceIn','toBook','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (862,'InvoiceIn','deleteById','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (863,'InvoiceIn','create','WRITE','ALLOW','ROLE','administrative');
-INSERT INTO `ACL` VALUES (864,'InvoiceIn','create','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (865,'Ticket','deliveryNotePdf','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (866,'InvoiceOut','download','READ','ALLOW','ROLE','$owner');
-INSERT INTO `ACL` VALUES (867,'InvoiceIn','*','READ','ALLOW','ROLE','maintenanceBoss');
-INSERT INTO `ACL` VALUES (868,'InvoiceIn','*','READ','ALLOW','ROLE','maintenanceBos');
-INSERT INTO `ACL` VALUES (869,'Ticket','editZone','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (870,'Entry','find','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (871,'RoadmapAddress','*','WRITE','ALLOW','ROLE','palletizerBoss');
-INSERT INTO `ACL` VALUES (872,'RoadmapAddress','*','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (873,'Roadmap','*','WRITE','ALLOW','ROLE','palletizerBoss');
-INSERT INTO `ACL` VALUES (874,'Roadmap','*','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (875,'RoadmapStop','*','WRITE','ALLOW','ROLE','palletizerBoss');
-INSERT INTO `ACL` VALUES (876,'RoadmapStop','*','READ','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (877,'TravelKgPercentage','*','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (878,'MrwConfig','getLabel','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (879,'AgencyMode','*','*','ALLOW','ROLE','deliveryAssistant');
-INSERT INTO `ACL` VALUES (880,'Collection','assignCollection','WRITE','ALLOW','ROLE','production');
-INSERT INTO `ACL` VALUES (881,'TrainingCourse','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (882,'TrainingCourseType','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (883,'TrainingCenter','*','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (884,'Worker','__get__trainingCourse','*','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (885,'WorkerTimeControl','addTimeEntry','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (886,'WorkerTimeControl','deleteTimeEntry','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (887,'WorkerTimeControl','updateTimeEntry','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (888,'WorkerTimeControl','weeklyHourRecordEmail','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (889,'WorkerTimeControl','sendMail','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (890,'WorkerTimeControl','updateMailState','WRITE','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (891,'TravelKgPercentage','*','READ','ALLOW','ROLE','employee');
-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 (3,'Address','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (5,'AgencyService','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (9,'ClientObservation','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (11,'ContactChannel','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (13,'Employee','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (14,'PayMethod','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (16,'FakeProduction','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (17,'Warehouse','* ','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (20,'TicketState','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (24,'Delivery','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (25,'Zone','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (26,'ClientCredit','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (27,'ClientCreditLimit','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (30,'GreugeType','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (31,'Mandate','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (32,'MandateType','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (33,'Company','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (34,'Greuge','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (35,'AddressObservation','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (36,'ObservationType','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (37,'Greuge','*','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (38,'AgencyMode','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (39,'ItemTag','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (40,'ItemBotanical','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (41,'ItemBotanical','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (42,'ItemPlacement','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (43,'ItemPlacement','*','WRITE','ALLOW','ROLE','replenisher',NULL);
+INSERT INTO `ACL` VALUES (44,'ItemPlacement','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (45,'ItemBarcode','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (46,'ItemBarcode','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (47,'ItemBarcode','*','WRITE','ALLOW','ROLE','replenisher',NULL);
+INSERT INTO `ACL` VALUES (51,'ItemTag','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (53,'Item','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (54,'Item','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (55,'Recovery','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (56,'Recovery','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (58,'CreditClassification','*','*','ALLOW','ROLE','insurance',NULL);
+INSERT INTO `ACL` VALUES (60,'CreditInsurance','*','*','ALLOW','ROLE','insurance',NULL);
+INSERT INTO `ACL` VALUES (61,'InvoiceOut','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (63,'TicketObservation','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (65,'Sale','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (66,'TicketTracking','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (68,'TicketPackaging','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (69,'Packaging','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (70,'Packaging','*','WRITE','ALLOW','ROLE','logistic',NULL);
+INSERT INTO `ACL` VALUES (72,'SaleComponent','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (73,'Expedition','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (74,'Expedition','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (75,'Expedition','*','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (76,'AnnualAverageInvoiced','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (77,'WorkerMana','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (78,'TicketTracking','*','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (79,'Ticket','state','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (80,'Sale','deleteSales','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (81,'Sale','moveToTicket','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (82,'Sale','updateQuantity','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (83,'Sale','updatePrice','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (84,'Sale','updateDiscount','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (85,'SaleTracking','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (86,'Order','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (87,'OrderRow','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (88,'ClientContact','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (89,'Sale','moveToNewTicket','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (90,'Sale','reserve','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (91,'TicketWeekly','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (94,'Agency','landsThatDay','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (96,'ClaimEnd','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (97,'ClaimEnd','*','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (98,'ClaimBeginning','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (99,'ClaimDevelopment','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (100,'ClaimDevelopment','*','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (102,'Claim','createFromSales','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (104,'Item','*','WRITE','ALLOW','ROLE','marketingBoss',NULL);
+INSERT INTO `ACL` VALUES (105,'ItemBarcode','*','WRITE','ALLOW','ROLE','marketingBoss',NULL);
+INSERT INTO `ACL` VALUES (106,'ItemBotanical','*','WRITE','ALLOW','ROLE','marketingBoss',NULL);
+INSERT INTO `ACL` VALUES (108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss',NULL);
+INSERT INTO `ACL` VALUES (109,'UserConfig','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (110,'Accounting','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (111,'ClientLog','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (112,'Defaulter','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (113,'ClientRisk','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (114,'Receipt','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (115,'Receipt','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (116,'BankEntity','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (117,'ClientSample','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (118,'WorkerTeam','*','*','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (119,'Travel','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (120,'Travel','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (121,'Item','regularize','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (122,'TicketRequest','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (124,'Client','confirmTransaction','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (125,'Agency','getAgenciesWithWarehouse','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (127,'TicketLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (129,'TicketService','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (130,'Expedition','*','WRITE','ALLOW','ROLE','packager',NULL);
+INSERT INTO `ACL` VALUES (131,'CreditInsurance','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (132,'CreditClassification','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (133,'ItemTag','*','WRITE','ALLOW','ROLE','marketingBoss',NULL);
+INSERT INTO `ACL` VALUES (135,'ZoneGeo','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (136,'ZoneCalendar','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (137,'ZoneIncluded','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (138,'LabourHoliday','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (139,'LabourHolidayLegend','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (140,'LabourHolidayType','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (141,'Zone','*','*','ALLOW','ROLE','logisticBoss',NULL);
+INSERT INTO `ACL` VALUES (142,'ZoneCalendar','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (143,'ZoneIncluded','*','*','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (144,'Stowaway','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (145,'Ticket','getPossibleStowaways','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (147,'UserConfigView','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (148,'UserConfigView','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (149,'Sip','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (150,'Sip','*','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (151,'Department','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (152,'Department','*','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (154,'Route','*','WRITE','ALLOW','ROLE','delivery',NULL);
+INSERT INTO `ACL` VALUES (155,'Calendar','*','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (156,'WorkerLabour','*','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (157,'Calendar','absences','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (158,'ItemTag','*','WRITE','ALLOW','ROLE','accessory',NULL);
+INSERT INTO `ACL` VALUES (160,'TicketServiceType','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (161,'TicketConfig','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','adminBoss',783);
+INSERT INTO `ACL` VALUES (163,'InvoiceOut','book','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (165,'TicketDms','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (167,'Worker','isSubordinate','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (168,'Worker','mySubordinates','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (169,'WorkerTimeControl','filter','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (171,'TicketServiceType','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (172,'Sms','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (173,'Sms','send','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (176,'Device','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (177,'Device','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (179,'ItemLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (180,'RouteLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (181,'Dms','removeFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (182,'Dms','uploadFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (183,'Dms','downloadFile','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (184,'Client','uploadFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (185,'ClientDms','removeFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (186,'ClientDms','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (187,'Ticket','uploadFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (190,'Route','updateVolume','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (191,'Agency','getLanded','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (192,'Agency','getShipped','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (194,'Postcode','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (195,'Ticket','addSale','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (196,'Dms','updateFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (197,'Dms','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (198,'ClaimDms','removeFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (199,'ClaimDms','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (200,'Claim','uploadFile','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (201,'Sale','updateConcept','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (202,'Claim','updateClaimAction','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (203,'UserPhone','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (204,'WorkerDms','removeFile','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (205,'WorkerDms','*','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (206,'Chat','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (207,'Chat','sendMessage','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (208,'Sale','recalculatePrice','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (209,'Ticket','recalculateComponents','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (211,'TravelLog','*','READ','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (212,'Thermograph','*','*','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (213,'TravelThermograph','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (214,'Entry','*','*','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (216,'TravelThermograph','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (218,'Intrastat','*','*','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (221,'UserConfig','getUserConfig','READ','ALLOW','ROLE','guest',NULL);
+INSERT INTO `ACL` VALUES (226,'ClientObservation','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (227,'Address','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (228,'AddressObservation','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (230,'ClientCredit','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (231,'ClientContact','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (232,'ClientSample','*','READ','ALLOW','ROLE','trainee',NULL);
+INSERT INTO `ACL` VALUES (233,'EntryLog','*','READ','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (234,'WorkerLog','find','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (235,'CustomsAgent','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (236,'Buy','*','*','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (237,'WorkerDms','filter','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (238,'Town','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (239,'Province','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (241,'SupplierContact','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (248,'RoleMapping','*','READ','ALLOW','ROLE','account',NULL);
+INSERT INTO `ACL` VALUES (249,'UserPassword','*','READ','ALLOW','ROLE','account',NULL);
+INSERT INTO `ACL` VALUES (250,'Town','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (251,'Province','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (252,'Supplier','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (253,'Supplier','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (254,'SupplierLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (256,'Image','*','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (257,'FixedPrice','*','*','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (258,'PayDem','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (259,'Client','createReceipt','*','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (260,'PrintServerQueue','*','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (261,'SupplierAccount','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (262,'Entry','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (263,'InvoiceIn','*','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (264,'StarredModule','*','*','ALLOW','ROLE','$authenticated',NULL);
+INSERT INTO `ACL` VALUES (265,'ItemBotanical','*','WRITE','ALLOW','ROLE','logisticBoss',NULL);
+INSERT INTO `ACL` VALUES (266,'ZoneLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (267,'Genus','*','WRITE','ALLOW','ROLE','logisticBoss',NULL);
+INSERT INTO `ACL` VALUES (268,'Specie','*','WRITE','ALLOW','ROLE','logisticBoss',NULL);
+INSERT INTO `ACL` VALUES (269,'InvoiceOut','createPdf','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (270,'SupplierAddress','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (271,'SalesMonitor','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (272,'InvoiceInLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (273,'InvoiceInTax','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (274,'InvoiceInLog','*','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (275,'InvoiceOut','createManualInvoice','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (276,'InvoiceOut','globalInvoicing','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (278,'RoleInherit','*','WRITE','ALLOW','ROLE','grant',NULL);
+INSERT INTO `ACL` VALUES (279,'MailAlias','*','READ','ALLOW','ROLE','marketing',NULL);
+INSERT INTO `ACL` VALUES (283,'EntryObservation','*','*','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (284,'LdapConfig','*','*','ALLOW','ROLE','sysadmin',NULL);
+INSERT INTO `ACL` VALUES (285,'SambaConfig','*','*','ALLOW','ROLE','sysadmin',NULL);
+INSERT INTO `ACL` VALUES (286,'ACL','*','*','ALLOW','ROLE','developer',NULL);
+INSERT INTO `ACL` VALUES (287,'AccessToken','*','*','ALLOW','ROLE','developer',NULL);
+INSERT INTO `ACL` VALUES (293,'RoleInherit','*','*','ALLOW','ROLE','it',NULL);
+INSERT INTO `ACL` VALUES (294,'RoleRole','*','*','ALLOW','ROLE','it',NULL);
+INSERT INTO `ACL` VALUES (295,'AccountConfig','*','*','ALLOW','ROLE','sysadmin',NULL);
+INSERT INTO `ACL` VALUES (296,'Collection','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (297,'Sale','clone','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (298,'InvoiceInDueDay','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (299,'Collection','setSaleQuantity','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (302,'AgencyTerm','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (303,'ClaimLog','*','READ','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (304,'Edi','updateData','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (305,'EducationLevel','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (306,'InvoiceInIntrastat','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (307,'SupplierAgencyTerm','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (308,'InvoiceInIntrastat','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (309,'Zone','getZoneClosing','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (310,'ExpeditionState','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (311,'Expense','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (312,'Expense','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (314,'SupplierActivity','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (315,'SupplierActivity','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (316,'Dms','deleteTrashFiles','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (317,'ClientUnpaid','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (318,'MdbVersion','*','*','ALLOW','ROLE','developer',NULL);
+INSERT INTO `ACL` VALUES (319,'ItemType','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (320,'ItemType','*','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (321,'InvoiceOut','refund','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (322,'InvoiceOut','refund','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (323,'InvoiceOut','refund','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (324,'Ticket','cloneAll','WRITE','ALLOW','ROLE','invoicing',10578);
+INSERT INTO `ACL` VALUES (326,'Ticket','cloneAll','WRITE','ALLOW','ROLE','claimManager',10578);
+INSERT INTO `ACL` VALUES (327,'Sale','clone','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (328,'Sale','clone','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (329,'TicketRefund','*','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (330,'ClaimObservation','*','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (331,'ClaimObservation','*','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (332,'Client','setPassword','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (333,'Client','updateUser','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (334,'ShelvingLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (335,'ZoneExclusionGeo','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (336,'ZoneExclusionGeo','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (337,'Parking','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (338,'Shelving','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (339,'OsTicket','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (340,'OsTicketConfig','*','*','ALLOW','ROLE','it',NULL);
+INSERT INTO `ACL` VALUES (341,'ClientConsumptionQueue','*','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (343,'Ticket','deliveryNoteEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (344,'Ticket','deliveryNoteCsvPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (345,'Ticket','deliveryNoteCsvEmail','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (346,'Client','campaignMetricsPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (347,'Client','campaignMetricsEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (348,'Client','clientWelcomeHtml','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (349,'Client','clientWelcomeEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (350,'Client','creditRequestPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (351,'Client','creditRequestHtml','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (352,'Client','creditRequestEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (353,'Client','printerSetupHtml','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (354,'Client','printerSetupEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (355,'Client','sepaCoreEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (356,'Client','letterDebtorPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (357,'Client','letterDebtorStHtml','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (358,'Client','letterDebtorStEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (359,'Client','letterDebtorNdHtml','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (360,'Client','letterDebtorNdEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (361,'Client','clientDebtStatementPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (362,'Client','clientDebtStatementHtml','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (363,'Client','clientDebtStatementEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (364,'Client','incotermsAuthorizationPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (365,'Client','incotermsAuthorizationHtml','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (366,'Client','incotermsAuthorizationEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (367,'Client','consumptionSendQueued','WRITE','ALLOW','ROLE','system',NULL);
+INSERT INTO `ACL` VALUES (368,'InvoiceOut','invoiceEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (369,'InvoiceOut','exportationPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (370,'InvoiceOut','sendQueued','WRITE','ALLOW','ROLE','system',NULL);
+INSERT INTO `ACL` VALUES (371,'Ticket','invoiceCsvPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (372,'Ticket','invoiceCsvEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (373,'Supplier','campaignMetricsPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (374,'Supplier','campaignMetricsEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (375,'Travel','extraCommunityPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (376,'Travel','extraCommunityEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (377,'Entry','entryOrderPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (378,'OsTicket','osTicketReportEmail','WRITE','ALLOW','ROLE','system',NULL);
+INSERT INTO `ACL` VALUES (379,'Item','buyerWasteEmail','WRITE','ALLOW','ROLE','system',NULL);
+INSERT INTO `ACL` VALUES (380,'Claim','claimPickupPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (381,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (382,'Item','labelPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (383,'Sector','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (384,'Sector','*','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (385,'Route','driverRoutePdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (386,'Route','driverRouteEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (387,'Ticket','deliveryNotePdf','READ','ALLOW','ROLE','$owner',NULL);
+INSERT INTO `ACL` VALUES (388,'Supplier','newSupplier','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (389,'ClaimRma','*','READ','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (390,'ClaimRma','*','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (391,'Notification','*','WRITE','ALLOW','ROLE','system',NULL);
+INSERT INTO `ACL` VALUES (392,'Boxing','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (393,'Url','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (394,'Url','*','WRITE','ALLOW','ROLE','it',NULL);
+INSERT INTO `ACL` VALUES (395,'ItemShelving','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (396,'ItemShelving','*','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (397,'ItemShelvingPlacementSupplyStock','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (398,'NotificationQueue','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (399,'InvoiceOut','clientsToInvoice','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (400,'InvoiceOut','invoiceClient','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (401,'Sale','editTracked','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (402,'Sale','editFloramondo','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (403,'Receipt','balanceCompensationEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (404,'Receipt','balanceCompensationPdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (405,'Ticket','getTicketsFuture','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (406,'Ticket','merge','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (407,'Sale','editFloramondo','WRITE','ALLOW','ROLE','logistic',NULL);
+INSERT INTO `ACL` VALUES (408,'ZipConfig','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (409,'Item','*','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (410,'Sale','editCloned','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (411,'Sale','editCloned','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (414,'MdbVersion','*','READ','ALLOW','ROLE','$everyone',NULL);
+INSERT INTO `ACL` VALUES (416,'TicketLog','getChanges','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (417,'Ticket','getTicketsAdvance','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (418,'EntryLog','*','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (419,'Sale','editTracked','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (420,'MdbBranch','*','READ','ALLOW','ROLE','$everyone',NULL);
+INSERT INTO `ACL` VALUES (421,'ItemShelvingSale','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (422,'Docuware','checkFile','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (423,'Docuware','download','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (424,'Docuware','upload','WRITE','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (425,'Docuware','deliveryNoteEmail','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (426,'TpvTransaction','confirm','WRITE','ALLOW','ROLE','$everyone',NULL);
+INSERT INTO `ACL` VALUES (427,'TpvTransaction','start','WRITE','ALLOW','ROLE','$authenticated',NULL);
+INSERT INTO `ACL` VALUES (428,'TpvTransaction','end','WRITE','ALLOW','ROLE','$authenticated',NULL);
+INSERT INTO `ACL` VALUES (429,'ItemConfig','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (431,'Tag','onSubmit','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (432,'Worker','updateAttributes','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (433,'Worker','createAbsence','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (434,'Worker','updateAbsence','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (435,'Worker','deleteAbsence','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (436,'Worker','new','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (438,'Client','getClientOrSupplierReference','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (439,'NotificationSubscription','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (440,'NotificationAcl','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (441,'MdbApp','*','READ','ALLOW','ROLE','$everyone',NULL);
+INSERT INTO `ACL` VALUES (442,'MdbApp','*','*','ALLOW','ROLE','developer',NULL);
+INSERT INTO `ACL` VALUES (443,'ItemConfig','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (444,'DeviceProduction','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (445,'DeviceProductionModels','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (446,'DeviceProductionState','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (447,'DeviceProductionUser','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (448,'DeviceProduction','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (449,'DeviceProductionModels','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (450,'DeviceProductionState','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (451,'DeviceProductionUser','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (452,'Worker','deallocatePDA','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (453,'Worker','allocatePDA','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (454,'Worker','deallocatePDA','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (455,'Worker','allocatePDA','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (456,'Zone','*','*','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (458,'Operator','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (459,'Operator','*','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (460,'InvoiceIn','getSerial','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (461,'Ticket','saveSign','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (462,'InvoiceOut','negativeBases','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (463,'InvoiceOut','negativeBasesCsv','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (464,'WorkerObservation','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (465,'ClientInforma','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (466,'ClientInforma','*','WRITE','ALLOW','ROLE','financial',NULL);
+INSERT INTO `ACL` VALUES (467,'Receipt','receiptEmail','*','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (468,'Client','setRating','WRITE','ALLOW','ROLE','financial',NULL);
+INSERT INTO `ACL` VALUES (470,'Client','addressesPropagateRe','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (471,'Client','canBeInvoiced','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (472,'Client','canCreateTicket','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (473,'Client','consumption','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (474,'Client','createAddress','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (475,'Client','createWithUser','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (476,'Client','extendedListFilter','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (477,'Client','getAverageInvoiced','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (478,'Client','getCard','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (479,'Client','getDebt','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (480,'Client','getMana','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (481,'Client','transactions','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (482,'Client','hasCustomerRole','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (483,'Client','isValidClient','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (484,'Client','lastActiveTickets','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (485,'Client','sendSms','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (486,'Client','setPassword','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (487,'Client','summary','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (488,'Client','updateAddress','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (489,'Client','updateFiscalData','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (491,'Client','uploadFile','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (492,'Client','campaignMetricsPdf','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (493,'Client','campaignMetricsEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (494,'Client','clientWelcomeHtml','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (495,'Client','clientWelcomeEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (496,'Client','printerSetupHtml','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (497,'Client','printerSetupEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (498,'Client','sepaCoreEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (499,'Client','letterDebtorPdf','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (500,'Client','letterDebtorStHtml','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (501,'Client','letterDebtorStEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (502,'Client','letterDebtorNdHtml','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (503,'Client','letterDebtorNdEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (504,'Client','clientDebtStatementPdf','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (505,'Client','clientDebtStatementHtml','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (506,'Client','clientDebtStatementEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (507,'Client','creditRequestPdf','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (508,'Client','creditRequestHtml','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (509,'Client','creditRequestEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (510,'Client','incotermsAuthorizationPdf','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (511,'Client','incotermsAuthorizationHtml','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (512,'Client','incotermsAuthorizationEmail','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (513,'Client','consumptionSendQueued','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (514,'Client','filter','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (515,'Client','getClientOrSupplierReference','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (516,'Client','upsert','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (518,'Client','replaceById','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (519,'Client','updateAttributes','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (520,'Client','updateAttributes','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (521,'Client','deleteById','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (522,'Client','replaceOrCreate','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (523,'Client','updateAll','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (524,'Client','upsertWithWhere','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (525,'Defaulter','observationEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (527,'VnUser','acl','READ','ALLOW','ROLE','guest',NULL);
+INSERT INTO `ACL` VALUES (528,'VnUser','getCurrentUserData','READ','ALLOW','ROLE','account',NULL);
+INSERT INTO `ACL` VALUES (530,'Account','exists','READ','ALLOW','ROLE','account',NULL);
+INSERT INTO `ACL` VALUES (531,'Account','exists','READ','ALLOW','ROLE','account',NULL);
+INSERT INTO `ACL` VALUES (532,'UserLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (533,'RoleLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (534,'WagonType','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (535,'WagonTypeColor','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (536,'WagonTypeTray','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (537,'WagonConfig','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (538,'CollectionWagon','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (539,'CollectionWagonTicket','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (540,'Wagon','*','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (541,'WagonType','createWagonType','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (542,'WagonType','deleteWagonType','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (543,'WagonType','editWagonType','*','ALLOW','ROLE','productionAssi',NULL);
+INSERT INTO `ACL` VALUES (544,'Docuware','deliveryNoteEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (545,'Agency','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (546,'Agency','seeExpired','READ','ALLOW','ROLE','coolerAssist',NULL);
+INSERT INTO `ACL` VALUES (547,'WorkerLog','models','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (548,'Ticket','editDiscount','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (549,'Ticket','editDiscount','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (550,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (551,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (552,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (553,'Ticket','isRoleAdvanced','*','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (554,'Ticket','deleteTicketWithPartPrepared','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (555,'Ticket','editZone','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (556,'State','editableStates','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (557,'State','seeEditableStates','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (558,'State','seeEditableStates','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (559,'State','isSomeEditable','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (560,'State','isAllEditable','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (561,'State','isAllEditable','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (562,'Agency','seeExpired','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (563,'Agency','seeExpired','READ','ALLOW','ROLE','productionBoss',NULL);
+INSERT INTO `ACL` VALUES (564,'Claim','createAfterDeadline','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (565,'Client','editAddressLogifloraAllowed','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (566,'Client','editFiscalDataWithoutTaxDataCheck','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (567,'Client','editVerifiedDataWithoutTaxDataCheck','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (568,'Client','editCredit','WRITE','ALLOW','ROLE','financialBoss',NULL);
+INSERT INTO `ACL` VALUES (569,'Client','zeroCreditEditor','WRITE','ALLOW','ROLE','financialBoss',NULL);
+INSERT INTO `ACL` VALUES (570,'InvoiceOut','canCreatePdf','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (571,'Supplier','editPayMethodCheck','WRITE','ALLOW','ROLE','financial',NULL);
+INSERT INTO `ACL` VALUES (572,'Worker','isTeamBoss','WRITE','ALLOW','ROLE','teamBoss',NULL);
+INSERT INTO `ACL` VALUES (573,'Worker','forceIsSubordinate','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (574,'Claim','editPickup','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (577,'Claim','findOne','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (579,'Claim','updateClaim','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (580,'Claim','regularizeClaim','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (581,'Claim','updateClaimDestination','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (582,'Claim','downloadFile','READ','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (583,'Claim','deleteById','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (585,'Claim','logs','READ','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (586,'Ticket','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (587,'Ticket','findById','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (588,'Ticket','findOne','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (589,'Ticket','getVolume','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (590,'Ticket','getTotalVolume','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (591,'Ticket','summary','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (592,'Ticket','priceDifference','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (593,'Ticket','componentUpdate','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (594,'Ticket','new','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (595,'Ticket','isEditable','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (596,'Ticket','setDeleted','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (597,'Ticket','restore','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (598,'Ticket','getSales','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (599,'Ticket','getSalesPersonMana','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (600,'Ticket','filter','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (601,'Ticket','makeInvoice','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (602,'Ticket','updateEditableTicket','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (603,'Ticket','updateDiscount','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (604,'Ticket','transferSales','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (605,'Ticket','sendSms','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (606,'Ticket','isLocked','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (607,'Ticket','freightCost','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (608,'Ticket','getComponentsSum','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (609,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','delivery',NULL);
+INSERT INTO `ACL` VALUES (610,'Ticket','deliveryNoteCsv','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (611,'State','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (612,'State','findById','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (613,'State','findOne','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (614,'Worker','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (615,'Worker','findById','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (616,'Worker','findOne','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (617,'Worker','filter','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (618,'Worker','getWorkedHours','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (619,'Worker','active','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (620,'Worker','activeWithRole','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (621,'Worker','uploadFile','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (622,'Worker','contracts','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (623,'Worker','holidays','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (624,'Worker','activeContract','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (625,'Worker','activeWithInheritedRole','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (626,'Ticket','collectionLabel','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (628,'Ticket','expeditionPalletLabel','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (629,'Ticket','editDiscount','WRITE','ALLOW','ROLE','artificialBoss',NULL);
+INSERT INTO `ACL` VALUES (630,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','salesTeamBoss',NULL);
+INSERT INTO `ACL` VALUES (635,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','administrative',19295);
+INSERT INTO `ACL` VALUES (636,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (637,'Claim','downloadFile','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (638,'Agency','seeExpired','READ','ALLOW','ROLE','artificialBoss',NULL);
+INSERT INTO `ACL` VALUES (639,'Agency','seeExpired','READ','ALLOW','ROLE','logisticAssistant',NULL);
+INSERT INTO `ACL` VALUES (654,'Ticket','editZone','WRITE','ALLOW','ROLE','logisticAssistant',NULL);
+INSERT INTO `ACL` VALUES (655,'Entry','addFromPackaging','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (656,'Entry','addFromBuy','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (657,'Supplier','getItemsPackaging','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (658,'Ticket','closeAll','WRITE','ALLOW','ROLE','system',NULL);
+INSERT INTO `ACL` VALUES (659,'Account','*','*','ALLOW','ROLE','developerBoss',NULL);
+INSERT INTO `ACL` VALUES (664,'MailForward','*','*','ALLOW','ROLE','itManagement',NULL);
+INSERT INTO `ACL` VALUES (667,'VnUser','*','*','ALLOW','ROLE','itManagement',NULL);
+INSERT INTO `ACL` VALUES (668,'VnUser','__get__preview','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (669,'VnUser','preview','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (670,'VnUser','create','*','ALLOW','ROLE','itManagement',NULL);
+INSERT INTO `ACL` VALUES (672,'PackingSiteAdvanced','*','*','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (673,'InvoiceOut','makePdfAndNotify','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (674,'InvoiceOutConfig','*','READ','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (676,'Ticket','invoiceTickets','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (680,'MailAliasAccount','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (683,'MailAliasAccount','canEditAlias','WRITE','ALLOW','ROLE','developerBoss',NULL);
+INSERT INTO `ACL` VALUES (684,'WorkerDisableExcluded','*','READ','ALLOW','ROLE','itManagement',NULL);
+INSERT INTO `ACL` VALUES (685,'WorkerDisableExcluded','*','WRITE','ALLOW','ROLE','itManagement',NULL);
+INSERT INTO `ACL` VALUES (686,'MailForward','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (687,'ClientSms','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (688,'ClientSms','create','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (689,'Vehicle','sorted','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (695,'ViaexpressConfig','internationalExpedition','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (696,'ViaexpressConfig','renderer','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (697,'Ticket','transferClient','WRITE','ALLOW','ROLE','claimManager',19295);
+INSERT INTO `ACL` VALUES (698,'Ticket','canEditWeekly','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (699,'TicketSms','find','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (701,'Docuware','upload','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (702,'Ticket','docuwareDownload','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (703,'Worker','search','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (704,'ExpeditionState','addExpeditionState','WRITE','ALLOW','ROLE','delivery',NULL);
+INSERT INTO `ACL` VALUES (705,'SaleGroupDetail','deleteById','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (706,'Ticket','setDeleted','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (707,'DeviceLog','create','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (708,'Collection','getTickets','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (709,'Client','findOne','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (710,'Client','findById','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (711,'Client','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (712,'Client','exists','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (713,'Client','__get__addresses','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (714,'ExpeditionMistakeType','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (715,'WorkerMistakeType','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (716,'ExpeditionMistake','*','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (717,'WorkerMistake','*','WRITE','ALLOW','ROLE','coolerAssist',NULL);
+INSERT INTO `ACL` VALUES (718,'MistakesTypes','*','WRITE','ALLOW','ROLE','coolerAssist',NULL);
+INSERT INTO `ACL` VALUES (719,'MistakeType','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (720,'MachineWorker','*','READ','ALLOW','ROLE','coolerAssist',NULL);
+INSERT INTO `ACL` VALUES (721,'Printer','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (722,'SaleMistake','*','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (723,'Item','setVisibleDiscard','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (724,'Address','getAddress','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (725,'Account','findOne','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (726,'Account','findById','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (727,'Account','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (728,'Account','exists','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (729,'Sale','clone','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (730,'Ticket','setDeleted','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (732,'Sale','isInPreparing','*','ALLOW','ROLE','reviewer',NULL);
+INSERT INTO `ACL` VALUES (733,'Train','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (734,'WorkerDepartment','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (735,'VnUser','higherPrivileges','*','ALLOW','ROLE','itManagement',NULL);
+INSERT INTO `ACL` VALUES (736,'VnUser','mediumPrivileges','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (737,'VnUser','updateUser','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (738,'TicketCollection','*','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (739,'Worker','setPassword','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (740,'Url','getByUser','READ','ALLOW','ROLE','$everyone',NULL);
+INSERT INTO `ACL` VALUES (741,'Claim','__get__lines','READ','ALLOW','ROLE','claimViewer',NULL);
+INSERT INTO `ACL` VALUES (742,'AddressShortage','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (743,'Claim','filter','READ','ALLOW','ROLE','claimViewer',NULL);
+INSERT INTO `ACL` VALUES (744,'Claim','find','READ','ALLOW','ROLE','claimViewer',NULL);
+INSERT INTO `ACL` VALUES (745,'Claim','findById','READ','ALLOW','ROLE','claimViewer',NULL);
+INSERT INTO `ACL` VALUES (746,'Claim','getSummary','READ','ALLOW','ROLE','claimViewer',NULL);
+INSERT INTO `ACL` VALUES (747,'CplusRectificationType','*','READ','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (748,'SiiTypeInvoiceOut','*','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (749,'InvoiceCorrectionType','*','READ','ALLOW','ROLE','salesPerson',NULL);
+INSERT INTO `ACL` VALUES (750,'InvoiceOut','transfer','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (751,'Application','executeProc','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (752,'Application','executeFunc','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (753,'NotificationSubscription','getList','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (754,'Route','find','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (755,'Route','findById','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (756,'Route','findOne','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (757,'Route','getRoutesByWorker','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (758,'Route','canViewAllRoute','READ','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (759,'Route','cmr','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (760,'Route','downloadCmrsZip','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (761,'Route','downloadZip','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (762,'Route','filter','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (763,'Route','getByWorker','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (764,'Route','getDeliveryPoint','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (765,'Route','cmrs','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (766,'Route','getSuggestedTickets','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (767,'Route','getTickets','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (768,'Route','guessPriority','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (769,'Route','insertTicket','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (770,'Route','getDeliveryPoint','READ','ALLOW','ROLE','deliveryBoss',NULL);
+INSERT INTO `ACL` VALUES (771,'Route','summary','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (772,'Route','getExpeditionSummary','READ','ALLOW','ROLE','delivery',NULL);
+INSERT INTO `ACL` VALUES (773,'WorkerTimeControl','login','READ','ALLOW','ROLE','timeControl',NULL);
+INSERT INTO `ACL` VALUES (774,'WorkerTimeControl','getClockIn','READ','ALLOW','ROLE','timeControl',NULL);
+INSERT INTO `ACL` VALUES (775,'WorkerTimeControl','clockIn','WRITE','ALLOW','ROLE','timeControl',NULL);
+INSERT INTO `ACL` VALUES (776,'WorkerTimeControl','addTimeEntry','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (777,'WorkerTimeControl','deleteTimeEntry','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (778,'WorkerTimeControl','updateTimeEntry','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (779,'WorkerTimeControl','sendMail','WRITE','ALLOW','ROLE','developer',NULL);
+INSERT INTO `ACL` VALUES (780,'WorkerTimeControl','updateMailState','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (781,'WorkerTimeControl','weeklyHourRecordEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (782,'WorkerTimeControl','getMailStates','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (783,'WorkerTimeControl','resendWeeklyHourEmail','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (784,'VnRole','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (785,'VnRole','*','WRITE','ALLOW','ROLE','it',NULL);
+INSERT INTO `ACL` VALUES (786,'State','isAllEditable','READ','ALLOW','ROLE','delivery',NULL);
+INSERT INTO `ACL` VALUES (787,'Ticket','makePdfList','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (788,'Ticket','invoiceTicketsAndPdf','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (789,'InvoiceIn','*','READ','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (790,'InvoiceIn','getSerial','READ','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (791,'InvoiceIn','corrective','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (792,'InvoiceInCorrection','*','*','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (793,'Supplier','updateAllFiscalData','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (794,'Supplier','updateFiscalData','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (795,'Ticket','myLastModified','*','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (796,'MrwConfig','cancelShipment','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (797,'MrwConfig','createShipment','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (798,'MailAliasAccount','*','*','ALLOW','ROLE','itManagement',NULL);
+INSERT INTO `ACL` VALUES (799,'Ticket','saveCmr','*','ALLOW','ROLE','developer',NULL);
+INSERT INTO `ACL` VALUES (800,'EntryDms','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (801,'MailAliasAccount','create','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (802,'MailAliasAccount','deleteById','WRITE','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (804,'DeviceProduction','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (805,'Collection','assign','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (806,'ExpeditionPallet','getPallet','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (807,'MachineWorker','updateInTime','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (808,'MobileAppVersionControl','getVersion','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (809,'SaleTracking','delete','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (810,'SaleTracking','updateTracking','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (811,'SaleTracking','setPicked','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (813,'Sale','getFromSectorCollection','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (814,'ItemBarcode','delete','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (815,'WorkerActivityType','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (816,'WorkerActivity','*','*','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (817,'ParkingLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (818,'ExpeditionPallet','*','*','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (819,'Ticket','addSaleByCode','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (820,'TicketCollection','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (822,'SupplierDms','*','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (823,'MailAlias','*','*','ALLOW','ROLE','developerBoss',NULL);
+INSERT INTO `ACL` VALUES (824,'ItemShelving','hasItemOlder','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (825,'Application','getEnumValues','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (826,'Ticket','editZone','WRITE','ALLOW','ROLE','salesAssistant',NULL);
+INSERT INTO `ACL` VALUES (827,'TicketWeekly','deleteById','WRITE','ALLOW','ROLE','buyerBoss',NULL);
+INSERT INTO `ACL` VALUES (828,'TicketWeekly','upsert','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (830,'InvoiceIn','*','READ','ALLOW','ROLE','deliveryBoss',NULL);
+INSERT INTO `ACL` VALUES (831,'InvoiceIn','exchangeRateUpdate','*','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (832,'AgencyLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (833,'AgencyWorkCenter','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (835,'Agency','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (836,'Agency','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (837,'AgencyWorkCenter','*','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (838,'Worker','getAvailablePda','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (839,'Locker','__get__codes','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (840,'Locker','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (841,'Locker','*','*','ALLOW','ROLE','productionBoss',NULL);
+INSERT INTO `ACL` VALUES (842,'Worker','__get__locker','READ','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (843,'Worker','__get__locker','READ','ALLOW','ROLE','productionBoss',NULL);
+INSERT INTO `ACL` VALUES (846,'Ticket','cloneAll','WRITE','ALLOW','ROLE','logistic',10578);
+INSERT INTO `ACL` VALUES (847,'RouteConfig','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (848,'InvoiceIn','updateInvoiceIn','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (849,'InvoiceIn','clone','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (850,'InvoiceIn','corrective','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (851,'InvoiceIn','exchangeRateUpdate','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (852,'InvoiceIn','invoiceInEmail','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (853,'InvoiceIn','toBook','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (854,'InvoiceIn','toUnbook','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (855,'InvoiceIn','deleteById','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (856,'InvoiceIn','updateInvoiceIn','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (857,'InvoiceIn','clone','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (858,'InvoiceIn','corrective','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (859,'InvoiceIn','exchangeRateUpdate','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (860,'InvoiceIn','invoiceInEmail','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (861,'InvoiceIn','toBook','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (862,'InvoiceIn','deleteById','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (863,'InvoiceIn','create','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (864,'InvoiceIn','create','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (865,'Ticket','deliveryNotePdf','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (866,'InvoiceOut','download','READ','ALLOW','ROLE','$owner',NULL);
+INSERT INTO `ACL` VALUES (867,'InvoiceIn','*','READ','ALLOW','ROLE','maintenanceBoss',NULL);
+INSERT INTO `ACL` VALUES (868,'InvoiceIn','*','READ','ALLOW','ROLE','maintenanceBos',NULL);
+INSERT INTO `ACL` VALUES (869,'Ticket','editZone','WRITE','ALLOW','ROLE','buyer',NULL);
+INSERT INTO `ACL` VALUES (870,'Entry','find','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (871,'RoadmapAddress','*','WRITE','ALLOW','ROLE','palletizerBoss',NULL);
+INSERT INTO `ACL` VALUES (872,'RoadmapAddress','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (873,'Roadmap','*','WRITE','ALLOW','ROLE','palletizerBoss',NULL);
+INSERT INTO `ACL` VALUES (874,'Roadmap','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (875,'RoadmapStop','*','WRITE','ALLOW','ROLE','palletizerBoss',NULL);
+INSERT INTO `ACL` VALUES (876,'RoadmapStop','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (877,'TravelKgPercentage','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (878,'MrwConfig','getLabel','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (879,'AgencyMode','*','*','ALLOW','ROLE','deliveryAssistant',NULL);
+INSERT INTO `ACL` VALUES (880,'Collection','assignCollection','WRITE','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (881,'TrainingCourse','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (882,'TrainingCourseType','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (883,'TrainingCenter','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (884,'Worker','__get__trainingCourse','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (885,'WorkerTimeControl','addTimeEntry','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (886,'WorkerTimeControl','deleteTimeEntry','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (887,'WorkerTimeControl','updateTimeEntry','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (888,'WorkerTimeControl','weeklyHourRecordEmail','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (889,'WorkerTimeControl','sendMail','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (890,'WorkerTimeControl','updateMailState','WRITE','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (891,'TravelKgPercentage','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (892,'WorkerIncome','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (893,'PayrollComponent','*','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (894,'Worker','__get__incomes','*','ALLOW','ROLE','hr',NULL);
+INSERT INTO `ACL` VALUES (895,'ItemShelvingLog','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (897,'WorkerLog','*','READ','ALLOW','ROLE','employee',NULL);
+INSERT INTO `ACL` VALUES (901,'WorkerTimeControl','sendMail','WRITE','ALLOW','ROLE','system',NULL);
+INSERT INTO `ACL` VALUES (902,'Entry','filter','READ','ALLOW','ROLE','supplier',NULL);
+INSERT INTO `ACL` VALUES (903,'Entry','getBuys','READ','ALLOW','ROLE','supplier',NULL);
+INSERT INTO `ACL` VALUES (904,'Entry','buyLabel','READ','ALLOW','ROLE','supplier',NULL);
+INSERT INTO `ACL` VALUES (905,'AddressWaste','*','READ','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (906,'Entry','print','READ','ALLOW','ROLE','supplier',NULL);
+INSERT INTO `ACL` VALUES (907,'Expedition_PrintOut','*','*','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (908,'Docuware','upload','WRITE','ALLOW','ROLE','hrBuyer',13657);
INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee');
INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee');
@@ -2104,11 +2191,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 */;
@@ -2120,9 +2207,10 @@ USE `vn`;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
INSERT INTO `alertLevel` VALUES ('FREE',0,1);
-INSERT INTO `alertLevel` VALUES ('ON_PREPARATION',1,1);
-INSERT INTO `alertLevel` VALUES ('PACKED',2,0);
-INSERT INTO `alertLevel` VALUES ('DELIVERED',3,0);
+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);
INSERT INTO `bookingPlanner` VALUES (5,'2017-07-01 00:00:00','4770000002','WORLD',7,4,1);
INSERT INTO `bookingPlanner` VALUES (6,'2017-07-01 00:00:00','4770000010','NATIONAL',3,1,1);
@@ -2313,26 +2401,24 @@ INSERT INTO `component` VALUES (39,'maná auto',7,NULL,NULL,1,'autoMana',0);
INSERT INTO `component` VALUES (40,'cambios Santos 2016',4,NULL,NULL,1,NULL,0);
INSERT INTO `component` VALUES (41,'bonificacion porte',6,NULL,NULL,1,'freightCharge',0);
INSERT INTO `component` VALUES (42,'promocion Francia',4,NULL,NULL,1,'frenchOffer',0);
-INSERT INTO `component` VALUES (43,'promocion Floramondo',4,NULL,NULL,1,'floramondoPromo',0);
INSERT INTO `component` VALUES (44,'rappel cadena',2,NULL,NULL,1,'rappel',0);
INSERT INTO `component` VALUES (45,'maná reclamacion',7,4,NULL,0,'manaClaim',0);
INSERT INTO `component` VALUES (46,'recargo a particular',2,NULL,0.25,0,'individual',0);
-INSERT INTO `component` VALUES (47,'promocion Italia',4,NULL,NULL,1,'italianOffer',0);
INSERT INTO `component` VALUES (48,'fusión de lineas',4,NULL,NULL,1,'lineFusion',0);
INSERT INTO `component` VALUES (49,'sustitución',4,NULL,NULL,1,'substitution',0);
-INSERT INTO `componentType` VALUES (1,'coste',1,0,'COST');
-INSERT INTO `componentType` VALUES (2,'com ventas',1,1,NULL);
-INSERT INTO `componentType` VALUES (3,'com compras',1,1,NULL);
-INSERT INTO `componentType` VALUES (4,'empresa',1,1,'MARGIN');
-INSERT INTO `componentType` VALUES (5,'cliente',0,0,NULL);
-INSERT INTO `componentType` VALUES (6,'agencia',0,0,'FREIGHT');
-INSERT INTO `componentType` VALUES (7,'cartera_comercial',0,0,'MANA');
-INSERT INTO `componentType` VALUES (8,'cartera_producto',0,1,NULL);
-INSERT INTO `componentType` VALUES (9,'maniobra',1,0,NULL);
-INSERT INTO `componentType` VALUES (10,'cartera_comprador',0,1,NULL);
-INSERT INTO `componentType` VALUES (11,'errores',0,1,NULL);
-INSERT INTO `componentType` VALUES (12,'otros',0,1,NULL);
+INSERT INTO `componentType` VALUES (1,'cost','coste',1,0);
+INSERT INTO `componentType` VALUES (2,NULL,'com ventas',1,1);
+INSERT INTO `componentType` VALUES (3,NULL,'com compras',1,1);
+INSERT INTO `componentType` VALUES (4,'margin','empresa',1,1);
+INSERT INTO `componentType` VALUES (5,NULL,'cliente',0,0);
+INSERT INTO `componentType` VALUES (6,'freight','agencia',0,0);
+INSERT INTO `componentType` VALUES (7,'mana','cartera_comercial',0,0);
+INSERT INTO `componentType` VALUES (8,NULL,'cartera_producto',0,1);
+INSERT INTO `componentType` VALUES (9,NULL,'maniobra',1,0);
+INSERT INTO `componentType` VALUES (10,NULL,'cartera_comprador',0,1);
+INSERT INTO `componentType` VALUES (11,NULL,'errores',0,1);
+INSERT INTO `componentType` VALUES (12,'other','otros',0,1);
INSERT INTO `continent` VALUES (1,'Asia','AS');
INSERT INTO `continent` VALUES (2,'América','AM');
@@ -2340,61 +2426,62 @@ INSERT INTO `continent` VALUES (3,'África','AF');
INSERT INTO `continent` VALUES (4,'Europa','EU');
INSERT INTO `continent` VALUES (5,'Oceanía','OC');
-INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,110,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,3,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (23,'CMA','CAMARA',13,14,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (31,'it','INFORMATICA',4,5,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',6,7,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (35,'finance','FINANZAS',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,'begonya@verdnatura.es',1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (36,'labor','LABORAL',10,11,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',12,35,NULL,72,1,1,1,11,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (38,'picking','SACADO',15,16,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (39,'packing','ENCAJADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',36,37,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (43,'VT','VENTAS',38,69,NULL,0,0,0,1,15,1,'/1/',NULL,1,'',1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (44,'management','GERENCIA',70,71,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',72,73,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',74,75,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',76,77,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',78,79,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',80,81,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACIÓN',39,40,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',82,83,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (55,NULL,'TALLER NATURAL',19,20,14548,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (56,NULL,'TALLER ARTIFICIAL',21,22,8470,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1927,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (58,'CMP','CAMPOS',84,87,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',88,89,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',41,42,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,1,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (61,NULL,'VNH',90,93,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',94,95,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (68,NULL,'COMPLEMENTOS',23,24,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',96,97,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPAÑA 5',43,44,4250,0,0,0,2,0,43,'/1/43/','es5_equipo',1,'es5@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
-INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',98,99,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (89,NULL,'COORDINACION',100,101,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (90,NULL,'TRAILER',91,92,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',25,26,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',45,46,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',47,48,3797,0,0,0,2,0,43,'/1/43/','es2_equipo',1,'es2@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
-INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',49,50,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',1,'es1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
-INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',51,52,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',53,54,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCUÑANA',55,56,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',102,103,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPAÑA 3',57,58,1118,0,0,0,2,0,43,'/1/43/','es3_equipo',1,'es3@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
-INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',27,28,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',29,30,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (130,NULL,'REVISION',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',85,86,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',59,60,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (133,'franceTeam','EQUIPO FRANCIA',61,62,1731,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL);
-INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',63,64,6264,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL);
-INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',104,105,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',106,107,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (137,'sorter','SORTER',108,109,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPAÑA 4',65,66,3803,0,0,0,2,0,43,'/1/43/','es4_equipo',1,'es4@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
-INSERT INTO `department` VALUES (140,'hollandTeam','EQUIPO HOLANDA',67,68,NULL,0,0,0,2,0,43,'/1/43/','nl_equipo',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (141,NULL,'PREVIA',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,112,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,5,NULL,72,0,0,1,1,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (23,'CMA','CAMARA',15,16,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,'PREVIOUS');
+INSERT INTO `department` VALUES (31,'it','INFORMATICA',6,7,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (35,'finance','FINANZAS',10,11,NULL,0,0,0,1,0,1,'/1/',NULL,1,'begonya@verdnatura.es',1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (36,'labor','LABORAL',12,13,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,37,NULL,72,1,1,1,11,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_PREPARATION');
+INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PACKING');
+INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',38,39,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,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,0,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,'DELIVERY');
+INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',78,79,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE');
+INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',80,81,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',82,83,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACIÓN',41,42,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',84,85,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (55,NULL,'TALLER NATURAL',21,22,14548,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (56,NULL,'TALLER ARTIFICIAL',23,24,8470,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1927,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (58,'CMP','CAMPOS',86,89,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD');
+INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',90,91,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',43,44,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,1,1,0,0,NULL,NULL,NULL,'CLAIM');
+INSERT INTO `department` VALUES (61,NULL,'VNH',92,95,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',96,97,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (68,NULL,'COMPLEMENTOS',25,26,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',98,99,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPAÑA 5',45,46,4250,0,0,0,2,0,43,'/1/43/','es5_equipo',1,'es5@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
+INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',100,101,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (89,NULL,'COORDINACION',102,103,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (90,NULL,'TRAILER',93,94,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',27,28,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PREVIOUS');
+INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',47,48,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',49,50,3797,0,0,0,2,0,43,'/1/43/','es2_equipo',1,'es2@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
+INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',51,52,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',1,'es1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
+INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',53,54,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',55,56,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCUÑANA',57,58,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',104,105,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPAÑA 3',59,60,1118,0,0,0,2,0,43,'/1/43/','es3_equipo',1,'es3@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
+INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',29,30,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PALLETIZING');
+INSERT INTO `department` VALUES (130,NULL,'REVISION',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_CHECKING');
+INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',87,88,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',61,62,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (133,'franceTeam','EQUIPO FRANCIA',63,64,1731,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL);
+INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',65,66,6264,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL);
+INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',106,107,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',108,109,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (137,'sorter','SORTER',110,111,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPAÑA 4',67,68,3803,0,0,0,2,0,43,'/1/43/','es4_equipo',1,'es4@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
+INSERT INTO `department` VALUES (140,'hollandTeam','EQUIPO HOLANDA',69,70,NULL,0,0,0,2,0,43,'/1/43/','nl_equipo',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (141,NULL,'PREVIA',35,36,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (146,NULL,'VERDNACOLOMBIA',3,4,NULL,72,0,0,2,0,22,'/1/22/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `docuware` VALUES (1,'deliveryNote','Albaranes cliente','find','find','N__ALBAR_N',NULL);
INSERT INTO `docuware` VALUES (2,'deliveryNote','Albaranes cliente','store','Archivar','N__ALBAR_N',NULL);
@@ -2486,208 +2573,44 @@ INSERT INTO `siiTypeInvoiceOut` VALUES (7,'R3','Factura rectificativa (Art. 80.4
INSERT INTO `siiTypeInvoiceOut` VALUES (8,'R4','Factura rectificativa (Resto)');
INSERT INTO `siiTypeInvoiceOut` VALUES (9,'R5','Factura rectificativa en facturas simplificadas');
-INSERT INTO `silexACL` VALUES (1,'workerTimeControl','clockIn','$everyone');
-INSERT INTO `silexACL` VALUES (2,'workerTimeControl','getClockIn','$everyone');
-INSERT INTO `silexACL` VALUES (3,'workerTimeControl','login','$everyone');
-INSERT INTO `silexACL` VALUES (4,'security','device_checkLogin','employee');
-INSERT INTO `silexACL` VALUES (5,'security','getVersion','employee');
-INSERT INTO `silexACL` VALUES (6,'security','login','employee');
-INSERT INTO `silexACL` VALUES (7,'delivery','addNote','employee');
-INSERT INTO `silexACL` VALUES (8,'delivery','expeditionState_add','employee');
-INSERT INTO `silexACL` VALUES (9,'delivery','expeditionState_addByExpedition','employee');
-INSERT INTO `silexACL` VALUES (10,'delivery','expeditionState_addByExpeditionMulti','employee');
-INSERT INTO `silexACL` VALUES (11,'delivery','expeditionState_addByRoute','employee');
-INSERT INTO `silexACL` VALUES (12,'delivery','expedition_getLog','employee');
-INSERT INTO `silexACL` VALUES (13,'delivery','getExpeditionFromRoute','employee');
-INSERT INTO `silexACL` VALUES (14,'delivery','getInfo','employee');
-INSERT INTO `silexACL` VALUES (15,'delivery','getInfoCompany','employee');
-INSERT INTO `silexACL` VALUES (16,'delivery','getInfoFreelance','employee');
-INSERT INTO `silexACL` VALUES (17,'delivery','getWorkers','employee');
-INSERT INTO `silexACL` VALUES (18,'delivery','get_routes','employee');
-INSERT INTO `silexACL` VALUES (19,'delivery','get_tickets','employee');
-INSERT INTO `silexACL` VALUES (20,'delivery','get_version','employee');
-INSERT INTO `silexACL` VALUES (21,'delivery','saveLoadersWorkers','employee');
-INSERT INTO `silexACL` VALUES (22,'delivery','save_sign','employee');
-INSERT INTO `silexACL` VALUES (23,'delivery','setRouteOk','employee');
-INSERT INTO `silexACL` VALUES (24,'delivery','updateExpeditionChecked','employee');
-INSERT INTO `silexACL` VALUES (25,'delivery','update_routes','employee');
-INSERT INTO `silexACL` VALUES (26,'almacennew','barcodes_edit','employee');
-INSERT INTO `silexACL` VALUES (27,'almacennew','barcodeToItem','employee');
-INSERT INTO `silexACL` VALUES (28,'almacennew','buffer_setTypeByName','employee');
-INSERT INTO `silexACL` VALUES (29,'almacennew','buy_updateGrouping','employee');
-INSERT INTO `silexACL` VALUES (30,'almacennew','buy_updatePacking','employee');
-INSERT INTO `silexACL` VALUES (31,'almacennew','checkRouteExpeditionScanPut','employee');
-INSERT INTO `silexACL` VALUES (32,'almacennew','clearShelvingList','employee');
-INSERT INTO `silexACL` VALUES (33,'almacennew','collectionAddItem','employee');
-INSERT INTO `silexACL` VALUES (34,'almacennew','collectionGet','employee');
-INSERT INTO `silexACL` VALUES (35,'almacennew','collectionIncreaseQuantity','employee');
-INSERT INTO `silexACL` VALUES (36,'almacennew','collectionMissingTrash','employee');
-INSERT INTO `silexACL` VALUES (37,'almacennew','collectionNew','employee');
-INSERT INTO `silexACL` VALUES (38,'almacennew','collectionStickerPrint','employee');
-INSERT INTO `silexACL` VALUES (39,'almacennew','collection_getTickets','employee');
-INSERT INTO `silexACL` VALUES (40,'almacennew','collection_printSticker','employee');
-INSERT INTO `silexACL` VALUES (41,'almacennew','department_getHasMistake','employee');
-INSERT INTO `silexACL` VALUES (42,'almacennew','deviceLog_add','employee');
-INSERT INTO `silexACL` VALUES (43,'almacennew','deviceProductionUser_getWorker','employee');
-INSERT INTO `silexACL` VALUES (44,'almacennew','deviceProduction_getnameDevice','employee');
-INSERT INTO `silexACL` VALUES (45,'almacennew','expeditionLoading_add','employee');
-INSERT INTO `silexACL` VALUES (46,'almacennew','expeditionPalletDel','employee');
-INSERT INTO `silexACL` VALUES (47,'almacennew','expeditionPalletList','employee');
-INSERT INTO `silexACL` VALUES (48,'almacennew','expeditionPalletPrintSet','employee');
-INSERT INTO `silexACL` VALUES (49,'almacennew','expeditionPalletView','employee');
-INSERT INTO `silexACL` VALUES (50,'almacennew','expeditionScanAdd','employee');
-INSERT INTO `silexACL` VALUES (51,'almacennew','expeditionScanDel','employee');
-INSERT INTO `silexACL` VALUES (52,'almacennew','expeditionScanList','employee');
-INSERT INTO `silexACL` VALUES (53,'almacennew','expeditionScanPut','employee');
-INSERT INTO `silexACL` VALUES (54,'almacennew','expeditionState_addByPallet','employee');
-INSERT INTO `silexACL` VALUES (55,'almacennew','expeditionTruckAdd','employee');
-INSERT INTO `silexACL` VALUES (56,'almacennew','expeditionTruckList','employee');
-INSERT INTO `silexACL` VALUES (57,'almacennew','expedition_getState','employee');
-INSERT INTO `silexACL` VALUES (58,'almacennew','expedition_scan','employee');
-INSERT INTO `silexACL` VALUES (59,'almacennew','faultsReview','employee');
-INSERT INTO `silexACL` VALUES (60,'almacennew','faultsReview_isChecked','employee');
-INSERT INTO `silexACL` VALUES (61,'almacennew','getItemUbication','employee');
-INSERT INTO `silexACL` VALUES (62,'almacennew','get_ItemPackingType','employee');
-INSERT INTO `silexACL` VALUES (63,'almacennew','itemDiary','employee');
-INSERT INTO `silexACL` VALUES (64,'almacennew','itemPlacementSupplyAiming','employee');
-INSERT INTO `silexACL` VALUES (65,'almacennew','itemPlacementSupplyCloseOrder','employee');
-INSERT INTO `silexACL` VALUES (66,'almacennew','itemPlacementSupplyGetOrder','employee');
-INSERT INTO `silexACL` VALUES (68,'almacennew','itemShelvingBuyerGet','employee');
-INSERT INTO `silexACL` VALUES (69,'almacennew','itemShelvingBuyerTask','employee');
-INSERT INTO `silexACL` VALUES (70,'almacennew','itemShelvingDelete','employee');
-INSERT INTO `silexACL` VALUES (71,'almacennew','itemShelvingList','employee');
-INSERT INTO `silexACL` VALUES (72,'almacennew','itemShelvingLog_get','employee');
-INSERT INTO `silexACL` VALUES (73,'almacennew','itemShelvingMake','employee');
-INSERT INTO `silexACL` VALUES (74,'almacennew','itemShelvingMakeEdit','employee');
-INSERT INTO `silexACL` VALUES (75,'almacennew','itemShelvingMake_multi','employee');
-INSERT INTO `silexACL` VALUES (76,'almacennew','itemShelvingPlacementSupplyAdd','employee');
-INSERT INTO `silexACL` VALUES (77,'almacennew','itemShelvingSaleSupplyAdd','employee');
-INSERT INTO `silexACL` VALUES (78,'almacennew','itemShelvingStarsUpdate','employee');
-INSERT INTO `silexACL` VALUES (79,'almacennew','itemShelvingTransfer','employee');
-INSERT INTO `silexACL` VALUES (80,'almacennew','itemShelving_addByClaim','employee');
-INSERT INTO `silexACL` VALUES (81,'almacennew','itemShelving_filterBuyer','employee');
-INSERT INTO `silexACL` VALUES (82,'almacennew','itemShelving_getSaleDate','employee');
-INSERT INTO `silexACL` VALUES (83,'almacennew','itemTrash','employee');
-INSERT INTO `silexACL` VALUES (84,'almacennew','item_card','employee');
-INSERT INTO `silexACL` VALUES (85,'almacennew','item_getSimilar','employee');
-INSERT INTO `silexACL` VALUES (86,'almacennew','item_placement_save','employee');
-INSERT INTO `silexACL` VALUES (87,'almacennew','item_saveReference','employee');
-INSERT INTO `silexACL` VALUES (88,'almacennew','item_updatePackingShelve','employee');
-INSERT INTO `silexACL` VALUES (89,'almacennew','machineWorker_add','employee');
-INSERT INTO `silexACL` VALUES (90,'almacennew','machineWorker_getHistorical','employee');
-INSERT INTO `silexACL` VALUES (91,'almacennew','machineWorker_update','employee');
-INSERT INTO `silexACL` VALUES (92,'almacennew','machineWorker_Worker','employee');
-INSERT INTO `silexACL` VALUES (93,'almacennew','machine_checkPlate','employee');
-INSERT INTO `silexACL` VALUES (94,'almacennew','machine_getWorkerPlate','employee');
-INSERT INTO `silexACL` VALUES (95,'almacennew','mistakeType','employee');
-INSERT INTO `silexACL` VALUES (96,'almacennew','printer_get','employee');
-INSERT INTO `silexACL` VALUES (97,'almacennew','qr_getCall','developer');
-INSERT INTO `silexACL` VALUES (98,'almacennew','saleMistakeAdd','employee');
-INSERT INTO `silexACL` VALUES (99,'almacennew','saleMove','employee');
-INSERT INTO `silexACL` VALUES (100,'almacennew','saleParking_add','employee');
-INSERT INTO `silexACL` VALUES (101,'almacennew','saleTrackingDel','employee');
-INSERT INTO `silexACL` VALUES (102,'almacennew','saleTrackingReplace','employee');
-INSERT INTO `silexACL` VALUES (103,'almacennew','saleTracking_add','employee');
-INSERT INTO `silexACL` VALUES (104,'almacennew','saleTracking_addPrevOK','employee');
-INSERT INTO `silexACL` VALUES (105,'almacennew','saleTracking_updateIsChecked','employee');
-INSERT INTO `silexACL` VALUES (106,'almacennew','sectorCollectionSaleGroup_add','employee');
-INSERT INTO `silexACL` VALUES (107,'almacennew','sectorCollection_get','employee');
-INSERT INTO `silexACL` VALUES (108,'almacennew','sectorCollection_getSale','employee');
-INSERT INTO `silexACL` VALUES (109,'almacennew','sectorCollection_new','employee');
-INSERT INTO `silexACL` VALUES (110,'almacennew','sector_get','employee');
-INSERT INTO `silexACL` VALUES (111,'almacennew','shelvingChange','employee');
-INSERT INTO `silexACL` VALUES (112,'almacennew','shelvingLog_get','employee');
-INSERT INTO `silexACL` VALUES (113,'almacennew','shelvingPark','employee');
-INSERT INTO `silexACL` VALUES (114,'almacennew','shelvingParking_get','employee');
-INSERT INTO `silexACL` VALUES (115,'almacennew','shelvingPriorityUpdate','employee');
-INSERT INTO `silexACL` VALUES (116,'almacennew','sip_getExtension','employee');
-INSERT INTO `silexACL` VALUES (117,'almacennew','ticketCollection_setUsedShelves','employee');
-INSERT INTO `silexACL` VALUES (118,'almacennew','ticketOrCollection_checkFullyControlled','employee');
-INSERT INTO `silexACL` VALUES (119,'almacennew','ticketToPrePrepare','employee');
-INSERT INTO `silexACL` VALUES (120,'almacennew','ticket_checkFullyControlled','employee');
-INSERT INTO `silexACL` VALUES (121,'almacennew','ticket_setState','employee');
-INSERT INTO `silexACL` VALUES (122,'almacennew','update_ItemPackingType','employee');
-INSERT INTO `silexACL` VALUES (123,'almacennew','workerMachinery_isRegistered','employee');
-INSERT INTO `silexACL` VALUES (124,'almacennew','workerMistakeType_get','employee');
-INSERT INTO `silexACL` VALUES (125,'almacennew','workerMistake_Add','coolerBoss');
-INSERT INTO `silexACL` VALUES (126,'almacennew','workerShelving_add','employee');
-INSERT INTO `silexACL` VALUES (127,'almacennew','workerShelving_delete','employee');
-INSERT INTO `silexACL` VALUES (128,'almacennew','worker_getFromHasMistake','employee');
-INSERT INTO `silexACL` VALUES (129,'almacennew','worker_getId','employee');
-INSERT INTO `silexACL` VALUES (130,'almacennew','worker_getPrinter','employee');
-INSERT INTO `silexACL` VALUES (131,'almacennew','worker_getSector','employee');
-INSERT INTO `silexACL` VALUES (132,'almacennew','worker_updatePrinter','employee');
-INSERT INTO `silexACL` VALUES (133,'almacennew','worker_updateSector','employee');
-INSERT INTO `silexACL` VALUES (134,'almacennew','itemShelving_updateFromSale','employee');
-INSERT INTO `silexACL` VALUES (135,'almacennew','collection_getUncheckedTicket','employee');
-INSERT INTO `silexACL` VALUES (136,'almacennew','itemShelving_return','employee');
-INSERT INTO `silexACL` VALUES (137,'almacennew','itemShelving_merge','employee');
-INSERT INTO `silexACL` VALUES (139,'delivery','get_expeditionsSummary','employee');
-INSERT INTO `silexACL` VALUES (140,'almacennew','cmrExpeditionPallet_add','employee');
-INSERT INTO `silexACL` VALUES (141,'delivery','route_getExpeditionSummary','employee');
-INSERT INTO `silexACL` VALUES (142,'almacennew','item_saveStems','employee');
-INSERT INTO `silexACL` VALUES (143,'almacennew','debug_add','employee');
-INSERT INTO `silexACL` VALUES (144,'almacennew','operator_getNumberOfWagons','employee');
-INSERT INTO `silexACL` VALUES (145,'almacennew','operator_add','employee');
-INSERT INTO `silexACL` VALUES (146,'almacennew','expeditionPallet_get','employee');
-INSERT INTO `silexACL` VALUES (147,'almacennew','worker_isF11Allowed','employee');
-INSERT INTO `silexACL` VALUES (148,'almacennew','train_get','employee');
-INSERT INTO `silexACL` VALUES (149,'almacennew','saleTracking_mark','employee');
-INSERT INTO `silexACL` VALUES (150,'almacennew','operator_updateItemPackingType','employee');
-INSERT INTO `silexACL` VALUES (151,'almacennew','operator_updateTrain','employee');
-INSERT INTO `silexACL` VALUES (152,'almacennew','operator_getTrain','employee');
-INSERT INTO `silexACL` VALUES (153,'almacennew','operator_getItemPackingType','employee');
-INSERT INTO `silexACL` VALUES (154,'almacennew','collection_assign','employee');
-INSERT INTO `silexACL` VALUES (155,'almacennew','itemPacking_get','employee');
-INSERT INTO `silexACL` VALUES (156,'almacennew','shelvingLog_add','employee');
-INSERT INTO `silexACL` VALUES (157,'almacennew','collection_get','employee');
-INSERT INTO `silexACL` VALUES (158,'delivery','get_routesFromExpedition','employee');
-INSERT INTO `silexACL` VALUES (160,'almacennew','expeditionMistakeType_get','employee');
-INSERT INTO `silexACL` VALUES (161,'almacennew','expeditionMistake_add','employee');
-INSERT INTO `silexACL` VALUES (162,'almacennew','itemShelving_addList','employee');
-INSERT INTO `silexACL` VALUES (163,'almacennew','cmrPallet_add','employee');
-INSERT INTO `silexACL` VALUES (164,'almacennew','ticket_isOutClosureZone','employee');
-INSERT INTO `silexACL` VALUES (165,'almacennew','itemShelving_selfConsumption','employee');
-INSERT INTO `silexACL` VALUES (166,'almacennew','ticket_printLabelPrevious','employee');
-INSERT INTO `silexACL` VALUES (167,'almacennew','travel_updatePacking','employee');
-INSERT INTO `silexACL` VALUES (168,'app','status','$everyone');
-
INSERT INTO `state` VALUES (1,'Arreglar',2,0,'FIXING',NULL,1,0,0,0,0,0,0,4,1,'alert');
INSERT INTO `state` VALUES (2,'Libre',2,0,'FREE',NULL,2,0,0,0,0,0,0,4,1,'notice');
INSERT INTO `state` VALUES (3,'OK',3,0,'OK',3,28,1,0,0,0,1,1,3,0,'success');
INSERT INTO `state` VALUES (4,'Impreso',4,0,'PRINTED',2,29,1,0,1,0,0,1,2,0,'success');
-INSERT INTO `state` VALUES (5,'Preparación',6,1,'ON_PREPARATION',7,14,0,0,0,2,0,0,2,0,'warning');
-INSERT INTO `state` VALUES (6,'En Revisión',7,1,'ON_CHECKING',NULL,6,0,1,0,3,0,0,1,0,'warning');
+INSERT INTO `state` VALUES (5,'Preparación',6,2,'ON_PREPARATION',7,14,0,0,0,2,0,0,2,0,'warning');
+INSERT INTO `state` VALUES (6,'En Revisión',7,2,'ON_CHECKING',NULL,6,0,1,0,3,0,0,1,0,'warning');
INSERT INTO `state` VALUES (7,'Sin Acabar',1,0,'NOT_READY',NULL,7,0,0,0,0,0,0,4,1,'alert');
-INSERT INTO `state` VALUES (8,'Revisado',8,1,'CHECKED',NULL,8,0,1,0,3,0,0,1,0,'warning');
-INSERT INTO `state` VALUES (9,'Encajando',9,2,'PACKING',NULL,9,0,1,0,0,0,0,1,0,NULL);
-INSERT INTO `state` VALUES (10,'Encajado',10,2,'PACKED',NULL,10,0,1,0,0,0,0,0,0,NULL);
-INSERT INTO `state` VALUES (11,'Facturado',0,3,'INVOICED',NULL,11,0,1,0,0,0,0,0,0,NULL);
+INSERT INTO `state` VALUES (8,'Revisado',8,2,'CHECKED',NULL,8,0,1,0,3,0,0,1,0,'warning');
+INSERT INTO `state` VALUES (9,'Encajando',9,3,'PACKING',NULL,9,0,1,0,0,0,0,1,0,NULL);
+INSERT INTO `state` VALUES (10,'Encajado',10,3,'PACKED',NULL,10,0,1,0,0,0,0,0,0,NULL);
+INSERT INTO `state` VALUES (11,'Facturado',0,4,'INVOICED',NULL,11,0,1,0,0,0,0,0,0,NULL);
INSERT INTO `state` VALUES (12,'Bloqueado',0,0,'BLOCKED',NULL,12,0,0,0,0,0,0,4,1,'alert');
-INSERT INTO `state` VALUES (13,'En Reparto',11,3,'ON_DELIVERY',NULL,13,0,1,0,0,0,0,0,0,NULL);
-INSERT INTO `state` VALUES (14,'Preparado',6,1,'PREPARED',NULL,14,0,1,0,2,0,0,1,0,'warning');
-INSERT INTO `state` VALUES (15,'Pte Recogida',12,3,'WAITING_FOR_PICKUP',NULL,15,0,1,0,0,0,0,0,0,NULL);
-INSERT INTO `state` VALUES (16,'Entregado',13,3,'DELIVERED',NULL,16,0,1,0,0,0,0,0,0,NULL);
+INSERT INTO `state` VALUES (13,'En Reparto',11,4,'ON_DELIVERY',NULL,13,0,1,0,0,0,0,0,0,NULL);
+INSERT INTO `state` VALUES (14,'Preparado',6,2,'PREPARED',NULL,14,0,1,0,2,0,0,1,0,'warning');
+INSERT INTO `state` VALUES (15,'Pte Recogida',12,4,'WAITING_FOR_PICKUP',NULL,15,0,1,0,0,0,0,0,0,NULL);
+INSERT INTO `state` VALUES (16,'Entregado',13,4,'DELIVERED',NULL,16,0,1,0,0,0,0,0,0,NULL);
INSERT INTO `state` VALUES (20,'Asignado',4,0,'PICKER_DESIGNED',NULL,20,1,0,0,0,0,0,2,0,'success');
-INSERT INTO `state` VALUES (21,'Retornado',4,1,'PRINTED_BACK',6,21,0,0,0,0,0,0,2,0,'success');
+INSERT INTO `state` VALUES (21,'Retornado',4,2,'PRINTED_BACK',6,21,0,0,0,0,0,0,2,0,'success');
INSERT INTO `state` VALUES (22,'Pte. Ampliar',2,0,'EXPANDABLE',NULL,22,0,0,0,0,0,0,4,1,'alert');
-INSERT INTO `state` VALUES (23,'URGENTE',5,1,'LAST_CALL',NULL,23,1,0,1,0,0,0,4,1,'success');
+INSERT INTO `state` VALUES (23,'URGENTE',5,2,'LAST_CALL',NULL,23,1,0,1,0,0,0,4,1,'success');
INSERT INTO `state` VALUES (24,'Encadenado',4,0,'CHAINED',4,24,0,0,0,0,0,0,3,1,'success');
INSERT INTO `state` VALUES (25,'Embarcando',3,0,'BOARDING',5,25,1,0,0,0,0,0,3,0,'alert');
INSERT INTO `state` VALUES (26,'Prep Previa',5,0,'PREVIOUS_PREPARATION',1,28,1,0,0,1,0,0,2,0,'warning');
-INSERT INTO `state` VALUES (27,'Prep Asistida',5,1,'ASSISTED_PREPARATION',7,27,0,0,0,0,0,0,2,0,'success');
+INSERT INTO `state` VALUES (27,'Prep Asistida',5,2,'ASSISTED_PREPARATION',7,27,0,0,0,0,0,0,2,0,'success');
INSERT INTO `state` VALUES (28,'Previa OK',3,0,'OK PREVIOUS',3,28,1,0,1,1,1,1,3,0,'warning');
INSERT INTO `state` VALUES (29,'Previa Impreso',4,0,'PRINTED PREVIOUS',2,29,1,0,1,0,0,1,2,0,'success');
-INSERT INTO `state` VALUES (30,'Embarcado',4,1,'BOARD',5,30,0,0,0,2,0,0,3,0,'success');
-INSERT INTO `state` VALUES (31,'Polizon Impreso',4,1,'PRINTED STOWAWAY',2,29,1,0,1,0,0,1,2,0,'success');
-INSERT INTO `state` VALUES (32,'Polizon OK',3,1,'OK STOWAWAY',3,31,1,0,0,1,1,1,3,0,'warning');
+INSERT INTO `state` VALUES (30,'Embarcado',4,2,'BOARD',5,30,0,0,0,2,0,0,3,0,'success');
+INSERT INTO `state` VALUES (31,'Polizon Impreso',4,2,'PRINTED STOWAWAY',2,29,1,0,1,0,0,1,2,0,'success');
+INSERT INTO `state` VALUES (32,'Polizon OK',3,2,'OK STOWAWAY',3,31,1,0,0,1,1,1,3,0,'warning');
INSERT INTO `state` VALUES (33,'Auto_Impreso',4,0,'PRINTED_AUTO',2,29,1,0,1,0,0,1,2,0,'success');
INSERT INTO `state` VALUES (34,'Pte Pago',3,0,'WAITING_FOR_PAYMENT',NULL,34,0,0,0,0,0,0,4,1,'alert');
-INSERT INTO `state` VALUES (35,'Semi-Encajado',9,2,'HALF_PACKED',NULL,10,0,1,0,0,0,0,1,0,NULL);
+INSERT INTO `state` VALUES (35,'Semi-Encajado',9,3,'HALF_PACKED',NULL,10,0,1,0,0,0,0,1,0,NULL);
INSERT INTO `state` VALUES (36,'Previa Revisando',3,0,'PREVIOUS_CONTROL',2,37,1,0,0,4,0,1,2,0,'warning');
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,1,'COOLER_PREPARATION',7,14,0,0,0,2,0,0,2,0,'warning');
-INSERT INTO `state` VALUES (41,'Prep Parcial',6,1,'PARTIAL_PREPARATION',7,14,0,0,0,2,0,0,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 `state` VALUES (43,'Preparación por caja',6,2,'BOX_PICKING',7,42,0,0,0,2,0,0,2,0,'warning');
INSERT INTO `ticketUpdateAction` VALUES (1,'Cambiar los precios en el ticket','renewPrices');
INSERT INTO `ticketUpdateAction` VALUES (2,'Convertir en maná','mana');
diff --git a/db/dump/.dump/privileges.sql b/db/dump/.dump/privileges.sql
index c063df7ae..96d417ec5 100644
--- a/db/dump/.dump/privileges.sql
+++ b/db/dump/.dump/privileges.sql
@@ -464,6 +464,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','productionAssi','Reservas
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','cmr','guillermo@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','employee','Rutas','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','address','alexm@%','0000-00-00 00:00:00','Insert','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','pbx','grafana','queue','root@localhost','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','address','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','accountingType','guillermo@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','itemShelvingStock_byWarehouse','guillermo@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -738,7 +739,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','mrw','guille
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','mrwService','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','ppePlan','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hrBoss','accountingConfig','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','buy','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','buy','carlosap@10.5.1.8','0000-00-00 00:00:00','Select,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logistic','buy','alexm@%','0000-00-00 00:00:00','Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','saleGoal','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','packager','packingSiteLog','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Insert','');
@@ -777,6 +778,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','vehicleState
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','vehicleEvent','alexm@%','0000-00-00 00:00:00','Select,Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','cooler','Tintas','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','itemBotanical','alexm@%','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','productionConfigLog','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','account','developer','signInLog','juan@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','ticketTracking','alexm@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','deviceProductionState','alexm@%','0000-00-00 00:00:00','Select','');
@@ -787,6 +789,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','printServerQueue__
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','artificialBoss','buy','alexm@%','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','hr','Movimientos','alexm@%','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerAssist','buy','alexm@%','0000-00-00 00:00:00','Update','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','itemMinimumQuantity','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','receipt','guillermo@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerBoss','producer','alexm@%','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','administrative','link','alexm@%','0000-00-00 00:00:00','Select','');
@@ -926,16 +929,14 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','tillConfig',
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','till','juan@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','till','alexm@%','0000-00-00 00:00:00','Select,Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','vehicleState','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','vehicleInvoiceIn','alexm@%','0000-00-00 00:00:00','Insert,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','sectorCollectionSaleGroup','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','vehicleEvent','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','vehicleDms','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logistic','vehicle','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','vehicle','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','Agencias','alexm@%','0000-00-00 00:00:00','Insert,Update','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','vehicleDms','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','expeditionStateType','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','ticketState','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','vehicleInvoiceIn','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financialBoss','vehicleNotes','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','vehicleState','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','volumeConfig','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerBoss','ticketTrackingState','alexm@%','0000-00-00 00:00:00','Select,Insert,Update','');
@@ -1003,7 +1004,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','calendar','juan@db-
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','campaign','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','ticketService','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','report','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','buyer','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','buyer','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','bs','grafana','defaulter','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','componentType','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','clientManaCache','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -1274,7 +1275,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','bs','grafana','workerProductivityC
INSERT IGNORE INTO `tables_priv` VALUES ('','srt','grafana','antenna','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','cmr','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','accounting','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','creditClassification','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','creditClassification','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','ticketLog','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','srt','grafana','moving','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','claimDevelopment','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -1289,6 +1290,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','');
@@ -1354,6 +1357,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','');
@@ -1376,6 +1381,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','');
@@ -1389,9 +1395,9 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','bs','buyer','waste','alexm@db-prox
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','clientObservation','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','grafana','visit','root@localhost','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','workerActivity','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicy','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicyDetail','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicyReview','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicy','jgallego@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicyDetail','jgallego@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicyReview','jgallego@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','roadmapStop','guillermo@10.5.1.3','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','roadmapStop','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','agencyWorkCenter','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -1401,6 +1407,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','');
@@ -1425,12 +1432,38 @@ 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','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','deliveryNote','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','deliveryNoteDms','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','deliveryNoteState','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','salesPerson','buy','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','entryType','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionBoss','claimDestination','juan@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','entryLog','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','dipole','grafana','expedition_PrintOut','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','ticketObservation','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','recovery','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','observationType','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','clientInforma','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','accountingType','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','bankPolicyDetail','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','bankPolicyReview','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','bankPolicy','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','edi','hedera-web','imapMultiConfig','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','salesAssistant','orderConfig','root@localhost','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemEntryOut','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemEntryIn','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemShelvingSale','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logistic','packaging','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyerBoss','rate','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleDms','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleInvoiceIn','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleNotes','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionBoss','saleGroup','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
/*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */;
/*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */;
@@ -1902,6 +1935,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesAssistant','invoiceoutboo
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','ticket_gettax','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','productionAssi','midnight','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','dipole','employee','expedition_add','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemshelving_transfer','PROCEDURE','alexm@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','coolerBoss','itempacking','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesPerson','ticket_clone','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','cache','employee','available_refresh','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
@@ -2031,6 +2065,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','account','developer','user_hasrouti
INSERT IGNORE INTO `procs_priv` VALUES ('','account','grafana','user_hasRole','FUNCTION','jgallego@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','guest','time_generate','PROCEDURE','jenkins@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemshelving_addbyclaim','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemShelvingSale_addByCollection','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemshelving_addlist','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemshelving_selfconsumption','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','item_getsimilar','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2134,9 +2169,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPricesByAwb'
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPricesByEntry','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','hr','accountNumberToIban','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','financial','accountNumberToIban','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','supplier_statement','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','supplier_statement','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hrBoss','supplier_statement','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','supplier_statementWithEntries','PROCEDURE','guillermo@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','adminBoss','XDiario_check','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','travel_getDetailFromContinent','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','entry_getTransfer','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2156,6 +2189,19 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','buy_recalcPrice
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','buy_recalcPricesByBuy','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hr','ledger_nextTx','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hr','ledger_docompensation','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemShelvingSale_setQuantity','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemShelvingSale_unpicked','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','collection_getAssigned','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','collection_addWithReservation','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemShelvingSale_addBySectorCollection','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','sectorCollection_hasSalesReserved','FUNCTION','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemShelvingSale_reallocate','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemShelvingSale_setPicked','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','sectorCollection_getMyPartial','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','grafana-write','item_ValuateInventory','PROCEDURE','guillermo@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','guest','ticketCalculatePurge','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_getUltimate','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','cooler','buy_getUltimate','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
/*!40000 ALTER TABLE `procs_priv` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
@@ -2196,10 +2242,11 @@ INSERT IGNORE INTO `global_priv` VALUES ('','financial','{\"access\": 0, \"vers
INSERT IGNORE INTO `global_priv` VALUES ('','financialBoss','{\"access\": 0, \"version_id\": 101106, \"is_role\": true}');
INSERT IGNORE INTO `global_priv` VALUES ('','floranet','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','grafana','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
+INSERT IGNORE INTO `global_priv` VALUES ('','grafana-write','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','greenhouseBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','guest','{\"access\": 0, \"max_questions\": 40000, \"max_updates\": 1000, \"max_connections\": 150000, \"max_user_connections\": 200, \"max_statement_time\": 0.000000, \"is_role\": true, \"version_id\": 101106}');
INSERT IGNORE INTO `global_priv` VALUES ('','handmadeBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
-INSERT IGNORE INTO `global_priv` VALUES ('','hedera-web','{\"access\":0,\"version_id\":100707,\"is_role\":true}');
+INSERT IGNORE INTO `global_priv` VALUES ('','hedera-web','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','hr','{\"access\": 0, \"is_role\": true, \"version_id\": 101106}');
INSERT IGNORE INTO `global_priv` VALUES ('','hrBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','invoicing','{\"access\":0,\"version_id\":100707,\"is_role\":true}');
diff --git a/db/dump/.dump/structure.sql b/db/dump/.dump/structure.sql
index 9b5e9e4a7..81441e19f 100644
--- a/db/dump/.dump/structure.sql
+++ b/db/dump/.dump/structure.sql
@@ -89,6 +89,7 @@ CREATE TABLE `accountLog` (
`host` varchar(255) NOT NULL,
`rhost` varchar(255) NOT NULL,
`time` varchar(255) NOT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -156,11 +157,14 @@ CREATE TABLE `mailAliasAccount` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`mailAlias` int(10) unsigned NOT NULL,
`account` int(10) unsigned NOT NULL,
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `mailAlias` (`mailAlias`,`account`),
KEY `account` (`account`),
+ KEY `mailAliasAccount_editorFk` (`editorFk`),
CONSTRAINT `account` FOREIGN KEY (`account`) REFERENCES `account` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `mailAlias` FOREIGN KEY (`mailAlias`) REFERENCES `mailAlias` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+ CONSTRAINT `mailAlias` FOREIGN KEY (`mailAlias`) REFERENCES `mailAlias` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `mailAliasAccount_editorFk` FOREIGN KEY (`editorFk`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Mail alias that is assigned to each account';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -361,6 +365,7 @@ CREATE TABLE `roleLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `roleLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -420,6 +425,7 @@ CREATE TABLE `signInLog` (
`userName` varchar(30) NOT NULL,
`ip` varchar(100) NOT NULL,
`owner` tinyint(1) DEFAULT 1,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
CONSTRAINT `signInLog_ibfk_1` FOREIGN KEY (`userFk`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
@@ -503,6 +509,7 @@ CREATE TABLE `userLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `userLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -2283,23 +2290,6 @@ CREATE TABLE `Greuge_comercial_recobro` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Table structure for table `Greuges_comercial_detail`
---
-
-DROP TABLE IF EXISTS `Greuges_comercial_detail`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Greuges_comercial_detail` (
- `Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `Id_Trabajador` int(10) unsigned NOT NULL,
- `Comentario` varchar(45) NOT NULL,
- `Importe` decimal(10,2) NOT NULL,
- `Fecha` datetime DEFAULT NULL,
- PRIMARY KEY (`Id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=COMPACT;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Table structure for table `Ticket_Portes`
--
@@ -3732,7 +3722,7 @@ BEGIN
JOIN vn.saleComponent sc ON sc.saleFk = s.id
JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk
- WHERE ct.code = 'FREIGHT'
+ WHERE ct.code = 'freight'
AND r.created BETWEEN vDatedFrom AND vDatedTo
GROUP BY r.id
) sub ON sub.routeFk = r.Id_Ruta
@@ -4492,20 +4482,22 @@ DROP TABLE IF EXISTS `waste`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `waste` (
- `buyer` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`year` int(4) NOT NULL,
`week` int(2) NOT NULL,
- `family` varchar(30) NOT NULL,
+ `buyerFk` int(10) unsigned NOT NULL,
+ `itemTypeFk` smallint(5) unsigned NOT NULL,
`itemFk` int(11) NOT NULL DEFAULT 0,
- `itemTypeFk` smallint(5) unsigned DEFAULT NULL,
- `saleTotal` decimal(16,0) DEFAULT NULL,
- `saleWaste` decimal(16,0) DEFAULT NULL,
- `rate` decimal(5,1) DEFAULT NULL,
- PRIMARY KEY (`buyer`,`year`,`week`,`family`,`itemFk`),
+ `saleTotal` decimal(10,2) DEFAULT NULL COMMENT 'Coste',
+ `saleWasteQuantity` decimal(10,2) DEFAULT NULL,
+ `saleInternalWaste` decimal(10,2) DEFAULT NULL,
+ `saleExternalWaste` decimal(10,2) DEFAULT NULL,
+ PRIMARY KEY (`year`,`week`,`buyerFk`,`itemTypeFk`,`itemFk`),
KEY `waste_itemType_id` (`itemTypeFk`),
KEY `waste_item_id` (`itemFk`),
+ KEY `waste_user_FK` (`buyerFk`),
CONSTRAINT `waste_itemType_id` FOREIGN KEY (`itemTypeFk`) REFERENCES `vn`.`itemType` (`id`),
- CONSTRAINT `waste_item_id` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `waste_item_id` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `waste_user_FK` FOREIGN KEY (`buyerFk`) REFERENCES `account`.`user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -6518,32 +6510,46 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `waste_addSales`()
BEGIN
- DECLARE vWeek INT;
- DECLARE vYear INT;
+ 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);
- SELECT week, year
- INTO vWeek, vYear
- FROM vn.time
- WHERE dated = util.VN_CURDATE();
-
REPLACE bs.waste
- SELECT *, 100 * mermas / total as porcentaje
- FROM (
- SELECT buyer,
- year,
- week,
- family,
- itemFk,
- itemTypeFk,
- floor(sum(value)) as total,
- floor(sum(IF(typeFk = 'loses', value, 0))) as mermas
- FROM vn.saleValue
- where year = vYear and week = vWeek
-
- GROUP BY family, itemFk
-
- ) sub
- ORDER BY mermas DESC;
+ SELECT YEAR(t.shipped),
+ WEEK(t.shipped, 4),
+ it.workerFk,
+ it.id,
+ s.itemFk,
+ 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
+ )
+ ),
+ SUM(
+ IF(
+ aw.`type` = 'external',
+ (b.buyingValue + b.freightValue + b.comissionValue + b.packageValue) * s.quantity,
+ 0
+ )
+ )
+ FROM vn.sale s
+ JOIN vn.item i ON i.id = s.itemFk
+ JOIN vn.itemType it ON it.id = i.typeFk
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ JOIN vn.address a FORCE INDEX (PRIMARY) ON a.id = t.addressFk
+ LEFT JOIN vn.addressWaste aw ON aw.addressFk = a.id
+ JOIN vn.warehouse w ON w.id = t.warehouseFk
+ 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
+ WHERE t.shipped BETWEEN vDateFrom AND vDateTo
+ AND w.isManaged
+ GROUP BY i.id;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -7194,7 +7200,7 @@ proc: BEGIN
)sub
GROUP BY sub.itemFk;
- DROP TEMPORARY TABLE tmp.itemCalc, tItemRange;
+ DROP TEMPORARY TABLE tmp.itemCalc, tItemRange, tmp.itemList;
CALL cache_calc_end (vCalc);
END ;;
DELIMITER ;
@@ -7369,7 +7375,7 @@ proc: BEGIN
)sub
GROUP BY sub.itemFk;
- DROP TEMPORARY TABLE tmp.itemCalc, itemRange;
+ DROP TEMPORARY TABLE tmp.itemCalc, itemRange, tmp.itemList;
CALL cache_calc_end (vCalc);
END ;;
DELIMITER ;
@@ -7738,7 +7744,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;
@@ -7862,14 +7868,14 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `visible_refresh`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT)
-proc: BEGIN
+proc:BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
CALL cache_calc_unlock (v_calc);
RESIGNAL;
END;
- CALL cache_calc_start (v_calc, v_refresh, 'visible', v_warehouse);
+ CALL cache_calc_start (v_calc, v_refresh, 'visible', v_warehouse);
IF !v_refresh THEN
LEAVE proc;
@@ -7877,22 +7883,26 @@ proc: BEGIN
-- Calculamos el stock hasta ayer
- CALL `cache`.stock_refresh(false);
+ CALL cache.stock_refresh(false);
CREATE OR REPLACE TEMPORARY TABLE tmp.itemVisible
(PRIMARY KEY (item_id))
ENGINE = MEMORY
- SELECT item_id, amount stock, amount visible FROM `cache`.stock
- WHERE warehouse_id = v_warehouse;
+ SELECT s.item_id, SUM(s.amount) stock, SUM(s.amount) visible
+ FROM stock s
+ JOIN vn.warehouse w ON w.id = s.warehouse_id
+ WHERE (v_warehouse IS NULL OR s.warehouse_id = v_warehouse)
+ AND w.isComparative
+ GROUP BY s.item_id;
-- Calculamos los movimientos confirmados de hoy
- CALL vn.item_GetVisible(v_warehouse, NULL);
+ CALL vn.item_calcVisible(NULL, v_warehouse);
DELETE FROM visible WHERE calc_id = v_calc;
INSERT INTO visible (calc_id, item_id,visible)
SELECT v_calc, item_id, visible FROM tmp.itemVisible;
- CALL cache_calc_end (v_calc);
+ CALL cache_calc_end (v_calc);
DROP TEMPORARY TABLE tmp.itemVisible;
END ;;
@@ -7956,6 +7966,7 @@ CREATE TABLE `expedition_PrintOut` (
`longName` varchar(30) DEFAULT NULL,
`shelvingFk` varchar(5) DEFAULT NULL,
`comments` varchar(100) DEFAULT NULL,
+ `isChecked` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si la expedición ha sido revisada por un revisor',
PRIMARY KEY (`expeditionFk`),
KEY `expedition_PrintOut_FK` (`printerFk`),
CONSTRAINT `expedition_PrintOut_FK` FOREIGN KEY (`printerFk`) REFERENCES `printer` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
@@ -8456,7 +8467,6 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE VIEW `ektRecent` AS SELECT
1 AS `id`,
- 1 AS `barcode`,
1 AS `entryYear`,
1 AS `batchNumber`,
1 AS `deliveryNumber`,
@@ -8601,13 +8611,13 @@ CREATE TABLE `feature` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `fileConfig`
+-- Table structure for table `fileMultiConfig`
--
-DROP TABLE IF EXISTS `fileConfig`;
+DROP TABLE IF EXISTS `fileMultiConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `fileConfig` (
+CREATE TABLE `fileMultiConfig` (
`name` varchar(25) NOT NULL,
`checksum` text DEFAULT NULL,
`keyValue` tinyint(1) NOT NULL DEFAULT 1,
@@ -8680,13 +8690,13 @@ CREATE TABLE `goodCharacteristic` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `imapConfig`
+-- Table structure for table `imapMultiConfig`
--
-DROP TABLE IF EXISTS `imapConfig`;
+DROP TABLE IF EXISTS `imapMultiConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `imapConfig` (
+CREATE TABLE `imapMultiConfig` (
`id` tinyint(3) unsigned NOT NULL,
`environment` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`host` varchar(150) NOT NULL DEFAULT 'localhost',
@@ -9212,13 +9222,13 @@ CREATE TABLE `supplyResponseLog` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `tableConfig`
+-- Table structure for table `tableMultiConfig`
--
-DROP TABLE IF EXISTS `tableConfig`;
+DROP TABLE IF EXISTS `tableMultiConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tableConfig` (
+CREATE TABLE `tableMultiConfig` (
`fileName` varchar(2) NOT NULL,
`toTable` varchar(15) NOT NULL,
`file` varchar(30) NOT NULL,
@@ -9831,7 +9841,6 @@ BEGIN
*/
DECLARE vRewriteKop INT DEFAULT NULL;
DECLARE vTruncatePutOrder INT DEFAULT NULL;
- DECLARE vBarcode CHAR(15) DEFAULT NULL;
DECLARE vKop INT;
DECLARE vPutOrderFk BIGINT;
@@ -9840,17 +9849,6 @@ BEGIN
FROM ekt
WHERE id = vSelf;
- -- Generates the barcode
-
- SELECT CONCAT(
- LPAD(IFNULL(auction,0), 3, 0),
- LPAD(IFNULL(klo, 99), 2, 0),
- LPAD(DAYOFYEAR(fec), 3, 0),
- COALESCE(agj, RIGHT(batchNumber,7), id))
- INTO vBarcode
- FROM ekt
- WHERE id = vSelf;
-
-- Rewrites the kop parameter
IF vKop IS NULL THEN
@@ -9870,10 +9868,9 @@ BEGIN
-- Refresh EKT
- UPDATE ekt SET
- barcode = vBarcode
- ,kop = vKop
- ,putOrderFk = vTruncatePutOrder
+ UPDATE ekt
+ SET kop = vKop,
+ putOrderFk = vTruncatePutOrder
WHERE id = vSelf;
END ;;
DELIMITER ;
@@ -12262,13 +12259,13 @@ CREATE TABLE `shelf` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `shelfConfig`
+-- Table structure for table `shelfMultiConfig`
--
-DROP TABLE IF EXISTS `shelfConfig`;
+DROP TABLE IF EXISTS `shelfMultiConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `shelfConfig` (
+CREATE TABLE `shelfMultiConfig` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(25) NOT NULL,
`namePrefix` varchar(50) DEFAULT NULL,
@@ -12282,9 +12279,9 @@ CREATE TABLE `shelfConfig` (
KEY `shelf_id` (`shelf`),
KEY `family_id` (`family`),
KEY `warehouse_id` (`warehouse`),
- CONSTRAINT `shelfConfig_ibfk_1` FOREIGN KEY (`family`) REFERENCES `vn`.`itemType` (`id`),
- CONSTRAINT `shelfConfig_ibfk_2` FOREIGN KEY (`shelf`) REFERENCES `shelf` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `shelfConfig_ibfk_3` FOREIGN KEY (`warehouse`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+ CONSTRAINT `shelfMultiConfig_ibfk_1` FOREIGN KEY (`family`) REFERENCES `vn`.`itemType` (`id`),
+ CONSTRAINT `shelfMultiConfig_ibfk_2` FOREIGN KEY (`shelf`) REFERENCES `shelf` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `shelfMultiConfig_ibfk_3` FOREIGN KEY (`warehouse`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -12443,10 +12440,11 @@ DROP TABLE IF EXISTS `tpvMerchantEnable`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tpvMerchantEnable` (
`merchantFk` int(10) unsigned NOT NULL DEFAULT 0,
- `companyFk` smallint(6) unsigned NOT NULL,
- PRIMARY KEY (`merchantFk`,`companyFk`),
+ `companyFk` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`merchantFk`),
UNIQUE KEY `company_id` (`companyFk`),
- CONSTRAINT `tpvMerchantEnable_ibfk_1` FOREIGN KEY (`merchantFk`, `companyFk`) REFERENCES `tpvMerchant` (`id`, `companyFk`) ON DELETE CASCADE ON UPDATE CASCADE
+ CONSTRAINT `tpvMerchantEnable_company_FK` FOREIGN KEY (`companyFk`) REFERENCES `vn`.`company` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `tpvMerchantEnable_tpvMerchant_FK` FOREIGN KEY (`merchantFk`) REFERENCES `tpvMerchant` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Virtual TPV enabled providers';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -12872,12 +12870,8 @@ BEGIN
JOIN vn.warehouse w ON w.id = p.warehouseFk
ORDER BY warehouseFk, `grouping`;
- DROP TEMPORARY TABLE
- tmp.ticketCalculateItem,
- tmp.ticketComponentPrice,
- tmp.ticketComponent,
- tmp.ticketLot,
- tmp.zoneGetShipped;
+ CALL vn.ticketCalculatePurge();
+ DROP TEMPORARY TABLE tmp.item;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -13942,11 +13936,23 @@ BEGIN
CALL util.throw ('ORDER_ROW_UNAVAILABLE');
END IF;
- SELECT IFNULL(minQuantity, 0) INTO vMinQuantity
- FROM vn.item
- WHERE id = vItem;
+ WITH itemMinQuantityPriority AS (
+ SELECT quantity,
+ ROW_NUMBER() OVER (
+ PARTITION BY itemFk
+ ORDER BY warehouseFk IS NULL
+ ) priority
+ FROM vn.itemMinimumQuantity
+ WHERE itemFk = vItem
+ AND `started` <= vShipment
+ AND (`ended` >= vShipment OR `ended` IS NULL)
+ AND (warehouseFk = vWarehouse OR warehouseFk IS NULL)
+ )
+ SELECT quantity INTO vMinQuantity
+ FROM itemMinQuantityPriority
+ WHERE priority = 1;
- IF vAmount < LEAST(vMinQuantity, vAvailable) THEN
+ IF vAmount < LEAST(IFNULL(vMinQuantity, 0), vAvailable) THEN
CALL util.throw ('quantityLessThanMin');
END IF;
@@ -14351,61 +14357,64 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `order_confirmWithUser`(vSelf INT, vUserId INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `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
@@ -14414,26 +14423,36 @@ 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;
-- Verifica si el cliente tiene los datos comprobados
IF NOT vIsTaxDataChecked THEN
- CALL util.throw ('clientNotVerified');
+ CALL util.throw('clientNotVerified');
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;
@@ -14441,207 +14460,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
- CALL util.throw ('ORDER_EMPTY');
+ 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)
- )
- SELECT t.id INTO vTicket
+ WHERE t.shipped BETWEEN vShipment AND vShipmentDayEnd
+ )
+ 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
- AND o.date_send = t.landed
- AND DATE(t.shipped) = vShipment
+ 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
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;
@@ -15832,7 +15832,7 @@ CREATE TABLE `queue` (
UNIQUE KEY `name` (`name`),
UNIQUE KEY `description` (`description`),
KEY `config` (`config`),
- CONSTRAINT `queue_ibfk_1` FOREIGN KEY (`config`) REFERENCES `queueConfig` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `queue_ibfk_1` FOREIGN KEY (`config`) REFERENCES `queueMultiConfig` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Queues';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -15854,25 +15854,6 @@ SET character_set_client = utf8;
1 AS `ringinuse` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `queueConfig`
---
-
-DROP TABLE IF EXISTS `queueConfig`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `queueConfig` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `strategy` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `timeout` int(10) unsigned NOT NULL,
- `retry` int(10) unsigned NOT NULL,
- `weight` int(10) unsigned NOT NULL,
- `maxLen` int(10) unsigned NOT NULL,
- `ringInUse` tinyint(4) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Default values for queues configuration';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Table structure for table `queueMember`
--
@@ -15907,6 +15888,25 @@ SET character_set_client = utf8;
1 AS `paused` */;
SET character_set_client = @saved_cs_client;
+--
+-- Table structure for table `queueMultiConfig`
+--
+
+DROP TABLE IF EXISTS `queueMultiConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `queueMultiConfig` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `strategy` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `timeout` int(10) unsigned NOT NULL,
+ `retry` int(10) unsigned NOT NULL,
+ `weight` int(10) unsigned NOT NULL,
+ `maxLen` int(10) unsigned NOT NULL,
+ `ringInUse` tinyint(4) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Default values for queues configuration';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `queuePhone`
--
@@ -18959,6 +18959,7 @@ CREATE TABLE `ACL` (
`permission` set('DENY','ALLOW') DEFAULT 'ALLOW',
`principalType` set('ROLE','USER') DEFAULT 'ROLE',
`principalId` varchar(512) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `model_ix` (`model`(255)) COMMENT 'ernesto 3.8.2020. Mysql pide indices',
KEY `property_ix` (`property`(255)),
@@ -18966,6 +18967,34 @@ CREATE TABLE `ACL` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `ACLLog`
+--
+
+DROP TABLE IF EXISTS `ACLLog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ACLLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('Acl') NOT NULL DEFAULT 'Acl',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `logRateuserFk` (`userFk`),
+ KEY `ACLLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `ACLLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `aclUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `AccessToken`
--
@@ -19088,13 +19117,13 @@ CREATE TABLE `authCode` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `defaultViewConfig`
+-- Table structure for table `defaultViewMultiConfig`
--
-DROP TABLE IF EXISTS `defaultViewConfig`;
+DROP TABLE IF EXISTS `defaultViewMultiConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `defaultViewConfig` (
+CREATE TABLE `defaultViewMultiConfig` (
`tableCode` varchar(25) NOT NULL,
`columns` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='The default configuration of columns for views';
@@ -19278,6 +19307,7 @@ CREATE TABLE `buffer` (
`hasStrapper` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'tiene una flejadora acoplada',
`typeDefaultFk` int(11) NOT NULL DEFAULT 1 COMMENT 'estado por defecto',
`motors` int(11) NOT NULL DEFAULT 1 COMMENT 'número de fotocélulas que corresponden con sectores de motor independientes',
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code_UNIQUE` (`code`),
KEY `buffer_FK` (`stateFk`),
@@ -19345,6 +19375,34 @@ CREATE TABLE `bufferGroup` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Agrupación de buffers que sirven de salida para las mismas rutas';
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `bufferLog`
+--
+
+DROP TABLE IF EXISTS `bufferLog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `bufferLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('Buffer','Config') NOT NULL DEFAULT 'Buffer',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `logBufferUserFk` (`userFk`),
+ KEY `bufferLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `bufferLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `bufferUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `bufferPool`
--
@@ -19452,6 +19510,7 @@ CREATE TABLE `config` (
`isBalanced` tinyint(1) NOT NULL DEFAULT 1,
`testMode` tinyint(1) NOT NULL DEFAULT 0,
`isAllowedUnloading` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Permite que se pueda cambiar el mode de los buffers a UNLOADING',
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `config_check` CHECK (`id` = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -19632,7 +19691,6 @@ CREATE TABLE `moving` (
`created` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `moving_UN` (`expeditionFk`),
- KEY `moving_fk1_idx` (`expeditionFk`),
KEY `moving_fk2_idx` (`bufferFromFk`),
KEY `moving_fk3_idx` (`bufferToFk`),
KEY `moving_FK` (`stateFk`),
@@ -19809,18 +19867,14 @@ DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
-/*!50003 SET character_set_client = utf8mb3 */ ;;
-/*!50003 SET character_set_results = utf8mb3 */ ;;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;;
+/*!50003 SET character_set_client = utf8mb4 */ ;;
+/*!50003 SET character_set_results = utf8mb4 */ ;;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `moving_clean` ON SCHEDULE EVERY 5 MINUTE STARTS '2022-01-21 00:00:00' ON COMPLETION PRESERVE ENABLE COMMENT 'Llama a srt.moving_clean para que elimine y notifique de registr' DO BEGIN
-
- CALL srt.moving_clean();
-
-END */ ;;
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `moving_clean` ON SCHEDULE EVERY 15 MINUTE STARTS '2022-01-21 00:00:00' ON COMPLETION PRESERVE ENABLE COMMENT 'Llama a srt.moving_clean para que elimine y notifique de registr' DO CALL srt.moving_clean() */ ;;
/*!50003 SET time_zone = @saved_time_zone */ ;;
/*!50003 SET sql_mode = @saved_sql_mode */ ;;
/*!50003 SET character_set_client = @saved_cs_client */ ;;
@@ -22183,62 +22237,70 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `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 ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -26189,7 +26251,9 @@ DROP TABLE IF EXISTS `accountDetailType`;
CREATE TABLE `accountDetailType` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`description` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`id`)
+ `code` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -26427,14 +26491,15 @@ CREATE TABLE `addressObservation` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `addressShortage`
+-- Table structure for table `addressWaste`
--
-DROP TABLE IF EXISTS `addressShortage`;
+DROP TABLE IF EXISTS `addressWaste`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `addressShortage` (
+CREATE TABLE `addressWaste` (
`addressFk` int(11) NOT NULL,
+ `type` enum('internal','external') NOT NULL,
PRIMARY KEY (`addressFk`),
CONSTRAINT `addressShortage_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -26488,6 +26553,19 @@ CREATE TABLE `agencyExtraCharge` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `agencyIncoming`
+--
+
+DROP TABLE IF EXISTS `agencyIncoming`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `agencyIncoming` (
+ `agencyModeFk` int(11) NOT NULL,
+ PRIMARY KEY (`agencyModeFk`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Agencias de entrada de mercancias';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `agencyLog`
--
@@ -26507,6 +26585,7 @@ CREATE TABLE `agencyLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `logAgencyUserFk` (`userFk`),
KEY `agencyLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -27641,14 +27720,17 @@ CREATE TABLE `calendar` (
`businessFk` int(11) NOT NULL,
`dayOffTypeFk` int(11) NOT NULL,
`dated` date NOT NULL,
+ `created` timestamp NOT NULL DEFAULT current_timestamp(),
`editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `calendar_UN` (`businessFk`,`dated`),
KEY `calendar_employee_business_labour_id_idx` (`businessFk`),
KEY `calendar_employee_calendar_state_calendar_state_id_idx` (`dayOffTypeFk`),
KEY `id_index` (`id`),
+ KEY `calendar_user_FK` (`editorFk`),
CONSTRAINT `calendar_FK` FOREIGN KEY (`dayOffTypeFk`) REFERENCES `absenceType` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `calendar_businessFk` FOREIGN KEY (`businessFk`) REFERENCES `business` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+ CONSTRAINT `calendar_businessFk` FOREIGN KEY (`businessFk`) REFERENCES `business` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `calendar_user_FK` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -27902,6 +27984,7 @@ CREATE TABLE `claimDestination` (
`id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`description` varchar(15) NOT NULL,
`addressFk` int(10) DEFAULT NULL COMMENT 'Indica el consignatario para el ticket que regulariza el inventario',
+ `code` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `clSolAddressFk_idx` (`addressFk`),
CONSTRAINT `clSolAddressFk` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
@@ -28012,6 +28095,7 @@ CREATE TABLE `claimLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `claimLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -28226,6 +28310,7 @@ CREATE TABLE `client` (
`rating` int(10) unsigned DEFAULT NULL COMMENT 'información proporcionada por Informa',
`recommendedCredit` int(10) unsigned DEFAULT NULL COMMENT 'información proporcionada por Informa',
`editorFk` int(10) unsigned DEFAULT NULL,
+ `hasDailyInvoice` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si el cliente requiere facturación diaria por defecto se copiará lo que tenga country.hasDailyInvoice',
PRIMARY KEY (`id`),
UNIQUE KEY `IF` (`fi`),
KEY `Id_Trabajador` (`salesPersonFk`),
@@ -28454,6 +28539,7 @@ CREATE TABLE `clientLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `clientLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -29164,12 +29250,12 @@ DROP TABLE IF EXISTS `componentType`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `componentType` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `type` varchar(45) NOT NULL,
+ `code` varchar(20) DEFAULT NULL,
+ `name` varchar(45) NOT NULL,
`isBase` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Marca aquellas series que se utilizan para calcular el precio base de las ventas, a efectos estadisticos',
`isMargin` tinyint(4) NOT NULL DEFAULT 0,
- `code` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `Serie_UNIQUE` (`type`)
+ UNIQUE KEY `Serie_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Permite organizar de forma ordenada los distintos componentes';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -29311,24 +29397,6 @@ CREATE TABLE `conveyorBuildingClass` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tipo de caja para el montaje de pallets';
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Table structure for table `conveyorConfig`
---
-
-DROP TABLE IF EXISTS `conveyorConfig`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `conveyorConfig` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `itemName` varchar(45) NOT NULL,
- `length` int(11) DEFAULT NULL,
- `width` int(11) DEFAULT NULL,
- `height` int(11) DEFAULT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `itemName_UNIQUE` (`itemName`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Table structure for table `conveyorExpedition`
--
@@ -29377,6 +29445,24 @@ CREATE TABLE `conveyorMode` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `conveyorMultiConfig`
+--
+
+DROP TABLE IF EXISTS `conveyorMultiConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `conveyorMultiConfig` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `itemName` varchar(45) NOT NULL,
+ `length` int(11) DEFAULT NULL,
+ `width` int(11) DEFAULT NULL,
+ `height` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `itemName_UNIQUE` (`itemName`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `conveyorType`
--
@@ -29983,6 +30069,7 @@ CREATE TABLE `deviceProductionLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `deviceProductionLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -30571,6 +30658,7 @@ CREATE TABLE `entryLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `entryLog_ibfk_2` (`userFk`),
KEY `entryLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -31109,13 +31197,15 @@ CREATE TABLE `expeditionState` (
`created` timestamp NOT NULL DEFAULT current_timestamp(),
`expeditionFk` int(11) NOT NULL,
`typeFk` int(11) NOT NULL,
- `userFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
`isScanned` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `expeditionState_FK` (`expeditionFk`),
KEY `expeditionState_FK_1` (`typeFk`),
+ KEY `expeditionState_userFk` (`userFk`),
CONSTRAINT `expeditionState_FK` FOREIGN KEY (`expeditionFk`) REFERENCES `expedition` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `expeditionState_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `expeditionStateType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+ CONSTRAINT `expeditionState_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `expeditionStateType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `expeditionState_userFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Historico de estados de las expediciones';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -31611,7 +31701,7 @@ DROP TABLE IF EXISTS `greuge`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `greuge` (
- `Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`clientFk` int(11) NOT NULL,
`description` varchar(45) NOT NULL,
`amount` decimal(10,2) NOT NULL,
@@ -31621,7 +31711,7 @@ CREATE TABLE `greuge` (
`ticketFk` int(11) DEFAULT NULL,
`userFk` int(10) unsigned DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
- PRIMARY KEY (`Id`),
+ PRIMARY KEY (`id`),
KEY `greuges_type_fk_idx` (`greugeTypeFk`),
KEY `Id_Ticket_Greuge_Ticket_idx` (`ticketFk`),
KEY `Greuges_cliente_idx` (`clientFk`),
@@ -31690,6 +31780,7 @@ CREATE TABLE `host` (
`routeDaysBefore` smallint(6) DEFAULT 2,
`routeDaysAfter` smallint(6) DEFAULT 1,
`updated` timestamp NULL DEFAULT current_timestamp(),
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `host_UN` (`code`),
KEY `configHost_FK_3` (`companyFk`),
@@ -31943,10 +32034,10 @@ CREATE TABLE `invoiceCorrection` (
KEY `invoiceCorrection_ibfk_1_idx` (`cplusRectificationTypeFk`),
KEY `cplusInvoiceTyoeFk_idx` (`siiTypeInvoiceOutFk`),
KEY `invoiceCorrectionTypeFk_idx` (`invoiceCorrectionTypeFk`),
- CONSTRAINT `corrected_fk` FOREIGN KEY (`correctedFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `correcting_fk` FOREIGN KEY (`correctingFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `cplusRectificationType_FK` FOREIGN KEY (`cplusRectificationTypeFk`) REFERENCES `cplusRectificationType` (`id`) ON UPDATE CASCADE,
CONSTRAINT `invoiceCorrectionType_FK` FOREIGN KEY (`invoiceCorrectionTypeFk`) REFERENCES `invoiceCorrectionType` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `invoiceCorrection_invoiceOut_FK` FOREIGN KEY (`correctingFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `invoiceCorrection_invoiceOut_FK_1` FOREIGN KEY (`correctedFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `siiTypeInvoiceOut_FK` FOREIGN KEY (`siiTypeInvoiceOutFk`) REFERENCES `siiTypeInvoiceOut` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relacion entre las facturas rectificativas y las rectificadas.';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -32060,6 +32151,8 @@ CREATE TABLE `invoiceInConfig` (
`sageFarmerWithholdingFk` smallint(6) NOT NULL,
`daysAgo` int(10) unsigned DEFAULT 45 COMMENT 'Días en el pasado para mostrar facturas en invoiceIn series en salix',
`taxRowLimit` int(11) DEFAULT 4 COMMENT 'Número máximo de líneas de IVA que puede tener una factura',
+ `dueDateMarginDays` int(10) unsigned DEFAULT 2,
+ `balanceStartingDate` date NOT NULL DEFAULT '2015-01-01',
PRIMARY KEY (`id`),
KEY `invoiceInConfig_sageWithholdingFk` (`sageFarmerWithholdingFk`),
CONSTRAINT `invoiceInConfig_sageWithholdingFk` FOREIGN KEY (`sageFarmerWithholdingFk`) REFERENCES `sage`.`TiposRetencion` (`CodigoRetencion`) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -32163,6 +32256,7 @@ CREATE TABLE `invoiceInLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `invoiceInLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -32307,8 +32401,8 @@ CREATE TABLE `invoiceOut` (
`cplusTaxBreakFk` int(10) unsigned NOT NULL DEFAULT 1,
`cplusSubjectOpFk` int(10) unsigned NOT NULL DEFAULT 1,
`siiTrascendencyInvoiceOutFk` int(10) unsigned NOT NULL DEFAULT 1,
- PRIMARY KEY (`id`,`ref`),
- UNIQUE KEY `Id_Factura` (`ref`),
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `invoiceOut_unique` (`ref`),
KEY `Id_Banco` (`bankFk`),
KEY `Id_Cliente` (`clientFk`),
KEY `empresa_id` (`companyFk`),
@@ -32360,8 +32454,8 @@ CREATE TABLE `invoiceOutExpense` (
PRIMARY KEY (`id`),
KEY `invoiceOutExpence_FK_1_idx` (`invoiceOutFk`),
KEY `invoiceOutExpence_expenceFk_idx` (`expenseFk`),
- CONSTRAINT `invoiceOutExpence_FK_1` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `invoiceOutExpence_expenceFk` FOREIGN KEY (`expenseFk`) REFERENCES `expense` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `invoiceOutExpence_expenceFk` FOREIGN KEY (`expenseFk`) REFERENCES `expense` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `invoiceOutExpense_invoiceOut_FK` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -32381,8 +32475,9 @@ CREATE TABLE `invoiceOutSerial` (
`cplusInvoiceType477Fk` int(10) unsigned DEFAULT 1,
`footNotes` longtext DEFAULT NULL,
`isRefEditable` tinyint(4) NOT NULL DEFAULT 0,
- `type` enum('global','quick') DEFAULT NULL,
+ `type` enum('global','quick','multiple') DEFAULT NULL,
PRIMARY KEY (`code`),
+ UNIQUE KEY `invoiceOutSerial_taxAreaFk_IDX` (`taxAreaFk`,`type`) USING BTREE,
KEY `taxAreaFk_idx` (`taxAreaFk`),
CONSTRAINT `invoiceOutSeriaTaxArea` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -32406,19 +32501,19 @@ CREATE TABLE `invoiceOutTax` (
UNIQUE KEY `invoiceOutTax_Resctriccion` (`invoiceOutFk`,`pgcFk`),
KEY `invoiceOutFk_idx` (`invoiceOutFk`),
KEY `pgcFk` (`pgcFk`),
- CONSTRAINT `invoiceOutFk` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE
+ CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE,
+ CONSTRAINT `invoiceOutTax_invoiceOut_FK` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `invoiceOutTaxConfig`
+-- Table structure for table `invoiceOutTaxMultiConfig`
--
-DROP TABLE IF EXISTS `invoiceOutTaxConfig`;
+DROP TABLE IF EXISTS `invoiceOutTaxMultiConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `invoiceOutTaxConfig` (
+CREATE TABLE `invoiceOutTaxMultiConfig` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`taxClassCodeFk` varchar(1) DEFAULT NULL,
`taxTypeSageFk` smallint(6) DEFAULT NULL,
@@ -32505,9 +32600,15 @@ CREATE TABLE `item` (
`editorFk` int(10) unsigned DEFAULT NULL,
`recycledPlastic` decimal(10,2) DEFAULT NULL,
`nonRecycledPlastic` decimal(10,2) DEFAULT NULL,
- `minQuantity` int(10) unsigned DEFAULT NULL COMMENT 'Cantidad mínima para una línea de venta',
+ `minQuantity__` int(10) unsigned DEFAULT NULL COMMENT '@deprecated 2024-07-11 refs #7704 Cantidad mínima para una línea de venta',
`isBoxPickingMode` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'FALSE: using item.packingOut TRUE: boxPicking using itemShelving.packing',
`photoMotivation` varchar(255) DEFAULT NULL,
+ `tag11` varchar(20) DEFAULT NULL,
+ `value11` varchar(50) DEFAULT NULL,
+ `tag12` varchar(20) DEFAULT NULL,
+ `value12` varchar(50) DEFAULT NULL,
+ `tag13` varchar(20) DEFAULT NULL,
+ `value13` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `item_supplyResponseFk_idx` (`supplyResponseFk`),
KEY `Color` (`inkFk`),
@@ -32527,6 +32628,7 @@ CREATE TABLE `item` (
KEY `item_lastUsed_IDX` (`lastUsed`) USING BTREE,
KEY `item_expenceFk_idx` (`expenseFk`),
KEY `item_fk_editor` (`editorFk`),
+ KEY `item_itemPackingType_FK` (`itemPackingTypeFk`),
CONSTRAINT `item_FK` FOREIGN KEY (`genericFk`) REFERENCES `item` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `item_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `itemType` (`id`),
CONSTRAINT `item_expenceFk` FOREIGN KEY (`expenseFk`) REFERENCES `expense` (`id`) ON UPDATE CASCADE,
@@ -32534,6 +32636,7 @@ CREATE TABLE `item` (
CONSTRAINT `item_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `item_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `origin` (`id`) ON UPDATE CASCADE,
CONSTRAINT `item_ibfk_2` FOREIGN KEY (`intrastatFk`) REFERENCES `intrastat` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `item_itemPackingType_FK` FOREIGN KEY (`itemPackingTypeFk`) REFERENCES `itemPackingType` (`code`) ON UPDATE CASCADE,
CONSTRAINT `itemsupplyResponseFk` FOREIGN KEY (`supplyResponseFk`) REFERENCES `edi`.`supplyResponse` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `producer_id` FOREIGN KEY (`producerFk`) REFERENCES `producer` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -32846,11 +32949,12 @@ CREATE TABLE `itemLog` (
`action` set('insert','update','delete') NOT NULL,
`creationDate` timestamp NULL DEFAULT current_timestamp(),
`description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
- `changedModel` enum('Item','ItemBarcode','ItemBotanical','ItemNiche','ItemTag','ItemTaxCountry') NOT NULL DEFAULT 'Item',
+ `changedModel` enum('Item','ItemBarcode','ItemBotanical','ItemNiche','ItemTag','ItemTaxCountry','ItemMinimumQuantity') NOT NULL DEFAULT 'Item',
`oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `itemLogUserFk_idx` (`userFk`),
KEY `itemLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -32876,6 +32980,37 @@ CREATE TABLE `itemMatchProperties` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Propiedades para encontrar articulos equivalentes en verdnatura';
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `itemMinimumQuantity`
+--
+
+DROP TABLE IF EXISTS `itemMinimumQuantity`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `itemMinimumQuantity` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `itemFk` int(10) NOT NULL,
+ `quantity` int(10) NOT NULL,
+ `started` date NOT NULL,
+ `ended` date DEFAULT NULL,
+ `warehouseFk` smallint(5) unsigned DEFAULT NULL,
+ `created` timestamp NOT NULL DEFAULT current_timestamp(),
+ `editorFk` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `itemMinimumQuantity_UNIQUE` (`itemFk`,`started`,`ended`,`warehouseFk`),
+ KEY `itemFk` (`itemFk`),
+ KEY `started` (`started`),
+ KEY `ended` (`ended`),
+ KEY `warehouseFk` (`warehouseFk`),
+ KEY `editorFk` (`editorFk`),
+ CONSTRAINT `itemMinimumQuantity_ibfk_1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `itemMinimumQuantity_ibfk_2` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `itemMinimumQuantity_ibfk_3` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
+ CONSTRAINT `itemMinimumQuantity_check_1` CHECK (`started` <= `ended`),
+ CONSTRAINT `itemMinimumQuantity_check` CHECK (`quantity` > 0)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `itemPackingType`
--
@@ -33012,6 +33147,7 @@ CREATE TABLE `itemShelving` (
`buyFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
`available` int(11) DEFAULT NULL,
+ `isSplit` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Este valor cambia al splitar un carro que se ha quedado en holanda',
PRIMARY KEY (`id`),
KEY `itemShelving_fk1_idx` (`itemFk`),
KEY `itemShelving_fk2_idx` (`shelvingFk`),
@@ -33170,7 +33306,7 @@ CREATE TABLE `itemShelvingSale` (
`quantity` decimal(10,0) NOT NULL DEFAULT 0,
`created` timestamp NOT NULL DEFAULT current_timestamp(),
`userFk` int(11) unsigned NOT NULL,
- `isPicked` tinyint(1) NOT NULL DEFAULT 0,
+ `isPicked` tinyint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id`),
KEY `itemShelvingSale_fk1_idx` (`itemShelvingFk`),
KEY `itemShelvingSale_fk2_idx` (`saleFk`),
@@ -33191,8 +33327,11 @@ DROP TABLE IF EXISTS `itemShelvingSaleReserve`;
CREATE TABLE `itemShelvingSaleReserve` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`saleFk` int(11) NOT NULL,
+ `sectorFk` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
- KEY `itemShelvingSaleReserve_ibfk_1` (`saleFk`)
+ KEY `itemShelvingSaleReserve_ibfk_1` (`saleFk`),
+ KEY `itemShelvingSaleReserve_sector_FK` (`sectorFk`),
+ CONSTRAINT `itemShelvingSaleReserve_sector_FK` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Queue of changed itemShelvingSale to reserve';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -33408,11 +33547,11 @@ CREATE TABLE `itemType` (
`making` int(10) unsigned DEFAULT NULL COMMENT 'Son productos de confección propia',
`location__` varchar(10) DEFAULT NULL,
`life` smallint(5) unsigned DEFAULT NULL,
- `maneuver` double NOT NULL DEFAULT 0.21,
- `target` double NOT NULL DEFAULT 0.15,
- `topMargin` double NOT NULL DEFAULT 0.3,
- `profit` double NOT NULL DEFAULT 0.02,
- `density` double NOT NULL DEFAULT 167 COMMENT 'Almacena el valor por defecto de la densidad en kg/m3 para el calculo de los portes aereos, en articulos se guarda la correcta',
+ `maneuver__` double NOT NULL DEFAULT 0.21 COMMENT '@deprecated 2024-07-01 refs #7418',
+ `target__` double NOT NULL DEFAULT 0.15 COMMENT '@deprecated 2024-07-01 refs #7418',
+ `topMargin__` double NOT NULL DEFAULT 0.3 COMMENT '@deprecated 2024-07-01 refs #7418',
+ `profit__` double NOT NULL DEFAULT 0.02 COMMENT '@deprecated 2024-07-01 refs #7418',
+ `density__` double NOT NULL DEFAULT 167 COMMENT '@deprecated 2024-07-01 refs #7418 Almacena el valor por defecto de la densidad en kg/m3 para el calculo de los portes aereos, en articulos se guarda la correcta',
`promo` double NOT NULL DEFAULT 0,
`isPackaging` tinyint(1) NOT NULL DEFAULT 0,
`hasComponents__` tinyint(1) NOT NULL DEFAULT 1,
@@ -33880,8 +34019,9 @@ DROP TABLE IF EXISTS `mandateType`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mandateType` (
`id` smallint(5) NOT NULL AUTO_INCREMENT,
- `name` varchar(45) NOT NULL,
- PRIMARY KEY (`id`)
+ `code` varchar(45) NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -34343,8 +34483,9 @@ CREATE TABLE `operator` (
`warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 60,
`sectorFk` int(11) DEFAULT NULL,
`labelerFk` int(10) unsigned DEFAULT NULL,
- `linesLimit` int(11) DEFAULT 20 COMMENT 'Límite de lineas en una colección para la asignación de pedidos',
+ `linesLimit` int(10) unsigned DEFAULT 20 COMMENT 'Límite de lineas en una colección para la asignación de pedidos',
`volumeLimit` decimal(10,6) DEFAULT 0.500000 COMMENT 'Límite de volumen en una colección para la asignación de pedidos',
+ `sizeLimit` int(10) unsigned DEFAULT NULL COMMENT 'Límite de altura en una colección para la asignación de pedidos',
`isOnReservationMode` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`workerFk`),
KEY `operator_FK` (`workerFk`),
@@ -34442,6 +34583,21 @@ SET character_set_client = utf8;
1 AS `name` */;
SET character_set_client = @saved_cs_client;
+--
+-- Table structure for table `ormConfig`
+--
+
+DROP TABLE IF EXISTS `ormConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ormConfig` (
+ `id` int(11) NOT NULL,
+ `selectLimit` int(5) NOT NULL,
+ PRIMARY KEY (`id`),
+ CONSTRAINT `ormConfig_check` CHECK (`id` = 1)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `osTicketConfig`
--
@@ -34678,7 +34834,6 @@ CREATE TABLE `packingSite` (
`scannerFk` int(11) DEFAULT NULL,
`screenFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
- `hasNewLabelMrwMethod` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `packingSite_UN` (`code`),
UNIQUE KEY `printerRfidFk` (`printerRfidFk`),
@@ -34752,6 +34907,7 @@ CREATE TABLE `packingSiteDeviceLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `packingSiteDeviceLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -34860,6 +35016,7 @@ CREATE TABLE `parkingLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `logParkinguserFk` (`userFk`),
KEY `parkingLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -35063,7 +35220,7 @@ CREATE TABLE `payrollWorker` (
`companyFkA3` int(10) NOT NULL COMMENT 'Columna que hace referencia a A3.',
`codcontrato__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024',
`FAntiguedad__` date NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024',
- `grupotarifa__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024',
+ `grupotarifa` int(10) NOT NULL,
`codcategoria__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024',
`ContratoTemporal__` tinyint(1) NOT NULL DEFAULT 0 COMMENT '@Deprecated refs #6738 15/03/2024',
`workerFk` int(11) unsigned DEFAULT NULL,
@@ -35635,27 +35792,57 @@ CREATE TABLE `productionConfig` (
`collection_new_lockname` varchar(100) NOT NULL DEFAULT 'collection_new' COMMENT 'Lockname value for proc vn.collection_new',
`collection_assign_lockname` varchar(100) DEFAULT 'collection_assign' COMMENT 'Lockname value for proc vn.collection_new',
`defaultSectorFk` int(10) unsigned NOT NULL DEFAULT 37 COMMENT 'Default sector',
- `scannableCodeType` enum('qr','barcode') NOT NULL DEFAULT 'barcode',
- `scannablePreviusCodeType` enum('qr','barcode') NOT NULL DEFAULT 'barcode',
`itemOlderReviewHours` int(11) NOT NULL DEFAULT 0 COMMENT 'Horas que se tienen en cuenta para comprobar si un ítem es más viejo.',
`sectorFromCode` varchar(15) DEFAULT NULL COMMENT 'Sector origen que se revisa ítems más nuevos al parkinear',
`sectorToCode` varchar(15) DEFAULT NULL COMMENT 'Sector destino que se revisa ítems más nuevos al parkinear',
`orderMode` enum('Location','Age') NOT NULL DEFAULT 'Location',
+ `editorFk` int(10) unsigned DEFAULT NULL,
+ `hasNewLabelMrwMethod` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'column to activate the new mrw integration',
PRIMARY KEY (`id`),
KEY `productionConfig_FK` (`shortageAddressFk`),
KEY `productionConfig_FK_1` (`clientSelfConsumptionFk`),
KEY `productionConfig_FK_2` (`addressSelfConsumptionFk`),
KEY `productionConfig_sector_FK` (`sectorFromCode`),
KEY `productionConfig_sector_FK_1` (`sectorToCode`),
+ KEY `productionConfig_user_FK` (`editorFk`),
CONSTRAINT `productionConfig_FK` FOREIGN KEY (`shortageAddressFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE,
CONSTRAINT `productionConfig_FK_1` FOREIGN KEY (`clientSelfConsumptionFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `productionConfig_FK_2` FOREIGN KEY (`addressSelfConsumptionFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE,
CONSTRAINT `productionConfig_sector_FK` FOREIGN KEY (`sectorFromCode`) REFERENCES `sector` (`code`) ON UPDATE CASCADE,
CONSTRAINT `productionConfig_sector_FK_1` FOREIGN KEY (`sectorToCode`) REFERENCES `sector` (`code`) ON UPDATE CASCADE,
+ CONSTRAINT `productionConfig_user_FK` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `productionConfig_check` CHECK (`id` = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Recoge los parámetros que condicionan la producción';
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `productionConfigLog`
+--
+
+DROP TABLE IF EXISTS `productionConfigLog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `productionConfigLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('ProductionConfig') NOT NULL DEFAULT 'ProductionConfig',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `productionConfigLog_userFk` (`userFk`),
+ KEY `productionConfigLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `productionConfigLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `productionConfigUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `productionError`
--
@@ -35967,6 +36154,22 @@ CREATE TABLE `punchState` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Table for storing punches that have cars with errors';
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `quadMindsApiConfig`
+--
+
+DROP TABLE IF EXISTS `quadMindsApiConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `quadMindsApiConfig` (
+ `id` int(10) unsigned NOT NULL,
+ `url` varchar(255) DEFAULT NULL,
+ `key` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ CONSTRAINT `quadMindsConfig_check` CHECK (`id` = 1)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `quality`
--
@@ -36073,6 +36276,7 @@ CREATE TABLE `rateLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `logRateuserFk` (`userFk`),
KEY `rateLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -36310,11 +36514,18 @@ CREATE TABLE `roadmap` (
`kmEnd` mediumint(9) DEFAULT NULL,
`started` datetime DEFAULT NULL,
`finished` datetime DEFAULT NULL,
+ `m3` int(10) unsigned DEFAULT NULL,
+ `driver2Fk` int(10) unsigned DEFAULT NULL,
+ `driver1Fk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `roadmap_supplierFk` (`supplierFk`),
+ KEY `roadmap_worker_FK` (`driver1Fk`),
+ KEY `roadmap_worker_FK_2` (`driver2Fk`),
CONSTRAINT `roadmap_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `roadmap_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `roadmap_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `roadmap_worker_FK` FOREIGN KEY (`driver1Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `roadmap_worker_FK_2` FOREIGN KEY (`driver2Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Troncales diarios que se contratan';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -36622,6 +36833,7 @@ CREATE TABLE `routeLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `routeLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -36897,14 +37109,17 @@ CREATE TABLE `saleGroup` (
`sectorFk` int(11) DEFAULT NULL,
`ticketFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
+ `stateFk` tinyint(3) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `saleGroup_FK` (`ticketFk`),
KEY `saleGroup_userFK` (`userFk`),
KEY `saleGroup_parkingFK` (`parkingFk`),
KEY `saleGroup_sectorFK` (`sectorFk`),
+ KEY `saleGroup_state_FK` (`stateFk`),
CONSTRAINT `saleGroup_FK` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `saleGroup_parkingFK` FOREIGN KEY (`parkingFk`) REFERENCES `parking` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `saleGroup_sectorFK` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `saleGroup_state_FK` FOREIGN KEY (`stateFk`) REFERENCES `state` (`id`) ON UPDATE CASCADE,
CONSTRAINT `saleGroup_userFK` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='agrupa lineas de venta';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -37065,6 +37280,23 @@ CREATE TABLE `saleTracking` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `saleUnit`
+--
+
+DROP TABLE IF EXISTS `saleUnit`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `saleUnit` (
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(50) DEFAULT NULL,
+ `isVisible` tinyint(1) NOT NULL DEFAULT 1,
+ `created` timestamp NULL DEFAULT current_timestamp(),
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name_UNIQUE` (`name`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Temporary table structure for view `saleValue`
--
@@ -37390,11 +37622,10 @@ CREATE TABLE `sectorCollectionSaleGroup` (
`sectorCollectionFk` int(11) NOT NULL,
`saleGroupFk` int(11) NOT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `saleGroupFk` (`saleGroupFk`),
- KEY `sectorCollectionFk` (`sectorCollectionFk`),
+ UNIQUE KEY `sectorCollectionSaleGroup_unique` (`sectorCollectionFk`,`saleGroupFk`),
+ KEY `sectorCollectionSaleGroup_saleGroup_FK` (`saleGroupFk`),
CONSTRAINT `sectorCollectionSaleGroup_ibfk_1` FOREIGN KEY (`sectorCollectionFk`) REFERENCES `sectorCollection` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `sectorCollectionSaleGroup_ibfk_2` FOREIGN KEY (`saleGroupFk`) REFERENCES `saleGroup` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `sectorCollectionSaleGroup_ibfk_3` FOREIGN KEY (`saleGroupFk`) REFERENCES `saleGroup` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+ CONSTRAINT `sectorCollectionSaleGroup_saleGroup_FK` FOREIGN KEY (`saleGroupFk`) REFERENCES `saleGroup` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relaciona las lineas de venta con la coleccion del sector';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -37596,6 +37827,7 @@ CREATE TABLE `shelvingLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `shelvingLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -37665,20 +37897,20 @@ CREATE TABLE `siiTypeInvoiceOut` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `silexACL`
+-- Table structure for table `silexACL__`
--
-DROP TABLE IF EXISTS `silexACL`;
+DROP TABLE IF EXISTS `silexACL__`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `silexACL` (
+CREATE TABLE `silexACL__` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`module` varchar(50) NOT NULL,
`method` varchar(50) NOT NULL,
`role` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `module_UNIQUE` (`module`,`method`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='@deprecated 2024-08-05 refs #7820';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -38023,10 +38255,10 @@ CREATE TABLE `state` (
PRIMARY KEY (`id`),
UNIQUE KEY `code_UNIQUE` (`code`),
KEY `state_id3` (`semaphore`),
- KEY `alertLevel` (`alertLevel`),
KEY `state_FK` (`nextStateFk`),
+ KEY `state_ibfk_1` (`alertLevel`),
CONSTRAINT `state_FK` FOREIGN KEY (`nextStateFk`) REFERENCES `state` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `state_ibfk_1` FOREIGN KEY (`alertLevel`) REFERENCES `alertLevel` (`id`)
+ CONSTRAINT `state_ibfk_1` FOREIGN KEY (`alertLevel`) REFERENCES `alertLevel` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -38376,6 +38608,7 @@ CREATE TABLE `supplierLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `supplierLog_ibfk_2` (`userFk`),
KEY `supplierLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -38679,9 +38912,9 @@ CREATE TABLE `ticket` (
`weight` decimal(10,2) DEFAULT NULL COMMENT 'En caso de informar, se utilizará su valor para calcular el peso de la factura',
`clonedFrom` int(11) DEFAULT NULL,
`cmrFk` int(11) DEFAULT NULL,
- `editorFk` int(10) unsigned DEFAULT NULL,
`problem` set('hasTicketRequest','isFreezed','hasRisk','hasHighRisk','isTaxDataChecked','isTooLittle') NOT NULL DEFAULT '',
`risk` decimal(10,2) DEFAULT NULL COMMENT 'cache calculada con el riesgo del cliente',
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `Id_Cliente` (`clientFk`),
KEY `Id_Consigna` (`addressFk`),
@@ -38697,7 +38930,6 @@ CREATE TABLE `ticket` (
KEY `ticket_fk_editor` (`editorFk`),
KEY `ticket_cmrFk` (`cmrFk`),
CONSTRAINT `ticketCompany_Fk` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `ticket_FK` FOREIGN KEY (`refFk`) REFERENCES `invoiceOut` (`ref`) ON UPDATE CASCADE,
CONSTRAINT `ticket_cmrFk` FOREIGN KEY (`cmrFk`) REFERENCES `cmr` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `ticket_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE,
CONSTRAINT `ticket_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
@@ -38705,6 +38937,7 @@ CREATE TABLE `ticket` (
CONSTRAINT `ticket_ibfk_6` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE,
CONSTRAINT `ticket_ibfk_8` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`),
CONSTRAINT `ticket_ibfk_9` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
+ CONSTRAINT `ticket_invoiceOut_FK` FOREIGN KEY (`refFk`) REFERENCES `invoiceOut` (`ref`) ON UPDATE CASCADE,
CONSTRAINT `tickets_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -38857,7 +39090,7 @@ DROP TABLE IF EXISTS `ticketLastState`;
CREATE TABLE `ticketLastState` (
`ticketFk` int(11) NOT NULL DEFAULT 0,
`ticketTrackingFk` int(11) NOT NULL,
- `name` varchar(15) NOT NULL,
+ `name` varchar(20) NOT NULL,
PRIMARY KEY (`ticketFk`),
KEY `double_foreign` (`ticketFk`,`ticketTrackingFk`),
CONSTRAINT `Id_Ticket` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -38910,6 +39143,7 @@ CREATE TABLE `ticketLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `logTicketuserFk` (`userFk`),
KEY `ticketLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -39211,7 +39445,7 @@ CREATE TABLE `ticketSms__` (
`ticketFk` int(11) DEFAULT NULL,
PRIMARY KEY (`smsFk`),
KEY `ticketSms_FK_1` (`ticketFk`),
- CONSTRAINT `ticketSms_FK` FOREIGN KEY (`smsFk`) REFERENCES `sms` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `ticketSms_FK` FOREIGN KEY (`smsFk`) REFERENCES `sms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `ticketSms_FK_1` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -39676,6 +39910,7 @@ CREATE TABLE `travel` (
KEY `travel_FK` (`agencyModeFk`),
KEY `travel_fk_editor` (`editorFk`),
KEY `travel_FK_1` (`awbFk`),
+ KEY `travel_landed_IDX` (`landed` DESC,`warehouseInFk`,`warehouseOutFk`) USING BTREE,
CONSTRAINT `travel_FK` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE,
CONSTRAINT `travel_FK_1` FOREIGN KEY (`awbFk`) REFERENCES `awb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `travel_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
@@ -39784,6 +40019,7 @@ CREATE TABLE `travelLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `travelLog_changedModel` (`changedModel`,`changedModelId`,`originFk`),
@@ -39859,27 +40095,6 @@ CREATE TABLE `trolley` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Table structure for table `userConfig`
---
-
-DROP TABLE IF EXISTS `userConfig`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `userConfig` (
- `userFk` int(10) unsigned NOT NULL,
- `warehouseFk` smallint(6) DEFAULT NULL,
- `companyFk` smallint(5) unsigned DEFAULT NULL,
- `created` timestamp NULL DEFAULT current_timestamp(),
- `updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `darkMode` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Salix interface dark mode',
- `tabletFk` varchar(100) DEFAULT NULL,
- PRIMARY KEY (`userFk`),
- KEY `tabletFk` (`tabletFk`),
- CONSTRAINT `userConfig_ibfk_1` FOREIGN KEY (`tabletFk`) REFERENCES `docuwareTablet` (`tablet`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Configuración de usuario en Salix';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Table structure for table `userLog`
--
@@ -39899,6 +40114,7 @@ CREATE TABLE `userLog` (
`newInstance` text DEFAULT NULL,
`changedModelId` int(11) DEFAULT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `originFk` (`originFk`),
KEY `userFk` (`userFk`),
@@ -39906,6 +40122,27 @@ CREATE TABLE `userLog` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci `PAGE_COMPRESSED`=1;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `userMultiConfig`
+--
+
+DROP TABLE IF EXISTS `userMultiConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `userMultiConfig` (
+ `userFk` int(10) unsigned NOT NULL,
+ `warehouseFk` smallint(6) DEFAULT NULL,
+ `companyFk` smallint(5) unsigned DEFAULT NULL,
+ `created` timestamp NULL DEFAULT current_timestamp(),
+ `updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `darkMode` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Salix interface dark mode',
+ `tabletFk` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`userFk`),
+ KEY `tabletFk` (`tabletFk`),
+ CONSTRAINT `userMultiConfig_ibfk_1` FOREIGN KEY (`tabletFk`) REFERENCES `docuwareTablet` (`tablet`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Configuración de usuario en Salix';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `userPhone`
--
@@ -39980,14 +40217,14 @@ CREATE TABLE `vehicle` (
KEY `vehicle_supplierFk` (`supplierFk`),
KEY `vehicle_supplierCoolerFk` (`supplierCoolerFk`),
KEY `vehicle_bankPolicyFk` (`bankPolicyFk`),
- CONSTRAINT `provinceFk` FOREIGN KEY (`warehouseFk`) REFERENCES `province` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `vehicleCompany_Fk` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE,
CONSTRAINT `vehicle_FK` FOREIGN KEY (`fuelTypeFk`) REFERENCES `fuelType` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `vehicle_FK_1` FOREIGN KEY (`ppeFk`) REFERENCES `ppe` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `vehicle_bankPolicyFk` FOREIGN KEY (`bankPolicyFk`) REFERENCES `bankPolicy` (`id`) ON UPDATE CASCADE,
CONSTRAINT `vehicle_deliveryPointFk` FOREIGN KEY (`deliveryPointFk`) REFERENCES `deliveryPoint` (`id`) ON UPDATE CASCADE,
CONSTRAINT `vehicle_supplierCoolerFk` FOREIGN KEY (`supplierCoolerFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `vehicle_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`)
+ CONSTRAINT `vehicle_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`),
+ CONSTRAINT `vehicle_warehouse_FK` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -40869,6 +41106,7 @@ CREATE TABLE `workerLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk_idx` (`userFk`),
KEY `workerLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -41646,6 +41884,7 @@ CREATE TABLE `zoneLog` (
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
`changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `zoneLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
@@ -41680,7 +41919,39 @@ CREATE TABLE `zoneWarehouse` (
-- Dumping events for database 'vn'
--
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
-/*!50106 DROP EVENT IF EXISTS `client_unassignSalesPerson` */;
+/*!50106 DROP EVENT IF EXISTS `claim_changeState` */;
+DELIMITER ;;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
+/*!50003 SET character_set_client = utf8mb4 */ ;;
+/*!50003 SET character_set_results = utf8mb4 */ ;;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;;
+/*!50003 SET @saved_time_zone = @@time_zone */ ;;
+/*!50003 SET time_zone = 'SYSTEM' */ ;;
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `claim_changeState` ON SCHEDULE EVERY 1 DAY STARTS '2024-06-06 07:52:46' ON COMPLETION PRESERVE ENABLE DO BEGIN
+
+ DECLARE vClaimState INT;
+
+ SELECT id INTO vClaimState
+ FROM claimState cs
+ WHERE cs.code = 'canceled';
+
+ UPDATE claim c
+ JOIN claimState cs ON cs.id = c.claimStateFk
+ SET c.claimStateFk = vClaimState
+ WHERE c.created < util.VN_CURDATE() - INTERVAL 2 MONTH
+ AND cs.code IN('incomplete','coming','waiting','out');
+
+END */ ;;
+/*!50003 SET time_zone = @saved_time_zone */ ;;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;;
+/*!50003 SET character_set_client = @saved_cs_client */ ;;
+/*!50003 SET character_set_results = @saved_cs_results */ ;;
+/*!50003 SET collation_connection = @saved_col_connection */ ;;
+/*!50106 DROP EVENT IF EXISTS `client_unassignSalesPerson` */;;
DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
@@ -42018,6 +42289,28 @@ DELIMITER ;;
/*!50003 SET character_set_client = @saved_cs_client */ ;;
/*!50003 SET character_set_results = @saved_cs_results */ ;;
/*!50003 SET collation_connection = @saved_col_connection */ ;;
+/*!50106 DROP EVENT IF EXISTS `travel_setDelivered` */;;
+DELIMITER ;;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;;
+/*!50003 SET character_set_client = utf8mb4 */ ;;
+/*!50003 SET character_set_results = utf8mb4 */ ;;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;;
+/*!50003 SET @saved_time_zone = @@time_zone */ ;;
+/*!50003 SET time_zone = 'SYSTEM' */ ;;
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `travel_setDelivered` ON SCHEDULE EVERY 1 DAY STARTS '2024-07-12 00:10:00' ON COMPLETION PRESERVE ENABLE DO BEGIN
+ UPDATE travel t
+ SET t.isDelivered = TRUE
+ WHERE t.shipped < util.VN_CURDATE();
+END */ ;;
+/*!50003 SET time_zone = @saved_time_zone */ ;;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;;
+/*!50003 SET character_set_client = @saved_cs_client */ ;;
+/*!50003 SET character_set_results = @saved_cs_results */ ;;
+/*!50003 SET collation_connection = @saved_col_connection */ ;;
/*!50106 DROP EVENT IF EXISTS `vehicle_notify` */;;
DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
@@ -44196,73 +44489,33 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1)) RETURNS char(1) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
+CREATE DEFINER=`root`@`localhost` FUNCTION `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;
- RETURN vSerie;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP FUNCTION IF EXISTS `invoiceSerialArea` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb4 */ ;
-/*!50003 SET character_set_results = utf8mb4 */ ;
-/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceSerialArea`(vType CHAR(1), vTaxArea VARCHAR(25)) RETURNS char(1) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
- DETERMINISTIC
-BEGIN
- DECLARE vSerie CHAR(1);
+ SELECT addressTaxArea(defaultAddressFk, vCompanyFk) INTO vTaxArea
+ FROM client
+ WHERE id = vClientFk;
+
+ SELECT code INTO vSerie
+ FROM invoiceOutSerial
+ WHERE `type` = vType AND taxAreaFk = vTaxArea;
- 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 ;
@@ -45891,6 +46144,44 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP FUNCTION IF EXISTS `ticket_isProblemCalcNeeded` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_isProblemCalcNeeded`(vSelf INT
+) RETURNS tinyint(1)
+ DETERMINISTIC
+BEGIN
+/**
+ * Check if the ticket requires to update column vn.ticket.problem
+ *
+ * @param vSelf Id ticket
+ * @return BOOL
+ */
+ DECLARE vIsProblemCalcNeeded BOOL;
+
+ SELECT COUNT(*) INTO vIsProblemCalcNeeded
+ FROM ticket t
+ JOIN client c ON c.id = t.clientFk
+ JOIN agencyMode am ON am.id = t.agencyModeFk
+ JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
+ WHERE t.id = vSelf
+ AND dm.code IN ('AGENCY','DELIVERY','PICKUP')
+ AND c.typeFk = 'normal';
+
+ RETURN vIsProblemCalcNeeded;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP FUNCTION IF EXISTS `ticket_isTooLittle` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -45909,14 +46200,21 @@ BEGIN
* @param vSelf Id ticket
* @return BOOL
*/
- DECLARE vIsTooLittle TINYINT(1);
-
+ DECLARE vIsTooLittle BOOL;
+
+ WITH ticketData AS (
+ SELECT addressFk, DATE(shipped) dated
+ FROM vn.ticket
+ WHERE id = vSelf
+ )
SELECT (SUM(IFNULL(sv.litros, 0)) < vc.minTicketVolume
- AND IFNULL(t.totalWithoutVat, 0) < vc.minTicketValue) INTO vIsTooLittle
- FROM ticket t
- LEFT JOIN saleVolume sv ON sv.ticketFk = t.id
- JOIN volumeConfig vc
- WHERE t.id = vSelf;
+ AND SUM(IFNULL(t.totalWithoutVat, 0)) < vc.minTicketValue) INTO vIsTooLittle
+ FROM ticketData td
+ JOIN vn.ticket t ON t.addressFk = td.addressFk
+ LEFT JOIN vn.saleVolume sv ON sv.ticketFk = t.id
+ JOIN vn.volumeConfig vc
+ WHERE t.shipped BETWEEN td.dated AND util.dayEnd(td.dated)
+ AND ticket_isProblemCalcNeeded(t.id);
RETURN vIsTooLittle;
END ;;
@@ -46850,6 +47148,44 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `address_updateCoordinates` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `address_updateCoordinates`(
+ vTicketFk INT,
+ vLongitude DECIMAL(11,7),
+ vLatitude DECIMAL(11,7))
+BEGIN
+/**
+ * Actualiza las coordenadas de una dirección.
+ *
+ * @param vTicketFk Id del ticket
+ * @param vLongitude Longitud de la dirección
+ * @param vLatitude Latitud de la dirección
+ */
+ DECLARE vAddressFK INT;
+
+ SELECT addressFK INTO vAddressFK
+ FROM ticket
+ WHERE id = vTicketFk;
+
+ UPDATE address
+ SET longitude = vLongitude,
+ latitude = vLatitude
+ WHERE id = vAddressFK;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `agencyHourGetFirstShipped` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -47242,7 +47578,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
@@ -47902,42 +48238,21 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `buyUltimate`(vWarehouseFk SMALLINT, vDated DATE)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `buyUltimate`(
+ vWarehouseFk SMALLINT,
+ vDated DATE
+)
BEGIN
/**
- * Calcula las últimas compras realizadas hasta una fecha
+ * @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;
-
- 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;
-
+ CALL buy_getUltimate(NULL, vWarehouseFk, vDated);
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -47954,9 +48269,14 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `buyUltimateFromInterval`(vWarehouseFk SMALLINT, vStarted DATE, vEnded DATE)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `buyUltimateFromInterval`(
+ vWarehouseFk SMALLINT,
+ vStarted DATE,
+ vEnded DATE
+)
BEGIN
/**
+ * @deprecated Usar buy_getUltimateFromInterval
* Calcula las últimas compras realizadas
* desde un rango de fechas.
*
@@ -47965,129 +48285,7 @@ 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,
- MAX(landed) 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
- 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
- GROUP BY itemFk, warehouseInFk;
-
- INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
- 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
- GROUP BY itemFk, warehouseInFk;
-
- -- ItemOriginal
- INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
- SELECT itemFk,
- warehouseFk,
- buyFk,
- MAX(landed) 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 itemOriginalFk, warehouseFk;
-
- INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
- 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
- GROUP BY itemOriginalFk, warehouseInFk;
-
- INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
- 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
- GROUP BY itemOriginalFk, warehouseInFk;
+ CALL vn.buy_getUltimateFromInterval(NULL, vWarehouseFk, vStarted, vEnded);
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -48473,6 +48671,254 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `buy_getUltimate` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `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 ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `buy_getUltimateFromInterval` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_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 ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `buy_getVolume` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
@@ -48801,7 +49247,11 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_updateGrouping`(vWarehouseFk INT, vItemFk INT, vGrouping INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_updateGrouping`(
+ vWarehouseFk INT,
+ vItemFk INT,
+ vGrouping INT
+)
BEGIN
/**
* Actualiza el grouping de las últimas compras de un artículo
@@ -48810,9 +49260,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
@@ -48844,7 +49294,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
@@ -48939,7 +49389,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(
@@ -48955,8 +49405,7 @@ BEGIN
CALL catalog_componentPrepare();
- DROP TEMPORARY TABLE IF EXISTS tmp.ticketCalculateItem;
- CREATE TEMPORARY TABLE tmp.ticketCalculateItem(
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem(
itemFk INT(11) NOT NULL,
available INT(11),
producer VARCHAR(50),
@@ -48970,11 +49419,11 @@ BEGIN
price DECIMAL(10,2),
priceKg DECIMAL(10,2),
`grouping` INT(10) UNSIGNED,
+ minQuantity INT(10) UNSIGNED,
PRIMARY KEY `itemFk` (`itemFk`)
) ENGINE = MEMORY DEFAULT CHARSET=utf8;
OPEN cTravelTree;
-
l: LOOP
SET vDone = FALSE;
FETCH cTravelTree INTO vZoneFk, vWarehouseFk, vShipped;
@@ -48983,9 +49432,9 @@ BEGIN
LEAVE l;
END IF;
- CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWarehouseFk, vShipped);
- CALL `cache`.availableNoRaids_refresh (vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped);
- CALL vn.buyUltimate(vWarehouseFk, vShipped);
+ CALL `cache`.available_refresh(vAvailableCalc, FALSE, vWarehouseFk, vShipped);
+ CALL `cache`.availableNoRaids_refresh(vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped);
+ CALL buy_getUltimate(NULL, vWarehouseFk, vShipped);
INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk, zoneFk)
SELECT vWarehouseFk,
@@ -48997,17 +49446,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)
@@ -49019,18 +49468,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
@@ -49044,9 +49493,9 @@ 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 (
+ INSERT INTO tmp.ticketCalculateItem(
itemFk,
available,
producer,
@@ -49059,9 +49508,9 @@ BEGIN
origin,
price,
priceKg,
- `grouping`)
- SELECT
- tl.itemFk,
+ `grouping`,
+ minQuantity)
+ SELECT tl.itemFk,
SUM(tl.available) available,
p.name producer,
i.name item,
@@ -49073,7 +49522,8 @@ BEGIN
o.code origin,
bl.price,
bl.priceKg,
- bl.`grouping`
+ bl.`grouping`,
+ mq.quantity
FROM tmp.ticketLot tl
JOIN item i ON tl.itemFk = i.id
LEFT JOIN producer p ON p.id = i.producerFk AND p.isVisible
@@ -49089,12 +49539,28 @@ BEGIN
) sub
GROUP BY itemFk
) bl ON bl.itemFk = tl.itemFk
- WHERE tl.zoneFk = vZoneFk AND tl.warehouseFk = vWarehouseFk
+ LEFT JOIN (
+ WITH itemMinQuantityPriority AS (
+ SELECT itemFk,
+ quantity,
+ ROW_NUMBER() OVER (
+ PARTITION BY itemFk
+ ORDER BY warehouseFk IS NULL
+ ) priority
+ FROM vn.itemMinimumQuantity
+ WHERE `started` <= vShipped
+ AND (`ended` >= vShipped OR `ended` IS NULL)
+ AND (warehouseFk = vWarehouseFk OR warehouseFk IS NULL)
+ )
+ SELECT itemFk, quantity
+ FROM itemMinQuantityPriority
+ WHERE priority = 1
+ ) mq ON mq.itemFk = tl.itemFk
+ WHERE tl.zoneFk = vZoneFk
+ AND tl.warehouseFk = vWarehouseFk
GROUP BY tl.itemFk
ON DUPLICATE KEY UPDATE available = available + VALUES(available);
-
END LOOP;
-
CLOSE cTravelTree;
END ;;
DELIMITER ;
@@ -49727,6 +50193,10 @@ BEGIN
DELETE FROM ticketDown WHERE created < util.yesterday();
DELETE FROM entryLog WHERE creationDate < v2Months;
DELETE IGNORE FROM expedition WHERE created < v26Months;
+ DELETE cs
+ FROM sms s
+ JOIN clientSms cs ON cs.smsFk = s.id
+ WHERE s.created < v18Months;
DELETE FROM sms WHERE created < v18Months;
DELETE FROM saleTracking WHERE created < v1Years;
DELETE FROM productionError WHERE dated < v1Years;
@@ -50679,14 +51149,14 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `client_create` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `client_create`(
vFirstname VARCHAR(50),
@@ -50723,20 +51193,25 @@ BEGIN
DECLARE vIsTaxDataChecked TINYINT(1);
DECLARE vHasCoreVnl BOOLEAN;
DECLARE vMandateTypeFk INT;
+ DECLARE vHasDailyInvoice BOOLEAN;
- SELECT defaultPayMethodFk,
- defaultDueDay,
- defaultCredit,
- defaultIsTaxDataChecked,
- defaultHasCoreVnl,
- defaultMandateTypeFk
+ SELECT cc.defaultPayMethodFk,
+ cc.defaultDueDay,
+ cc.defaultCredit,
+ cc.defaultIsTaxDataChecked,
+ cc.defaultHasCoreVnl,
+ cc.defaultMandateTypeFk,
+ c.hasDailyInvoice
INTO vPayMethodFk,
vDueDay,
vDefaultCredit,
vIsTaxDataChecked,
vHasCoreVnl,
- vMandateTypeFk
- FROM clientConfig;
+ vMandateTypeFk,
+ vHasDailyInvoice
+ FROM clientConfig cc
+ LEFT JOIN province p ON p.id = vProvinceFk
+ LEFT JOIN country c ON c.id = p.countryFk;
INSERT INTO `client`
SET id = vUserFk,
@@ -50754,7 +51229,8 @@ BEGIN
credit = vDefaultCredit,
isTaxDataChecked = vIsTaxDataChecked,
hasCoreVnl = vHasCoreVnl,
- isEqualizated = FALSE
+ isEqualizated = FALSE,
+ hasDailyInvoice = vHasDailyInvoice
ON duplicate KEY UPDATE
payMethodFk = vPayMethodFk,
dueDay = vDueDay,
@@ -51140,6 +51616,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
@@ -51455,7 +51932,8 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_addWithReservation`(
vItemFk INT,
vQuantity INT,
vTicketFk INT,
- vSaleGroupFk INT
+ vSaleGroupFk INT,
+ vSectorFk INT
)
BEGIN
/**
@@ -51519,7 +51997,7 @@ BEGIN
SELECT LAST_INSERT_ID() INTO vSaleFk;
CALL sale_calculateComponent(vSaleFk, NULL);
- CALL itemShelvingSale_addBySale(vSaleFk);
+ CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk);
IF NOT EXISTS (SELECT TRUE FROM itemShelvingSale WHERE saleFk = vSaleFk LIMIT 1) THEN
SET vHasThrow = TRUE;
@@ -51580,16 +52058,16 @@ BEGIN
vErrorNumber = MYSQL_ERRNO,
vErrorMsg = MESSAGE_TEXT;
+ CALL util.debugAdd('collection_assign', JSON_OBJECT(
+ 'errorNumber', vErrorNumber,
+ 'errorMsg', vErrorMsg,
+ 'lockName', vLockName,
+ 'userFk', vUserFk
+ )); -- Tmp
+
IF vLockName IS NOT NULL THEN
DO RELEASE_LOCK(vLockName);
- CALL util.debugAdd('collection_assign', JSON_OBJECT(
- 'errorNumber', vErrorNumber,
- 'errorMsg', vErrorMsg,
- 'lockName', vLockName,
- 'userFk', vUserFk
- )); -- Tmp
END IF;
-
RESIGNAL;
END;
@@ -52079,10 +52557,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;
@@ -52123,17 +52602,17 @@ BEGIN
vErrorNumber = MYSQL_ERRNO,
vErrorMsg = MESSAGE_TEXT;
+ CALL util.debugAdd('collection_new', JSON_OBJECT(
+ 'errorNumber', vErrorNumber,
+ 'errorMsg', vErrorMsg,
+ 'lockName', vLockName,
+ 'userFk', vUserFk,
+ 'ticketFk', vTicketFk
+ )); -- Tmp
+
IF vLockName IS NOT NULL THEN
DO RELEASE_LOCK(vLockName);
- CALL util.debugAdd('collection_new', JSON_OBJECT(
- 'errorNumber', vErrorNumber,
- 'errorMsg', vErrorMsg,
- 'lockName', vLockName,
- 'userFk', vUserFk,
- 'ticketFk', vTicketFk
- )); -- Tmp
END IF;
-
RESIGNAL;
END;
@@ -52147,6 +52626,7 @@ BEGIN
o.trainFk,
o.linesLimit,
o.volumeLimit,
+ o.sizeLimit,
pc.collection_new_lockname
INTO vMaxTickets,
vHasUniqueCollectionTime,
@@ -52158,6 +52638,7 @@ BEGIN
vTrainFk,
vLinesLimit,
vVolumeLimit,
+ vSizeLimit,
vLockName
FROM productionConfig pc
JOIN worker w ON w.id = vUserFk
@@ -52242,6 +52723,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)
@@ -52253,8 +52742,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
+ OR pb.m3 > vVolumeLimit
+ OR sub.maxSize > vSizeLimit;
END IF;
-- Es importante que el primer ticket se coja en todos los casos
@@ -52487,18 +52977,21 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_setParking`(IN `vCollectionFk` VARCHAR(8), IN `vParkingFk` INT)
-proc: BEGIN
+CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_setParking`(
+ vSelf INT,
+ vParkingFk INT
+)
+BEGIN
/**
* Aparca una colección en un parking.
*
- * @param vCollectionFk Id de la colección
- * @param vParkingFk Id del parking
+ * @param vSelf Id colección
+ * @param vParkingFk Id parking
*/
- REPLACE vn.ticketParking(ticketFk, parkingFk)
+ REPLACE ticketParking(ticketFk, parkingFk)
SELECT tc.ticketFk, vParkingFk
- FROM vn.ticketCollection tc
- WHERE tc.collectionFk = vCollectionFk;
+ FROM ticketCollection tc
+ WHERE tc.collectionFk = vSelf;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -52580,7 +53073,7 @@ DECLARE vCompanyFk INT;
SELECT IFNULL(uc.companyFk, rc.defaultCompanyFk)
INTO vCompanyFk
FROM vn.routeConfig rc
- LEFT JOIN userConfig uc ON uc.userFk = workerFk;
+ LEFT JOIN userMultiConfig uc ON uc.userFk = workerFk;
SELECT
@@ -53095,9 +53588,9 @@ BEGIN
SET @order = 0;
- DROP TEMPORARY TABLE IF EXISTS tmp.newSaleList;
+ DROP TEMPORARY TABLE IF EXISTS tNewSaleList;
- CREATE TEMPORARY TABLE tmp.newSaleList
+ CREATE TEMPORARY TABLE tNewSaleList
SELECT id as saleFk, @order := @order + 1 as orden
FROM vn.sale
WHERE ticketFk = vTargetTicketFk
@@ -53107,8 +53600,9 @@ BEGIN
SELECT ns.saleFk, sc.componentFk, sc.value
FROM vn.saleComponent sc
JOIN tmp.saleList s ON s.saleFk = sc.saleFk
- JOIN tmp.newSaleList ns ON ns.orden = s.orden;
+ JOIN tNewSaleList ns ON ns.orden = s.orden;
+ DROP TEMPORARY TABLE tNewSaleList;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -53909,6 +54403,7 @@ BEGIN
DECLARE vInvoiceFk INT;
DECLARE vBookEntry INT;
DECLARE vFiscalYear INT;
+ DECLARE vIncorrectInvoiceInDueDay INT;
DECLARE vInvoicesIn CURSOR FOR
SELECT DISTINCT e.invoiceInFk
@@ -53921,6 +54416,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
@@ -53978,7 +54486,7 @@ BEGIN
AND (NOT e.isBooked OR NOT e.isConfirmed)
),
notBookedEntries AS (
- SELECT e.id
+ SELECT entryFk
FROM vn.duaEntry
WHERE duaFk = vDuaFk
AND NOT customsValue
@@ -54938,7 +55446,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
@@ -55078,7 +55586,7 @@ BEGIN
AND e.id = vSelf;
IF vIsEditable AND NOT IFNULL(@isModeInventory, FALSE) THEN
- CALL util.throw('Entry is not editable');
+ CALL util.throw(CONCAT('Entry ', vSelf, ' is not editable'));
END IF;
END ;;
DELIMITER ;
@@ -55414,60 +55922,44 @@ BEGIN
DECLARE vBuyStickers INT;
DECLARE vDone BOOLEAN DEFAULT FALSE;
- DECLARE cur CURSOR FOR
+ 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 vn.itemShelving ish
+ FROM itemShelving ish
JOIN (SELECT b.id, b.itemFk, b.stickers
- FROM vn.buy b
- WHERE b.entryFk = vFromEntryFk
- ORDER BY b.stickers DESC
- LIMIT 10000000000000000000) bb ON bb.itemFk = ish.itemFk
- AND bb.stickers >= FLOOR(ish.visible / ish.packing)
- WHERE shelvingFk = vShelvingFk COLLATE utf8_general_ci
- GROUP BY ish.id;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
-
- -- Cantidades de la matrícula que exceden la de las entradas
- SELECT ish.itemFk,
- i.longName,
- FLOOR(ish.visible / ish.packing) AS etiEnMatricula,
- bb.stickers etiEnEntrada
- FROM vn.itemShelving ish
- JOIN vn.item i ON i.id = ish.itemFk
- LEFT JOIN (SELECT b.id, b.itemFk, b.stickers
- FROM vn.buy b
+ FROM buy b
WHERE b.entryFk = vFromEntryFk
ORDER BY b.stickers DESC
LIMIT 10000000000000000000) bb ON bb.itemFk = ish.itemFk
- WHERE shelvingFk = vShelvingFk COLLATE utf8_general_ci
- AND IFNULL(bb.stickers,0) < FLOOR(ish.visible / ish.packing)
+ WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_general_ci
+ AND NOT ish.isSplit
GROUP BY ish.id;
-
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+
OPEN cur;
read_loop: LOOP
SET vDone = FALSE;
FETCH cur INTO vBuyFk, vIshStickers, vBuyStickers;
-
+
IF vDone THEN
LEAVE read_loop;
END IF;
-
+
IF vIshStickers = vBuyStickers THEN
- UPDATE vn.buy
+ UPDATE buy
SET entryFk = vToEntryFk
WHERE id = vBuyFk;
ELSE
- UPDATE vn.buy
+ UPDATE buy
SET stickers = stickers - vIshStickers,
quantity = stickers * packing
WHERE id = vBuyFk;
-
- INSERT INTO vn.buy(entryFk,
+
+ INSERT INTO buy(entryFk,
itemFk,
quantity,
buyingValue,
@@ -55518,13 +56010,16 @@ BEGIN
weight,
deliveryFk,
itemOriginalFk
- FROM vn.buy
+ FROM buy
WHERE id = vBuyFk;
UPDATE buy SET printedStickers = vIshStickers WHERE id = LAST_INSERT_ID();
END IF;
- END LOOP;
+ UPDATE itemShelving
+ SET isSplit = TRUE
+ WHERE shelvingFk = vShelvingFk COLLATE utf8_general_ci;
+ END LOOP;
CLOSE cur;
END ;;
DELIMITER ;
@@ -55724,7 +56219,12 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionPallet_build`(IN vExpeditions JSON, IN vArcId INT, IN vWorkerFk INT, OUT vPalletFk INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionPallet_build`(
+ vExpeditions JSON,
+ vArcId INT,
+ vWorkerFk INT,
+ OUT vPalletFk INT
+)
BEGIN
/** Construye un pallet de expediciones.
*
@@ -55732,28 +56232,22 @@ BEGIN
* en cuyo caso actualiza ese pallet.
*
* @param vExpeditions JSON_ARRAY con esta estructura [exp1, exp2, exp3, ...]
- * @param vArcId INT Identificador de vn.arcRead
- * @param vWorkerFk INT Identificador de vn.worker
- * @param out vPalletFk Identificador de vn.expeditionPallet
+ * @param vArcId INT Identificador de arcRead
+ * @param vWorkerFk INT Identificador de worker
+ * @param out vPalletFk Identificador de expeditionPallet
*/
DECLARE vCounter INT;
DECLARE vExpeditionFk INT;
DECLARE vTruckFk INT;
DECLARE vPrinterFk INT;
+ DECLARE vExpeditionStateTypeFk INT;
- DROP TEMPORARY TABLE IF EXISTS tExpedition;
- CREATE TEMPORARY TABLE tExpedition
- SELECT
- e.id expeditionFk,
- r.id routeFk,
- ep.id palletFk
- FROM
- vn.expedition e,
- vn.route r,
- vn.expeditionPallet ep
- LIMIT 0;
-
- ALTER TABLE tExpedition ADD PRIMARY KEY (expeditionFk);
+ CREATE OR REPLACE TEMPORARY TABLE tExpedition (
+ expeditionFk INT,
+ routeFk INT,
+ palletFk INT,
+ PRIMARY KEY (expeditionFk)
+ );
SET vCounter = JSON_LENGTH(vExpeditions);
@@ -55764,53 +56258,58 @@ BEGIN
INSERT IGNORE INTO tExpedition(expeditionFk, routeFk, palletFk)
SELECT vExpeditionFk, t.routeFk, es.palletFk
- FROM vn.expedition e
- LEFT JOIN vn.ticket t ON t.id = e.ticketFk
- LEFT JOIN vn.expeditionScan es ON es.expeditionFk = e.id
+ FROM expedition e
+ LEFT JOIN ticket t ON t.id = e.ticketFk
+ LEFT JOIN expeditionScan es ON es.expeditionFk = e.id
WHERE e.id = vExpeditionFk;
END WHILE;
SELECT palletFk INTO vPalletFk
FROM (
- SELECT palletFk, count(*) n
- FROM tExpedition
- WHERE palletFk > 0
- GROUP BY palletFk
- ORDER BY n DESC
- LIMIT 100 ) sub
+ SELECT palletFk, count(*) n
+ FROM tExpedition
+ WHERE palletFk > 0
+ GROUP BY palletFk
+ ORDER BY n DESC
+ LIMIT 100
+ ) sub
LIMIT 1;
IF vPalletFk IS NULL THEN
- SELECT roadmapStopFk
- INTO vTruckFk
- FROM (
- SELECT rm.roadmapStopFk, count(*) n
- FROM vn.routesMonitor rm
- JOIN tExpedition e ON e.routeFk = rm.routeFk
- GROUP BY roadmapStopFk
- ORDER BY n DESC
- LIMIT 1) sub;
+ SELECT roadmapStopFk INTO vTruckFk
+ FROM (
+ SELECT rm.roadmapStopFk, count(*) n
+ FROM routesMonitor rm
+ JOIN tExpedition e ON e.routeFk = rm.routeFk
+ GROUP BY roadmapStopFk
+ ORDER BY n DESC
+ LIMIT 1
+ ) sub;
IF vTruckFk IS NULL THEN
CALL util.throw ('TRUCK_NOT_AVAILABLE');
END IF;
- INSERT INTO vn.expeditionPallet(truckFk)
- VALUES(vTruckFk);
+ INSERT INTO expeditionPallet SET truckFk = vTruckFk;
SET vPalletFk = LAST_INSERT_ID();
END IF;
- INSERT INTO vn.expeditionScan(expeditionFk, palletFk, workerFk)
+ INSERT INTO expeditionScan(expeditionFk, palletFk, workerFk)
SELECT expeditionFk, vPalletFk, vWorkerFk
FROM tExpedition
ON DUPLICATE KEY UPDATE palletFk = vPalletFk, workerFk = vWorkerFk;
- SELECT printerFk INTO vPrinterFk
- FROM vn.arcRead
- WHERE id = vArcId;
+ SELECT id INTO vExpeditionStateTypeFk
+ FROM expeditionStateType
+ WHERE code = 'PALLETIZED';
- CALL vn.report_print(
+ INSERT INTO expeditionState(expeditionFk, typeFk)
+ SELECT expeditionFk, vExpeditionStateTypeFk FROM tExpedition;
+
+ SELECT printerFk INTO vPrinterFk FROM arcRead WHERE id = vArcId;
+
+ CALL report_print(
'LabelPalletExpedition',
vPrinterFk,
account.myUser_getId(),
@@ -55818,7 +56317,7 @@ BEGIN
'high'
);
- UPDATE vn.expeditionPallet SET isPrint = TRUE WHERE id = vPalletFk;
+ UPDATE expeditionPallet SET isPrint = TRUE WHERE id = vPalletFk;
DROP TEMPORARY TABLE tExpedition;
END ;;
@@ -56060,14 +56559,21 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionScan_Put`(vPalletFk INT, vExpeditionFk INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionScan_Put`(
+ vPalletFk INT,
+ vExpeditionFk INT
+)
BEGIN
-
- REPLACE vn.expeditionScan(expeditionFk, palletFk)
- VALUES(vExpeditionFk, vPalletFk);
-
- SELECT LAST_INSERT_ID() INTO vPalletFk;
-
+ IF NOT (SELECT TRUE FROM expedition WHERE id = vExpeditionFk LIMIT 1) THEN
+ CALL util.throw('Expedition not exists');
+ END IF;
+
+ 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);
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -57376,7 +57882,9 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInDueDay_calculate`(vInvoiceInFk INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInDueDay_calculate`(
+vInvoiceInFk INT
+)
BEGIN
/**
* Calcula los vctos. de una factura recibida
@@ -57433,12 +57941,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 payDemDetail pdd ON pdd.id = s.payDemFk
+ JOIN invoiceInConfig iic
WHERE ii.id = vInvoiceInFk
GROUP BY ii.id
)sub
@@ -57769,18 +58278,18 @@ BEGIN
* @param vBookEntry Id de asiento, si es NULL se genera uno nuevo
*/
DECLARE vFiscalYear INT;
- DECLARE vHasDistinctTransactions INT;
+ DECLARE vHasRepeatedTransactions BOOL;
- SELECT COUNT(DISTINCT transactionTypeSageFk) INTO vHasDistinctTransactions
- FROM invoiceIn ii
- JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id
- JOIN invoiceInSerial iis ON iis.code = ii.serial
+ SELECT TRUE INTO vHasRepeatedTransactions
+ FROM invoiceInTax iit
+ JOIN invoiceIn ii ON ii.id = iit.invoiceInFk
WHERE ii.id = vSelf
- AND iis.taxAreaFk = 'CEE'
- AND transactionTypeSageFk;
+ AND ii.serial = 'E'
+ HAVING COUNT(DISTINCT iit.transactionTypeSageFk) > 1
+ LIMIT 1;
- IF vHasDistinctTransactions > 1 THEN
- CALL util.throw ('This invoice does not allow different types of transactions');
+ IF vHasRepeatedTransactions THEN
+ CALL util.throw ('This invoice contains different types of transactions');
END IF;
CREATE OR REPLACE TEMPORARY TABLE tInvoiceIn
@@ -58718,7 +59227,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,
@@ -58837,7 +59346,7 @@ BEGIN
i.transactionTypeSageFk,
@vTaxCodeGeneral := i.taxClassCodeFk
FROM tmp.ticketServiceTax tst
- JOIN invoiceOutTaxConfig i ON i.taxClassCodeFk = tst.code
+ JOIN invoiceOutTaxMultiConfig i ON i.taxClassCodeFk = tst.code
WHERE i.isService
HAVING taxableBase
) sub;
@@ -58850,7 +59359,7 @@ BEGIN
i.taxTypeSageFk ,
i.transactionTypeSageFk
FROM tmp.ticketTax tt
- JOIN invoiceOutTaxConfig i ON i.taxClassCodeFk = tt.code
+ JOIN invoiceOutTaxMultiConfig i ON i.taxClassCodeFk = tt.code
WHERE !i.isService
GROUP BY tt.pgcFk
HAVING taxableBase
@@ -59193,6 +59702,47 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `itemMinimumQuantity_check` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `itemMinimumQuantity_check`(
+ vSelf INT,
+ vItemFk INT,
+ vStarted DATE,
+ vEnded DATE,
+ vWarehouseFk INT
+)
+BEGIN
+ DECLARE vHasCollision BOOL;
+
+ IF vStarted IS NULL THEN
+ CALL util.throw('The field "started" cannot be null');
+ END IF;
+
+ SELECT COUNT(*) INTO vHasCollision
+ FROM itemMinimumQuantity
+ WHERE vItemFk = itemFk
+ AND ((vStarted <= ended OR ended IS NULL)
+ AND (vStarted >= `started` OR vEnded IS NULL))
+ AND (vWarehouseFk <=> warehouseFk)
+ AND vSelf <> id;
+
+ IF vHasCollision THEN
+ CALL util.throw('A line with the same configuration already exists');
+ END IF;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `itemPlacementFromTicket` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -60237,7 +60787,7 @@ BEGIN
LEAVE l;
END IF;
- CALL itemShelvingSale_addBySale(vSaleFk);
+ CALL itemShelvingSale_addBySale(vSaleFk, NULL);
END LOOP;
CLOSE vSales;
END ;;
@@ -60256,105 +60806,181 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingSale_addBySale`(
- vSaleFk INT
+CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingSale_addBySale`(
+ vSaleFk INT,
+ vSectorFk INT
)
-proc: BEGIN
-/**
- * Reserva una línea de venta en la ubicación más óptima
- *
- * @param vSaleFk Id de sale
- * @param vItemShelvingSaleFk Id de reserva
- */
- DECLARE vLastPickingOrder INT;
- DECLARE vDone INT DEFAULT FALSE;
- DECLARE vItemShelvingFk INT;
- DECLARE vAvailable INT;
- DECLARE vReservedQuantity INT;
- DECLARE vOutStanding INT;
- DECLARE vUserFk INT;
-
- DECLARE vItemShelvingAvailable CURSOR FOR
- SELECT ish.id itemShelvingFk,
- ish.available
- FROM sale s
- JOIN itemShelving ish ON ish.itemFk = s.itemFk
- JOIN shelving sh ON sh.code = ish.shelvingFk
- JOIN parking p ON p.id = sh.parkingFk
- JOIN sector sc ON sc.id = p.sectorFk
- JOIN productionConfig pc
- WHERE s.id = vSaleFk
- AND NOT sc.isHideForPickers
- ORDER BY s.id,
- p.pickingOrder >= vLastPickingOrder,
- sh.priority DESC,
- ish.available >= s.quantity DESC,
- s.quantity MOD ish.grouping = 0 DESC,
- ish.grouping DESC,
- IF(pc.orderMode = 'Location', p.pickingOrder, ish.created);
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- SELECT MAX(p.pickingOrder), s.quantity - SUM(IFNULL(iss.quantity, 0))
- INTO vLastPickingOrder, vOutStanding
- FROM sale s
- LEFT JOIN itemShelvingSale iss ON iss.saleFk = s.id
- LEFT JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
- LEFT JOIN shelving sh ON sh.code = ish.shelvingFk
- LEFT JOIN parking p ON p.id = sh.parkingFk
- WHERE s.id = vSaleFk;
-
- IF vOutStanding <= 0 THEN
- LEAVE proc;
- END IF;
-
- SELECT getUser() INTO vUserFk;
-
- OPEN vItemShelvingAvailable;
- l: LOOP
- SET vDone = FALSE;
- FETCH vItemShelvingAvailable INTO vItemShelvingFk, vAvailable;
-
- IF vOutStanding <= 0 OR vDone THEN
- LEAVE l;
- END IF;
-
- START TRANSACTION;
-
- SELECT id INTO vItemShelvingFk
- FROM itemShelving
- WHERE id = vItemShelvingFk
- FOR UPDATE;
-
- SELECT LEAST(vOutStanding, vAvailable) INTO vReservedQuantity;
- SET vOutStanding = vOutStanding - vReservedQuantity;
-
- IF vReservedQuantity > 0 THEN
-
- INSERT INTO itemShelvingSale(
- itemShelvingFk,
- saleFk,
- quantity,
- userFk)
- SELECT vItemShelvingFk,
- vSaleFk,
- vReservedQuantity,
- vUserFk;
-
- UPDATE itemShelving
- SET available = available - vReservedQuantity
- WHERE id = vItemShelvingFk;
-
- END IF;
-
- COMMIT;
- END LOOP;
- CLOSE vItemShelvingAvailable;
+proc: BEGIN
+/**
+ * Reserva una línea de venta en la ubicación más óptima
+ *
+ * @param vSaleFk Id de sale
+ * @param vItemShelvingSaleFk Id de reserva
+ * @param vSectorFk Id del sector del operator
+ */
+ DECLARE vLastPickingOrder INT;
+ DECLARE vDone INT DEFAULT FALSE;
+ DECLARE vItemShelvingFk INT;
+ DECLARE vAvailable INT;
+ DECLARE vReservedQuantity INT;
+ DECLARE vOutStanding INT;
+ DECLARE vUserFk INT;
+ DECLARE vTotalReservedQuantity INT;
+ DECLARE vSaleQuantity INT;
+
+ DECLARE vItemShelvingAvailable CURSOR FOR
+ SELECT ish.id itemShelvingFk,
+ ish.available
+ FROM sale s
+ JOIN itemShelving ish ON ish.itemFk = s.itemFk
+ JOIN shelving sh ON sh.code = ish.shelvingFk
+ JOIN parking p ON p.id = sh.parkingFk
+ JOIN sector sc ON sc.id = p.sectorFk
+ JOIN productionConfig pc
+ WHERE s.id = vSaleFk
+ AND NOT sc.isHideForPickers
+ AND (sc.id = vSectorFk OR vSectorFk IS NULL)
+ ORDER BY s.id,
+ p.pickingOrder >= vLastPickingOrder,
+ sh.priority DESC,
+ ish.available >= s.quantity DESC,
+ s.quantity MOD ish.grouping = 0 DESC,
+ ish.grouping DESC,
+ IF(pc.orderMode = 'Location', p.pickingOrder, ish.created);
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ SELECT MAX(p.pickingOrder), s.quantity - SUM(IFNULL(iss.quantity, 0)), s.quantity
+ INTO vLastPickingOrder, vOutStanding, vSaleQuantity
+ FROM sale s
+ LEFT JOIN itemShelvingSale iss ON iss.saleFk = s.id
+ LEFT JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
+ LEFT JOIN shelving sh ON sh.code = ish.shelvingFk
+ LEFT JOIN parking p ON p.id = sh.parkingFk
+ WHERE s.id = vSaleFk;
+
+ IF vOutStanding <= 0 THEN
+ LEAVE proc;
+ END IF;
+
+ SELECT getUser() INTO vUserFk;
+
+ OPEN vItemShelvingAvailable;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vItemShelvingAvailable INTO vItemShelvingFk, vAvailable;
+
+ IF vOutStanding <= 0 OR vDone THEN
+ SELECT SUM(IFNULL(quantity, 0))
+ INTO vTotalReservedQuantity
+ FROM itemShelvingSale
+ WHERE saleFk = vSaleFk;
+
+ IF vTotalReservedQuantity <> vSaleQuantity THEN
+ UPDATE sale
+ SET quantity = vTotalReservedQuantity
+ WHERE id = vSaleFk;
+ END IF;
+ LEAVE l;
+ END IF;
+
+ START TRANSACTION;
+
+ SELECT id INTO vItemShelvingFk
+ FROM itemShelving
+ WHERE id = vItemShelvingFk
+ FOR UPDATE;
+
+ SELECT LEAST(vOutStanding, vAvailable) INTO vReservedQuantity;
+ SET vOutStanding = vOutStanding - vReservedQuantity;
+
+ IF vReservedQuantity > 0 THEN
+
+ INSERT INTO itemShelvingSale(
+ itemShelvingFk,
+ saleFk,
+ quantity,
+ userFk,
+ isPicked)
+ SELECT vItemShelvingFk,
+ vSaleFk,
+ vReservedQuantity,
+ vUserFk,
+ FALSE;
+
+ UPDATE itemShelving
+ SET available = available - vReservedQuantity
+ WHERE id = vItemShelvingFk;
+
+ END IF;
+
+ COMMIT;
+ END LOOP;
+ CLOSE vItemShelvingAvailable;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingSale_addBySaleGroup` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `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 ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -60381,8 +61007,9 @@ BEGIN
*/
DECLARE vDone BOOL DEFAULT FALSE;
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
@@ -60396,6 +61023,10 @@ BEGIN
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;
@@ -60405,7 +61036,7 @@ BEGIN
LEAVE l;
END IF;
- CALL itemShelvingSale_addBySale(vSaleFk);
+ CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk);
END LOOP;
CLOSE vSales;
END ;;
@@ -60431,9 +61062,10 @@ proc: BEGIN
*/
DECLARE vDone BOOL;
DECLARE vSaleFk INT;
+ DECLARE vSectorFk INT;
DECLARE vSales CURSOR FOR
- SELECT DISTINCT saleFk FROM tSale;
+ SELECT DISTINCT saleFk, sectorFk FROM tSale;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
@@ -60451,24 +61083,25 @@ proc: BEGIN
CREATE OR REPLACE TEMPORARY TABLE tSale
ENGINE = MEMORY
- SELECT id, saleFk FROM itemShelvingSaleReserve;
+ SELECT id, saleFk, sectorFk FROM itemShelvingSaleReserve;
OPEN vSales;
myLoop: LOOP
SET vDone = FALSE;
- FETCH vSales INTO vSaleFk;
+ FETCH vSales INTO vSaleFk, vSectorFk;
IF vDone THEN
LEAVE myLoop;
END IF;
- CALL itemShelvingSale_addBySale (vSaleFk);
+ CALL itemShelvingSale_addBySale (vSaleFk, vSectorFk);
END LOOP;
CLOSE vSales;
- DELETE iss FROM itemShelvingSaleReserve iss JOIN tSale s ON s.id = iss.id;
+ DELETE iss FROM itemShelvingSaleReserve iss
+ JOIN tSale s ON s.id = iss.id AND s.sectorFk = iss.sectorFk;
DROP TEMPORARY TABLE tSale;
@@ -60489,52 +61122,58 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingSale_reallocate`(
- vItemShelvingFk INT(10),
- vItemFk INT(10)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingSale_reallocate`(
+ vItemShelvingFk INT(10),
+ vItemFk INT(10),
+ vSectorFk INT
)
-BEGIN
-/**
- * Elimina reservas de un itemShelving e intenta reservar en otra ubicación
- *
- * @param vItemShelvingFk Id itemShelving
- */
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- START TRANSACTION;
-
- SELECT id INTO vItemShelvingFk
- FROM itemShelving
- WHERE id = vItemShelvingFk
- FOR UPDATE;
-
- UPDATE itemShelving
- SET visible = 0,
- available = 0
- WHERE id = vItemShelvingFk
- AND itemFk = vItemFk;
-
- INSERT INTO itemShelvingSaleReserve (saleFk)
- SELECT DISTINCT iss.saleFk
- FROM itemShelvingSale iss
- JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
- WHERE iss.itemShelvingFk = vItemShelvingFk
- AND ish.itemFk = vItemFk
- AND NOT iss.isPicked;
-
- DELETE iss
- FROM itemShelvingSale iss
- JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
- WHERE iss.itemShelvingFk = vItemShelvingFk
- AND ish.itemFk = vItemFk
- AND NOT iss.isPicked;
- COMMIT;
-
- CALL itemShelvingSale_doReserve();
+BEGIN
+/**
+ * Elimina reservas de un itemShelving e intenta reservar en otra ubicación
+ *
+ * @param vItemShelvingFk Id itemShelving
+ * @param vItemFk Id del artículo
+ * @param vSectorFk Id del sector
+ */
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ START TRANSACTION;
+
+ UPDATE itemShelving
+ SET visible = 0,
+ available = 0
+ WHERE id = vItemShelvingFk
+ AND itemFk = vItemFk;
+
+ SELECT iss.id
+ FROM itemShelvingSale iss
+ JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
+ WHERE iss.itemShelvingFk = vItemShelvingFk
+ AND ish.itemFk = vItemFk
+ AND NOT iss.isPicked
+ FOR UPDATE;
+
+ 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
+ AND ish.itemFk = vItemFk
+ AND NOT iss.isPicked;
+
+ DELETE iss
+ FROM itemShelvingSale iss
+ JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
+ WHERE iss.itemShelvingFk = vItemShelvingFk
+ AND ish.itemFk = vItemFk
+ AND NOT iss.isPicked;
+ COMMIT;
+
+ CALL itemShelvingSale_doReserve();
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -60601,7 +61240,8 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingSale_setQuantity`(
vItemShelvingSaleFk INT(10),
vQuantity DECIMAL(10,0),
- vIsItemShelvingSaleEmpty BOOLEAN
+ vIsItemShelvingSaleEmpty BOOLEAN,
+ vSectorFk INT
)
BEGIN
/**
@@ -60613,6 +61253,7 @@ BEGIN
* @param vQuantity Cantidad real que se ha cogido de la ubicación
* @param vIsItemShelvingSaleEmpty determina si la ubicación itemShelvingSale se ha
* quedado vacio tras el movimiento
+ * @param vSectorFk Id del sector
*/
DECLARE vSaleFk INT;
DECLARE vItemShelvingFk INT;
@@ -60620,6 +61261,7 @@ BEGIN
DECLARE vRemainingQuantity INT;
DECLARE vItemFk INT;
DECLARE vTotalQuantity INT;
+ DECLARE vStateCode VARCHAR(45);
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
@@ -60627,21 +61269,35 @@ BEGIN
RESIGNAL;
END;
+ IF vQuantity > vReservedQuantity
+ OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
+ OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
+ CALL util.throw('The quantity cannot be different from the reserved');
+ END IF;
+
IF (SELECT isPicked FROM itemShelvingSale WHERE id = vItemShelvingSaleFk) THEN
CALL util.throw('Reservation completed');
END IF;
- SELECT s.itemFk, iss.saleFk, iss.itemShelvingFk, SUM(IFNULL(iss.quantity,0))
- INTO vItemFk, vSaleFk, vItemShelvingFk, vReservedQuantity
+ SELECT s.itemFk,
+ iss.saleFk,
+ iss.itemShelvingFk,
+ SUM(IFNULL(iss.quantity,0)),
+ IF(sgd.id, 'PREVIOUS_PREPARATION', 'PREPARED')
+ INTO vItemFk,
+ vSaleFk,
+ vItemShelvingFk,
+ vReservedQuantity,
+ vStateCode
FROM itemShelvingSale iss
JOIN sale s ON s.id = iss.saleFk
+ LEFT JOIN vn.saleGroupDetail sgd ON sgd.saleFk = iss.saleFk
WHERE iss.id = vItemShelvingSaleFk
AND NOT iss.isPicked;
IF vQuantity > vReservedQuantity
- OR (vQuantity < vReservedQuantity AND
- (NOT vIsItemShelvingSaleEmpty OR vIsItemShelvingSaleEmpty IS NULL))
- OR (vIsItemShelvingSaleEmpty IS NOT NULL AND vQuantity = vReservedQuantity) THEN
+ OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
+ OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
CALL util.throw('The quantity cannot be different from the reserved');
END IF;
@@ -60661,7 +61317,7 @@ BEGIN
SET visible = GREATEST(0, visible - vQuantity)
WHERE id = vItemShelvingFk;
- SELECT SUM(IF(isPicked, 0, quantity)), SUM(quantity)
+ SELECT SUM(IF(isPicked OR id = vItemShelvingSaleFk, 0, quantity)), SUM(quantity)
INTO vRemainingQuantity, vTotalQuantity
FROM itemShelvingSale
WHERE saleFk = vSaleFk;
@@ -60673,7 +61329,7 @@ BEGIN
vTotalQuantity,
`account`.`myUser_getId`(),
NULL,
- 'PREPARED',
+ vStateCode,
TRUE);
UPDATE sale s
@@ -60685,9 +61341,9 @@ BEGIN
COMMIT;
IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN
- INSERT INTO itemShelvingSaleReserve (saleFk)
- SELECT vSaleFk;
- CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk);
+ INSERT INTO itemShelvingSaleReserve (saleFk, sectorFk)
+ SELECT vSaleFk, vSectorFk;
+ CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk);
END IF;
END ;;
DELIMITER ;
@@ -60880,7 +61536,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
@@ -61083,7 +61739,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
@@ -61202,7 +61859,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
@@ -61484,6 +62141,8 @@ BEGIN
WHERE p.pickingOrder BETWEEN vPickingOrderFrom AND vPickingOrderTo
AND p.sectorFk = vSectorFk
ORDER BY p.pickingOrder;
+
+ DROP TEMPORARY TABLE tmp.stockMisfit;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -61608,28 +62267,26 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_transfer`(
)
BEGIN
/**
- * Transfiere producto de una ubicación a otra, fusionando si coincide el
- * packing y la fecha.
+ * Transfiere producto de una ubicación a otra
+ * fusionando si coincide el packing y la fecha.
*
* @param vItemShelvingFk Identificador de itemShelving
* @param vShelvingFk Identificador de shelving
*/
- DECLARE vNewItemShelvingFk INT DEFAULT 0;
+ DECLARE vNewItemShelvingFk INT;
- SELECT MAX(ish.id)
- INTO vNewItemShelvingFk
+ SELECT MAX(ish.id) INTO vNewItemShelvingFk
FROM itemShelving ish
JOIN (
- SELECT
- itemFk,
- packing,
- created,
- buyFk
+ SELECT itemFk,
+ packing,
+ created,
+ buyFk
FROM itemShelving
WHERE id = vItemShelvingFk
) ish2 ON ish2.itemFk = ish.itemFk
AND ish2.packing = ish.packing
- AND date(ish2.created) = date(ish.created)
+ AND DATE(ish2.created) = DATE(ish.created)
AND ish2.buyFk = ish.buyFk
WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci;
@@ -61642,11 +62299,17 @@ BEGIN
DELETE FROM itemShelving
WHERE id = vItemShelvingFk;
ELSE
- UPDATE itemShelving
- SET shelvingFk = vShelvingFk
- WHERE id = vItemShelvingFk;
+ IF (SELECT EXISTS(SELECT id FROM shelving
+ WHERE code = vShelvingFk COLLATE utf8_unicode_ci)) THEN
+
+ UPDATE itemShelving
+ SET shelvingFk = vShelvingFk
+ WHERE id = vItemShelvingFk;
+ ELSE
+ CALL util.throw('The shelving not exists');
+ END IF;
END IF;
- SELECT true;
+ SELECT TRUE;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -62006,6 +62669,81 @@ SET tag8 = t.name, value8 = it.value
WHERE it.priority = 4
AND (vItem IS NULL OR vItem = it.itemFk);
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `item_calcVisible` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `item_calcVisible`(
+ vSelf INT,
+ vWarehouseFk INT
+)
+BEGIN
+/**
+ * Calcula el visible de un artículo o de todos.
+ *
+ * @param vWarehouse Warehouse id
+ * @param vSelf Item id
+ * @param tmp.itemVisible(item_id, stock, visible)
+ */
+ DECLARE vDated DATE DEFAULT util.VN_CURDATE();
+ DECLARE vTomorrow DATETIME DEFAULT util.tomorrow();
+
+ INSERT INTO tmp.itemVisible(item_id, visible)
+ SELECT itemFk, SUM(quantity)
+ FROM (
+ SELECT i.itemFk, i.quantity
+ FROM itemTicketOut i
+ LEFT JOIN ticketState ts ON ts.ticketFk = i.ticketFk
+ JOIN `state` s ON s.id = ts.stateFk
+ JOIN warehouse w ON w.id = i.warehouseFk
+ LEFT JOIN (
+ SELECT DISTINCT st.saleFk
+ FROM saleTracking st
+ JOIN state s ON s.id = st.stateFk
+ WHERE st.created > vDated
+ AND (s.isPicked OR st.isChecked)
+ ) stPrevious ON `stPrevious`.`saleFk` = i.saleFk
+ WHERE (vWarehouseFk IS NULL OR i.warehouseFk = vWarehouseFk)
+ AND (vSelf IS NULL OR i.itemFk = vSelf)
+ AND (s.isPicked OR i.reserved OR stPrevious.saleFk)
+ AND i.shipped >= vDated AND i.shipped < vTomorrow
+ AND w.isComparative
+ UNION ALL
+ SELECT iei.itemFk, iei.quantity
+ FROM itemEntryIn iei
+ JOIN warehouse w ON w.id = iei.warehouseInFk
+ WHERE iei.isReceived
+ AND iei.landed >= vDated AND iei.landed < vTomorrow
+ AND (vWarehouseFk IS NULL OR iei.warehouseInFk = vWarehouseFk)
+ AND (vSelf IS NULL OR iei.itemFk = vSelf)
+ AND NOT iei.isVirtualStock
+ AND w.isComparative
+ UNION ALL
+ SELECT ieo.itemFk, ieo.quantity
+ FROM itemEntryOut ieo
+ JOIN warehouse w ON w.id = ieo.warehouseOutFk
+ WHERE ieo.isDelivered
+ AND ieo.shipped >= vDated
+ AND ieo.shipped < vTomorrow
+ AND (vWarehouseFk IS NULL OR ieo.warehouseOutFk = vWarehouseFk)
+ AND (vSelf IS NULL OR ieo.itemFk = vSelf)
+ AND w.isComparative
+ ) t
+ GROUP BY itemFk
+ ON DUPLICATE KEY UPDATE
+ visible = IFNULL(stock, 0) + VALUES(visible);
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -62246,19 +62984,20 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `item_comparative`(
)
proc: BEGIN
/**
- * Genera una tabla de comparativa de artículos por itemType/comprador/fecha.
- * Los datos se calculan en función de los parámetros proporcionados.
+ * Generates a comparison table of items by itemType/buyer/date.
+ * The data is calculated based on the provided parameters.
*
- * @param vDate La fecha para la cual se generará la comparativa.
- * @param vDayRange El rango de días a considerar para la comparativa.
- * @param vWarehouseFk El identificador del almacén para filtrar los artículos.
- * @param vAvailableSince La fecha de disponibilidad desde la cual se consideran los artículos disponibles.
- * @param vBuyerFk El identificador del comprador para filtrar los artículos.
- * @param vIsFloramondo Indica si se deben incluir solo los artículos de Floramondo (opcional).
- * @param vCountryFk El identificador del país.
- * @param tmp.comparativeFilterType(filterFk INT ,itemTypeFk INT)
+ * @param vDate The date for which the comparison will be generated.
+ * @param vDayRange The range of days to consider for the comparison.
+ * @param vWarehouseFk The warehouse identifier to filter the items.
+ * @param vAvailableSince The availability date from which the items are considered available.
+ * @param vBuyerFk The buyer identifier to filter the items.
+ * @param vIsFloramondo Indicates whether only Floramondo items should be included (optional).
+ * @param vCountryFk The country identifier.
+ * @param tmp.comparativeFilterType(filterFk INT, itemTypeFk INT)
* @return tmp.comparative
*/
+
DECLARE vDayRangeStart DATE;
DECLARE vDayRangeEnd DATE;
DECLARE w1, w2, w3, w4, w5, w6, w7 INT;
@@ -62631,7 +63370,7 @@ BEGIN
END IF;
SELECT warehouseFk INTO vWarehouseFk
- FROM userConfig
+ FROM userMultiConfig
WHERE userFk = account.myUser_getId();
IF NOT vWarehouseFk OR vWarehouseFk IS NULL THEN
@@ -62682,7 +63421,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
@@ -63073,94 +63812,84 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getBalance`(
vItemFk INT,
vWarehouseFk INT,
- vDate DATETIME
+ vDated DATETIME
)
BEGIN
/**
- * @vItemFk item a buscar
- * @vWarehouseFk almacen donde buscar
- * @vDate Si la fecha es null, muestra el histórico desde el inventario.
- * Si la fecha no es null, muestra histórico desde la fecha de vDate.
+ * Calcula el balance de un artículo.
+ *
+ * @vItemFk Id de artículo
+ * @vWarehouseFk Id de almacén
+ * @vDated Fecha a calcular, si es NULL muestra el histórico desde el inventario
*/
- DECLARE vDateInventory DATETIME;
+ DECLARE vDateInventory DATETIME
+ DEFAULT (
+ SELECT IF(vDated, uc.mockUtcTime, c.inventoried)
+ FROM config c
+ JOIN util.config uc
+ );
+ DECLARE vSupplierInventoryFk INT
+ DEFAULT (SELECT supplierFk FROM inventoryConfig);
- IF vDate IS NULL THEN
- SELECT inventoried INTO vDateInventory
- FROM config;
- ELSE
- SELECT mockUtcTime INTO vDateInventory
- FROM util.config;
+ IF NOT vSupplierInventoryFk OR NOT vDateInventory THEN
+ CALL util.throw('Config variables are not set');
END IF;
- CREATE OR REPLACE TEMPORARY TABLE tItemDiary(
- shipped DATE,
- `in` INT(11),
- `out` INT(11),
- alertLevel INT(11),
- stateName VARCHAR(20),
- `name` VARCHAR(50),
- reference VARCHAR(50),
- origin INT(11),
- clientFk INT(11),
- isPicked INT(11),
- isTicket TINYINT(1),
- lineFk INT(11),
- `order` TINYINT(3) UNSIGNED,
- clientType VARCHAR(20),
- claimFk INT(10) UNSIGNED,
- inventorySupplierFk INT(10)
- );
-
- INSERT INTO tItemDiary
+ CREATE OR REPLACE TEMPORARY TABLE tItemDiary
+ ENGINE = MEMORY
WITH entriesIn AS (
- SELECT tr.landed shipped,
+ SELECT 'entry' originType,
+ e.id originId,
+ tr.landed shipped,
b.quantity `in`,
NULL `out`,
st.alertLevel ,
st.name stateName,
- s.name `name`,
e.invoiceNumber reference,
- e.id origin,
- s.id clientFk,
+ 'supplier' entityType,
+ s.id entityId,
+ s.name entityName,
IF(st.`code` = 'DELIVERED', TRUE, FALSE) isPicked,
FALSE isTicket,
b.id lineFk,
NULL `order`,
NULL clientType,
NULL claimFk,
- ec.inventorySupplierFk
+ vSupplierInventoryFk inventorySupplierFk
FROM vn.buy b
JOIN vn.entry e ON e.id = b.entryFk
JOIN vn.travel tr ON tr.id = e.travelFk
JOIN vn.supplier s ON s.id = e.supplierFk
- JOIN vn.state st ON st.`code` = IF( tr.landed < util.VN_CURDATE()
+ JOIN vn.state st ON st.`code` = IF(tr.landed < util.VN_CURDATE()
OR (util.VN_CURDATE() AND tr.isReceived),
'DELIVERED',
'FREE')
- JOIN vn.entryConfig ec
WHERE tr.landed >= vDateInventory
- AND vWarehouseFk = tr.warehouseInFk
- AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
+ AND tr.warehouseInFk = vWarehouseFk
+ AND (s.id <> vSupplierInventoryFk OR vDated IS NULL)
AND b.itemFk = vItemFk
AND NOT e.isExcludedFromAvailable
AND NOT e.isRaid
- ), entriesOut AS (
- SELECT tr.shipped,
+ ),
+ entriesOut AS (
+ SELECT 'entry',
+ e.id originType,
+ tr.shipped,
NULL,
b.quantity,
st.alertLevel,
st.name stateName,
- s.name ,
e.invoiceNumber,
- e.id entryFk,
- s.id supplierFk,
+ 'supplier' entityType,
+ s.id entityId,
+ s.name,
IF(st.`code` = 'DELIVERED' , TRUE, FALSE),
FALSE isTicket,
b.id,
NULL `order`,
NULL clientType,
NULL claimFk,
- ec.inventorySupplierFk
+ vSupplierInventoryFk
FROM vn.buy b
JOIN vn.entry e ON e.id = b.entryFk
JOIN vn.travel tr ON tr.id = e.travelFk
@@ -63170,86 +63899,108 @@ BEGIN
OR (tr.shipped = util.VN_CURDATE() AND tr.isReceived),
'DELIVERED',
'FREE')
- JOIN vn.entryConfig ec
WHERE tr.shipped >= vDateInventory
- AND vWarehouseFk = tr.warehouseOutFk
- AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
+ AND tr.warehouseOutFk = vWarehouseFk
+ AND (s.id <> vSupplierInventoryFk OR vDated IS NULL)
AND b.itemFk = vItemFk
AND NOT e.isExcludedFromAvailable
AND NOT w.isFeedStock
AND NOT e.isRaid
- ), sales AS (
- SELECT DATE(t.shipped) shipped,
- s.quantity,
- st2.alertLevel,
- st2.name,
- t.nickname,
- t.refFk,
- t.id ticketFk,
- t.clientFk,
- s.id saleFk,
- st.`order`,
- c.typeFk,
- cb.claimFk
- FROM vn.sale s
- JOIN vn.ticket t ON t.id = s.ticketFk
- LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id
- LEFT JOIN vn.state st ON st.`code` = ts.`code`
- JOIN vn.client c ON c.id = t.clientFk
- JOIN vn.state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
- 'DELIVERED',
- IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
- 'FREE',
- IFNULL(ts.code, 'FREE')))
- LEFT JOIN vn.claimBeginning cb ON s.id = cb.saleFk
- WHERE t.shipped >= vDateInventory
- AND s.itemFk = vItemFk
- AND vWarehouseFk = t.warehouseFk
- ),sale AS (
- SELECT s.shipped,
+ ),
+ sales AS (
+ WITH itemSales AS (
+ SELECT DATE(t.shipped) shipped,
+ s.quantity,
+ st2.alertLevel,
+ st2.name,
+ t.refFk,
+ t.id ticketFk,
+ 'client' entityType,
+ t.clientFk entityId,
+ t.nickname,
+ s.id saleFk,
+ st.`order`,
+ c.typeFk,
+ cb.claimFk
+ FROM vn.sale s
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id
+ LEFT JOIN vn.state st ON st.code = ts.code
+ JOIN vn.client c ON c.id = t.clientFk
+ JOIN vn.state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
+ 'DELIVERED',
+ IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
+ 'FREE',
+ IFNULL(st.code, 'FREE')))
+ LEFT JOIN vn.claimBeginning cb ON cb.saleFk = s.id
+ WHERE t.shipped >= vDateInventory
+ AND s.itemFk = vItemFk
+ AND t.warehouseFk = vWarehouseFk
+ )
+ SELECT 'ticket',
+ s.ticketFk,
+ s.shipped,
NULL `in`,
s.quantity,
s.alertLevel,
s.name,
- s.nickname,
s.refFk,
- s.ticketFk,
- s.clientFk,
- IF(stk.saleFk, TRUE, NULL),
+ s.entityType,
+ s.entityId,
+ s.nickname,
+ IF(stk.saleFk, TRUE, FALSE),
TRUE,
s.saleFk,
s.`order`,
s.typeFk,
s.claimFk,
NULL
- FROM sales s
+ FROM itemSales s
LEFT JOIN vn.state stPrep ON stPrep.`code` = 'PREPARED'
LEFT JOIN vn.saleTracking stk ON stk.saleFk = s.saleFk
AND stk.stateFk = stPrep.id
GROUP BY s.saleFk
- ) SELECT shipped,
- `in`,
- `out`,
- alertLevel,
- stateName,
- `name`,
- reference,
- origin,
- clientFk,
- isPicked,
- isTicket,
- lineFk,
- `order`,
- clientType,
- claimFk,
- inventorySupplierFk
- FROM entriesIn
+ ),
+ orders AS (
+ SELECT 'order' originType,
+ o.id originId,
+ r.shipment,
+ NULL 'in',
+ r.amount,
+ NULL alertLevel,
+ NULL stateName,
+ NULL invoiceNumber,
+ 'client' entityType,
+ c.id,
+ c.name,
+ FALSE,
+ FALSE isTicket,
+ NULL buyFk,
+ NULL 'order',
+ c.typeFk,
+ NULL claimFk,
+ NULL
+ FROM hedera.orderRow r
+ JOIN hedera.`order` o ON o.id = r.orderFk
+ JOIN vn.client c ON c.id = o.customer_id
+ WHERE r.shipment >= vDateInventory
+ AND r.warehouseFk = vWarehouseFk
+ AND r.created >= (
+ SELECT SUBTIME(util.VN_NOW(), reserveTime)
+ FROM hedera.orderConfig
+ )
+ AND NOT o.confirmed
+ AND r.itemFk = vItemFk
+ )
+ SELECT * FROM entriesIn
UNION ALL
SELECT * FROM entriesOut
UNION ALL
- SELECT * FROM sale
+ SELECT * FROM sales
+ UNION ALL
+ SELECT * FROM orders
ORDER BY shipped,
- (inventorySupplierFk = clientFk) DESC,
+ (inventorySupplierFk = entityId) DESC,
alertLevel DESC,
isTicket,
`order` DESC,
@@ -63257,19 +64008,20 @@ BEGIN
`in` DESC,
`out` DESC;
- IF vDate IS NULL THEN
-
+ IF vDated IS NULL THEN
SET @a := 0;
SET @currentLineFk := 0;
SET @shipped := '';
- SELECT DATE(@shipped:= t.shipped) shipped,
+ SELECT t.originType,
+ t.originId,
+ DATE(@shipped:= t.shipped) shipped,
t.alertLevel,
t.stateName,
- t.origin,
t.reference,
- t.clientFk,
- t.name,
+ t.entityType,
+ t.entityId,
+ t.entityName,
t.`in` invalue,
t.`out`,
@a := @a + IFNULL(t.`in`, 0) - IFNULL(t.`out`, 0) balance,
@@ -63285,37 +64037,41 @@ BEGIN
t.`order`
FROM tItemDiary t
LEFT JOIN alertLevel a ON a.id = t.alertLevel;
-
ELSE
SELECT IFNULL(SUM(IFNULL(`in`, 0)) - SUM(IFNULL(`out`, 0)), 0) INTO @a
FROM tItemDiary
- WHERE shipped < vDate;
+ WHERE shipped < vDated;
- SELECT vDate shipped,
- 0 alertLevel,
- 0 stateName,
- 0 origin,
- '' reference,
- 0 clientFk,
- 'Inventario calculado',
+ SELECT NULL originType,
+ NULL originId,
+ vDated shipped,
+ NULL alertLevel,
+ NULL stateName,
+ NULL reference,
+ NULL entityType,
+ NULL entityId,
+ 'Inventario calculado' entityName,
@a invalue,
NULL `out`,
@a balance,
- 0 lastPreparedLineFk,
- 0 isTicket,
- 0 lineFk,
- 0 isPicked,
- 0 clientType,
- 0 claimFk,
+ NULL lastPreparedLineFk,
+ NULL isTicket,
+ NULL lineFk,
+ NULL isPicked,
+ NULL clientType,
+ NULL claimFk,
NULL `order`
UNION ALL
- SELECT shipped,
+ SELECT originType,
+ originId,
+ shipped,
alertlevel,
stateName,
- origin,
- reference,
- clientFk,
- name, `in`,
+ reference,
+ entityType,
+ entityId,
+ entityName,
+ `in`,
`out`,
@a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0),
0,
@@ -63326,7 +64082,7 @@ BEGIN
claimFk,
`order`
FROM tItemDiary
- WHERE shipped >= vDate;
+ WHERE shipped >= vDated;
END IF;
DROP TEMPORARY TABLE tItemDiary;
@@ -63346,7 +64102,10 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getInfo`(IN `vBarcode` VARCHAR(22), IN `vWarehouseFk` INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getInfo`(
+ `vBarcode` VARCHAR(22),
+ `vWarehouseFk` INT
+)
BEGIN
/**
* Devuelve información relativa al item correspondiente del vBarcode pasado
@@ -63358,12 +64117,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());
-
- SELECT barcodeToItem(vBarcode) INTO vItemFk;
+ CALL cache.available_refresh(vCacheAvailableFk, FALSE, vWarehouseFk, vDated);
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vDated);
+
SELECT SUM(visible) INTO vVisibleItemShelving
FROM itemShelvingStock
WHERE itemFk = vItemFk
@@ -63501,39 +64262,42 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getMinacum`(IN vWarehouseFk TINYINT, IN vDatedFrom DATETIME, IN vRange INT, IN vItemFk INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `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
@@ -63544,10 +64308,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,
@@ -63557,27 +64321,46 @@ 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,
+ tmp.itemCalc;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -63695,7 +64478,7 @@ BEGIN
WHEN b.groupingMode = 'grouping' THEN b.grouping
WHEN b.groupingMode = 'packing' THEN b.packing
ELSE 1
- END AS minQuantity,
+ END minQuantity,
v.visible located,
b.price2
FROM vn.item i
@@ -63820,62 +64603,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `item_GetVisible` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb4 */ ;
-/*!50003 SET character_set_results = utf8mb4 */ ;
-/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `item_GetVisible`(vWarehouse SMALLINT, vItem INT)
-BEGIN
- DECLARE vTomorrow DATETIME DEFAULT TIMESTAMPADD(DAY, 1, util.VN_CURDATE());
-
- INSERT INTO tmp.itemVisible (item_id, visible)
- SELECT item_id, SUM(amount) amount
- FROM (
- SELECT i.itemFk AS item_id, quantity AS amount
- FROM itemTicketOut i
- LEFT JOIN ticketState ts ON ts.ticketFk = i.ticketFk
- JOIN state s ON s.id = ts.stateFk
- LEFT JOIN (SELECT DISTINCT saleFk
- FROM saleTracking st
- JOIN state s ON s.id = st.stateFk
- WHERE st.created > util.VN_CURDATE()
- AND (s.isPicked OR st.isChecked)
- ) stPrevious ON `stPrevious`.`saleFk` = i.saleFk
- WHERE i.warehouseFk = vWarehouse
- AND (vItem IS NULL OR i.itemFk = vItem)
- AND (s.isPicked OR i.reserved OR stPrevious.saleFk )
- AND i.shipped >= util.VN_CURDATE() AND i.shipped < vTomorrow
- UNION ALL
- SELECT iei.itemFk, quantity
- FROM itemEntryIn iei
- WHERE (iei.isReceived != FALSE /*OR ip.modificationDate > util.VN_CURDATE()*/)
- AND iei.landed >= util.VN_CURDATE() AND iei.landed < vTomorrow
- AND iei.warehouseInFk = vWarehouse
- AND (vItem IS NULL OR iei.itemFk = vItem)
- AND iei.isVirtualStock is FALSE
- UNION ALL
- SELECT itemFk, quantity
- FROM itemEntryOut
- WHERE isDelivered != FALSE
- AND shipped >= util.VN_CURDATE() AND shipped < vTomorrow
- AND warehouseOutFk = vWarehouse
- AND (vItem IS NULL OR itemFk = vItem)
- ) t
- GROUP BY item_id
- ON DUPLICATE KEY UPDATE
- visible = IFNULL(stock,0) + VALUES(visible);
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `item_multipleBuy` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -63898,7 +64625,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))
@@ -64033,12 +64760,18 @@ BEGIN
i.tag8 = JSON_VALUE(vTags, '$.8'),
i.tag9 = JSON_VALUE(vTags, '$.9'),
i.tag10 = JSON_VALUE(vTags, '$.10'),
+ i.tag11 = JSON_VALUE(vTags, '$.11'),
+ i.tag12 = JSON_VALUE(vTags, '$.12'),
+ i.tag13 = JSON_VALUE(vTags, '$.13'),
i.value5 = JSON_VALUE(vValues, '$.5'),
i.value6 = JSON_VALUE(vValues, '$.6'),
i.value7 = JSON_VALUE(vValues, '$.7'),
i.value8 = JSON_VALUE(vValues, '$.8'),
i.value9 = JSON_VALUE(vValues, '$.9'),
i.value10 = JSON_VALUE(vValues, '$.10'),
+ i.value11 = JSON_VALUE(vValues, '$.11'),
+ i.value12 = JSON_VALUE(vValues, '$.12'),
+ i.value13 = JSON_VALUE(vValues, '$.13'),
i.producerFk = p.id,
i.inkFk = k.id,
i.originFk = IFNULL(o.id, i.originFk)
@@ -64211,7 +64944,8 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `item_setVisibleDiscard`(
vAddressFk INT)
BEGIN
/**
- * Procedimiento para dar dar de baja/alta un item, si vAddressFk es NULL se entiende que se da de alta y se toma el addressFk de la configuración
+ * Procedimiento para dar dar de baja/alta un item, si vAdressFk es NULL
+ * se entiende que se da de alta y se toma el addressFk de la configuración
*
* @param vItemFk Identificador del ítem
* @param vWarehouseFk id del warehouse
@@ -64313,232 +65047,256 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `item_valuateInventory` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `item_valuateInventory`(
-vDated DATE
+ vDated DATE,
+ vItemTypeFk INT,
+ vItemCategoryFk INT
)
BEGIN
-DECLARE vInventoried DATE;
-DECLARE vHasNotInventory BOOLEAN DEFAULT FALSE;
-DECLARE vInventoryClone DATE;
-DECLARE vDateDayEnd DATETIME;
-DECLARE vInventorySupplierFk INT;
+ DECLARE vInventoried DATE;
+ DECLARE vHasNotInventory BOOLEAN DEFAULT FALSE;
+ DECLARE vInventoryClone DATE;
+ DECLARE vDateDayEnd DATETIME;
+ DECLARE vInventorySupplierFk INT;
-SELECT inventorySupplierFk INTO vInventorySupplierFk
-FROM entryConfig;
+ SELECT inventorySupplierFk INTO vInventorySupplierFk
+ FROM entryConfig;
-SET vDateDayEnd = util.dayEnd(vDated);
+ SET vDateDayEnd = util.dayEnd(vDated);
-SELECT tr.landed INTO vInventoried
-FROM travel tr
-JOIN `entry` e ON e.travelFk = tr.id
-WHERE tr.landed <= vDateDayEnd
-AND e.supplierFk = vInventorySupplierFk
-ORDER BY tr.landed DESC
-LIMIT 1;
+ SELECT tr.landed INTO vInventoried
+ FROM travel tr
+ JOIN `entry` e ON e.travelFk = tr.id
+ WHERE tr.landed <= vDateDayEnd
+ AND e.supplierFk = vInventorySupplierFk
+ ORDER BY tr.landed DESC
+ LIMIT 1;
-SET vHasNotInventory = (vInventoried IS NULL);
+ SET vHasNotInventory = (vInventoried IS NULL);
+
+ IF vHasNotInventory THEN
+ SELECT landed INTO vInventoryClone
+ FROM travel tr
+ JOIN `entry` e ON e.travelFk = tr.id
+ WHERE tr.landed >= vDated
+ AND e.supplierFk = vInventorySupplierFk
+ ORDER BY landed ASC
+ LIMIT 1;
-IF vHasNotInventory THEN
-SELECT landed INTO vInventoryClone
-FROM travel tr
-JOIN `entry` e ON e.travelFk = tr.id
-WHERE tr.landed >= vDated
-AND e.supplierFk = vInventorySupplierFk
-ORDER BY landed ASC
-LIMIT 1;
+ SET vInventoried = vDated + INTERVAL 1 DAY;
+ SET vDateDayEnd = vInventoryClone;
+ END IF;
-SET vInventoried = vDated + INTERVAL 1 DAY;
-SET vDateDayEnd = vInventoryClone;
-END IF;
+ CREATE OR REPLACE TEMPORARY TABLE tInventory(
+ warehouseFk SMALLINT,
+ itemFk BIGINT,
+ quantity INT,
+ volume DECIMAL(10,2),
+ cost DOUBLE DEFAULT 0,
+ total DOUBLE DEFAULT 0,
+ warehouseInventory VARCHAR(20),
+ PRIMARY KEY (warehouseInventory, itemFk) USING HASH
+ )
+ ENGINE = MEMORY;
+
+ -- Inventario inicial
+ IF vHasNotInventory THEN
+ INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
+ SELECT tr.warehouseInFk,
+ b.itemFk,
+ SUM(b.quantity),
+ w.name
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ JOIN `entry` e ON e.id = b.entryFk
+ JOIN travel tr ON tr.id = e.travelFk
+ JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
+ JOIN warehouse w ON w.id = tr.warehouseInFk
+ WHERE tr.landed = vDateDayEnd
+ AND e.supplierFk = vInventorySupplierFk
+ AND w.valuatedInventory
+ AND t.isInventory
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
+ GROUP BY tr.warehouseInFk, b.itemFk;
+ ELSE
+ INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
+ SELECT tr.warehouseInFk,
+ b.itemFk,
+ SUM(b.quantity),
+ w.name
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ JOIN `entry` e ON e.id = b.entryFk
+ JOIN travel tr ON tr.id = e.travelFk
+ JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
+ JOIN warehouse w ON w.id = tr.warehouseInFk
+ WHERE tr.landed = vInventoried
+ AND e.supplierFk = vInventorySupplierFk
+ AND w.valuatedInventory
+ AND t.isInventory
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
+ GROUP BY tr.warehouseInFk, b.itemFk;
+ END IF;
-CREATE OR REPLACE TEMPORARY TABLE tInventory(
-warehouseFk SMALLINT,
-itemFk BIGINT,
-quantity INT,
-volume DECIMAL(10,2),
-cost DOUBLE DEFAULT 0,
-total DOUBLE DEFAULT 0,
-warehouseInventory VARCHAR(20),
-PRIMARY KEY (warehouseInventory, itemFk) USING HASH
-)
-ENGINE = MEMORY;
+ -- Añadimos las entradas
+ INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
+ SELECT tr.warehouseInFk,
+ b.itemFk,
+ b.quantity * IF(vHasNotInventory, -1, 1),
+ w.name
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ JOIN `entry` e ON e.id = b.entryFk
+ JOIN travel tr ON tr.id = e.travelFk
+ JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
+ JOIN warehouse w ON w.id = tr.warehouseInFk
+ WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd
+ AND IF(tr.landed = util.VN_CURDATE(), tr.isReceived, TRUE)
+ AND NOT e.isRaid
+ AND w.valuatedInventory
+ AND t.isInventory
+ AND e.supplierFk <> vInventorySupplierFk
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
+ ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity * IF(vHasNotInventory, -1, 1));
+ -- Descontamos las salidas
+ INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
+ SELECT tr.warehouseOutFk,
+ b.itemFk,
+ b.quantity * IF(vHasNotInventory, 1, -1),
+ w.name
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ JOIN `entry` e ON e.id = b.entryFk
+ JOIN travel tr ON tr.id = e.travelFk
+ JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
+ JOIN warehouse w ON w.id = tr.warehouseOutFk
+ WHERE tr.shipped BETWEEN vInventoried AND vDateDayEnd
+ AND NOT e.isRaid
+ AND w.valuatedInventory
+ AND t.isInventory
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
+ ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity * IF(vHasNotInventory,1,-1));
-IF vHasNotInventory THEN
-INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
-SELECT tr.warehouseInFk,
-b.itemFk,
-SUM(b.quantity),
-w.name
-FROM buy b
-JOIN item i ON i.id = b.itemFk
-JOIN `entry` e ON e.id = b.entryFk
-JOIN travel tr ON tr.id = e.travelFk
-JOIN itemType t ON t.id = i.typeFk
-JOIN warehouse w ON w.id = tr.warehouseInFk
-WHERE tr.landed = vDateDayEnd
-AND e.supplierFk = vInventorySupplierFk
-AND w.valuatedInventory
-AND t.isInventory
-GROUP BY tr.warehouseInFk, b.itemFk;
-ELSE
-INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
-SELECT tr.warehouseInFk,
-b.itemFk,
-SUM(b.quantity),
-w.name
-FROM buy b
-JOIN item i ON i.id = b.itemFk
-JOIN `entry` e ON e.id = b.entryFk
-JOIN travel tr ON tr.id = e.travelFk
-JOIN itemType t ON t.id = i.typeFk
-JOIN warehouse w ON w.id = tr.warehouseInFk
-WHERE tr.landed = vInventoried
-AND e.supplierFk = vInventorySupplierFk
-AND w.valuatedInventory
-AND t.isInventory
-GROUP BY tr.warehouseInFk, b.itemFk;
-END IF;
+ -- Descontamos las lineas de venta
+ INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
+ SELECT w.id,
+ s.itemFk,
+ s.quantity * IF(vHasNotInventory, 1, -1),
+ w.name
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN `client` c ON c.id = t.clientFk
+ JOIN item i ON i.id = s.itemFk
+ JOIN itemType it ON it.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = it.categoryFk
+ JOIN warehouse w ON w.id = t.warehouseFk
+ WHERE t.shipped BETWEEN vInventoried AND vDateDayEnd
+ AND w.valuatedInventory
+ AND it.isInventory
+ AND (it.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
+ ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + s.quantity * IF(vHasNotInventory, 1, -1);
+ -- Volver a poner lo que esta aun en las estanterias
+ IF vDated = util.VN_CURDATE() THEN
+ INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
+ SELECT w.id,
+ s.itemFk,
+ s.quantity * IF(vHasNotInventory, 0, 1),
+ w.name
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN `client` c ON c.id = t.clientFk
+ JOIN item i ON i.id = s.itemFk
+ JOIN itemType it ON it.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = it.categoryFk
+ JOIN warehouse w ON w.id = t.warehouseFk
+ WHERE t.shipped BETWEEN vDated AND vDateDayEnd
+ AND NOT (s.isPicked OR t.isLabeled)
+ AND w.valuatedInventory
+ AND it.isInventory
+ AND (it.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
+ ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + s.quantity * IF(vHasNotInventory, 0, 1);
+ END IF;
-INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
-SELECT tr.warehouseInFk,
-b.itemFk,
-b.quantity * IF(vHasNotInventory, -1, 1),
-w.name
-FROM buy b
-JOIN item i ON i.id = b.itemFk
-JOIN `entry` e ON e.id = b.entryFk
-JOIN travel tr ON tr.id = e.travelFk
-JOIN itemType t ON t.id = i.typeFk
-JOIN warehouse w ON w.id = tr.warehouseInFk
-WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd
-AND IF(tr.landed = util.VN_CURDATE(), tr.isReceived, TRUE)
-AND NOT e.isRaid
-AND w.valuatedInventory
-AND t.isInventory
-AND e.supplierFk <> vInventorySupplierFk
-ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity * IF(vHasNotInventory, -1, 1));
+ -- Mercancia en transito
+ INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
+ SELECT tr.warehouseInFk,
+ b.itemFk,
+ b.quantity,
+ CONCAT(wOut.`name`, ' - ', wIn.`name`)
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ JOIN `entry` e ON e.id = b.entryFk
+ JOIN travel tr ON tr.id = e.travelFk
+ JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
+ JOIN warehouse wIn ON wIn.id = tr.warehouseInFk
+ JOIN warehouse wOut ON wOut.id = tr.warehouseOutFk
+ WHERE vDated >= tr.shipped AND vDated < tr.landed
+ AND NOT isRaid
+ AND wIn.valuatedInventory
+ AND t.isInventory
+ AND e.isConfirmed
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
+ ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity);
+
+ CALL buy_getUltimate (NULL, NULL, vDateDayEnd);
+ DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity;
-INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
-SELECT tr.warehouseOutFk,
-b.itemFk,
-b.quantity * IF(vHasNotInventory, 1, -1),
-w.name
-FROM buy b
-JOIN item i ON i.id = b.itemFk
-JOIN `entry` e ON e.id = b.entryFk
-JOIN travel tr ON tr.id = e.travelFk
-JOIN itemType t ON t.id = i.typeFk
-JOIN warehouse w ON w.id = tr.warehouseOutFk
-WHERE tr.shipped BETWEEN vInventoried AND vDateDayEnd
-AND NOT e.isRaid
-AND w.valuatedInventory
-AND t.isInventory
-ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity * IF(vHasNotInventory,1,-1));
+ UPDATE tInventory i
+ JOIN tmp.buyUltimate bu ON i.warehouseFk = bu.warehouseFk AND i.itemFk = bu.itemFk
+ JOIN buy b ON b.id = bu.buyFk
+ LEFT JOIN itemCost ic ON ic.itemFk = i.itemFk
+ AND ic.warehouseFk = i.warehouseFk
+ SET i.total = i.quantity * (IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0)),
+ i.cost = IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0),
+ i.volume = i.quantity * ic.cm3delivery / 1000000;
+ SELECT ti.warehouseFk,
+ i.id,
+ i.longName,
+ i.size,
+ ti.quantity,
+ ti.volume,
+ tp.name itemTypeName,
+ ic.name itemCategoryName,
+ ti.cost,
+ ti.total,
+ ti.warehouseInventory,
+ ic.display
+ FROM tInventory ti
+ JOIN warehouse w ON w.id = warehouseFk
+ JOIN item i ON i.id = ti.itemFk
+ JOIN itemType tp ON tp.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = tp.categoryFk
+ WHERE w.valuatedInventory
+ AND ti.total > 0;
-INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
-SELECT w.id,
-s.itemFk,
-s.quantity * IF(vHasNotInventory, 1, -1),
-w.name
-FROM sale s
-JOIN ticket t ON t.id = s.ticketFk
-JOIN `client` c ON c.id = t.clientFk
-JOIN item i ON i.id = s.itemFk
-JOIN itemType it ON it.id = i.typeFk
-JOIN warehouse w ON w.id = t.warehouseFk
-WHERE t.shipped BETWEEN vInventoried AND vDateDayEnd
-AND w.valuatedInventory
-AND it.isInventory
-ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + s.quantity * IF(vHasNotInventory, 1, -1);
-
-
-IF vDated = util.VN_CURDATE() THEN
-INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
-SELECT w.id,
-s.itemFk,
-s.quantity * IF(vHasNotInventory, 0, 1),
-w.name
-FROM sale s
-JOIN ticket t ON t.id = s.ticketFk
-JOIN `client` c ON c.id = t.clientFk
-JOIN item i ON i.id = s.itemFk
-JOIN itemType it ON it.id = i.typeFk
-JOIN warehouse w ON w.id = t.warehouseFk
-WHERE t.shipped BETWEEN vDated AND vDateDayEnd
-AND NOT (s.isPicked OR t.isLabeled)
-AND w.valuatedInventory
-AND it.isInventory
-ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + s.quantity * IF(vHasNotInventory, 0, 1);
-END IF;
-
-
-INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
-SELECT tr.warehouseInFk,
-b.itemFk,
-b.quantity,
-CONCAT(wOut.`name`, ' - ', wIn.`name`)
-FROM buy b
-JOIN item i ON i.id = b.itemFk
-JOIN `entry` e ON e.id = b.entryFk
-JOIN travel tr ON tr.id = e.travelFk
-JOIN itemType t ON t.id = i.typeFk
-JOIN warehouse wIn ON wIn.id = tr.warehouseInFk
-JOIN warehouse wOut ON wOut.id = tr.warehouseOutFk
-WHERE vDated >= tr.shipped AND vDated < tr.landed
-AND NOT isRaid
-AND wIn.valuatedInventory
-AND t.isInventory
-AND e.isConfirmed
-ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity);
-
-CALL buyUltimate(NULL, vDateDayEnd);
-
-DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity;
-
-UPDATE tInventory i
-JOIN tmp.buyUltimate bu ON i.warehouseFk = bu.warehouseFk AND i.itemFk = bu.itemFk
-JOIN buy b ON b.id = bu.buyFk
-LEFT JOIN itemCost ic ON ic.itemFk = i.itemFk
-AND ic.warehouseFk = i.warehouseFk
-SET i.total = i.quantity * (IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0)),
-i.cost = IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0),
-i.volume = i.quantity * ic.cm3delivery / 1000000;
-
-SELECT ti.warehouseFk,
-i.id,
-i.longName,
-i.size,
-ti.quantity,
-ti.volume,
-tp.name itemTypeName,
-ic.name itemCategoryName,
-ti.cost,
-ti.total,
-ti.warehouseInventory
-FROM tInventory ti
-JOIN warehouse w ON w.id = warehouseFk
-JOIN item i ON i.id = ti.itemFk
-JOIN itemType tp ON tp.id = i.typeFk
-JOIN itemCategory ic ON ic.id = tp.categoryFk
-WHERE w.valuatedInventory
-AND ti.total > 0;
-
-DROP TEMPORARY TABLE
-tmp.buyUltimate,
-tInventory;
+ DROP TEMPORARY TABLE
+ tmp.buyUltimate,
+ tInventory;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -65228,6 +65986,7 @@ proc: BEGIN
DECLARE vDateTo DATETIME;
DECLARE vDateToTomorrow DATETIME;
DECLARE vDefaultDayRange INT;
+ DECLARE vCalcFk INT;
IF vDate < util.VN_CURDATE() THEN
LEAVE proc;
@@ -65292,58 +66051,23 @@ proc: BEGIN
) sub
GROUP BY itemFk;
- UPDATE tmp.itemInventory ai
- JOIN tItemInventoryCalc iic ON iic.itemFk = ai.id
- SET ai.inventory = iic.quantity,
- ai.visible = iic.quantity,
- ai.avalaible = iic.quantity,
- ai.sd = iic.quantity;
-
-- Cálculo del visible
- CREATE OR REPLACE TEMPORARY TABLE tItemVisibleCalc
- (PRIMARY KEY (itemFk))
- ENGINE = MEMORY
- SELECT itemFk, SUM(quantity) visible
- FROM (
- SELECT s.itemFk, s.quantity
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- JOIN warehouse w ON w.id = t.warehouseFk
- WHERE t.shipped >= vDate
- AND t.shipped < vDateTomorrow
- AND (NOT isPicked AND NOT t.isLabeled AND t.refFk IS NULL)
- AND IFNULL(vWarehouseFk, t.warehouseFk) = t.warehouseFk
- AND w.isComparative
- UNION ALL
- SELECT b.itemFk, - b.quantity
- FROM buy b
- JOIN entry e ON e.id = b.entryFk
- JOIN travel t ON t.id = e.travelFk
- JOIN warehouse w ON w.id = t.warehouseInFk
- WHERE t.landed = vDate
- AND NOT t.isReceived
- AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
- AND IFNULL(vWarehouseFk, t.warehouseInFk) = t.warehouseInFk
- AND w.isComparative
- UNION ALL
- SELECT b.itemFk, b.quantity
- FROM buy b
- JOIN entry e ON e.id = b.entryFk
- JOIN travel t ON t.id = e.travelFk
- JOIN warehouse w ON w.id = t.warehouseOutFk
- WHERE t.shipped = vDate
- AND NOT t.isReceived
- AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
- AND IFNULL(vWarehouseFk, t.warehouseOutFk) = t.warehouseOutFk
- AND w.isComparative
- ) sub2
- GROUP BY itemFk;
+ CALL cache.visible_refresh(vCalcFk, FALSE, vWarehouseFk);
- UPDATE tmp.itemInventory ai
- JOIN tItemVisibleCalc ivc ON ivc.itemFk = ai.id
- SET ai.visible = ai.visible + ivc.visible;
+ CREATE OR REPLACE TEMPORARY TABLE tItemVisibleCalc
+ (PRIMARY KEY (item_id))
+ ENGINE = MEMORY
+ SELECT item_id, visible
+ FROM cache.visible
+ WHERE calc_id = vCalcFk;
+
+ UPDATE tmp.itemInventory it
+ 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,
+ it.sd = iic.quantity;
-- Calculo del disponible
CREATE OR REPLACE TEMPORARY TABLE tmp.itemCalc
@@ -65391,32 +66115,36 @@ proc: BEGIN
CALL item_getAtp(vDate);
CALL travel_upcomingArrivals(vWarehouseFk, vDate);
- UPDATE tmp.itemInventory ai
- JOIN (
- SELECT it.itemFk,
- SUM(it.quantity) quantity,
- im.quantity minQuantity
- FROM tmp.itemCalc it
- JOIN tmp.itemAtp im ON im.itemFk = it.itemFk
- JOIN item i ON i.id = it.itemFk
- LEFT JOIN origin o ON o.id = i.originFk
- LEFT JOIN tmp.itemTravel t ON t.wh = o.warehouseFk
- WHERE it.dated < IF(vMaxDays < 0 AND t.landing IS NOT NULL,
- t.landing,
- vDateToTomorrow)
- GROUP BY it.itemFk
- ) sub ON sub.itemFk = ai.id
- SET ai.avalaible = IF(sub.minQuantity > 0,
- ai.avalaible,
- ai.avalaible + sub.minQuantity),
- ai.sd = ai.inventory + sub.quantity;
+ CREATE OR REPLACE TEMPORARY TABLE tItemAvailableCalc
+ (PRIMARY KEY (itemFk))
+ ENGINE = MEMORY
+ SELECT it.itemFk,
+ SUM(it.quantity) quantity,
+ im.quantity minQuantity
+ FROM tmp.itemCalc it
+ JOIN tmp.itemAtp im ON im.itemFk = it.itemFk
+ JOIN item i ON i.id = it.itemFk
+ LEFT JOIN origin o ON o.id = i.originFk
+ LEFT JOIN tmp.itemTravel t ON t.wh = o.warehouseFk
+ WHERE it.dated < IF(vMaxDays < 0 AND t.landing IS NOT NULL,
+ t.landing,
+ vDateToTomorrow)
+ GROUP BY it.itemFk;
+
+ UPDATE tmp.itemInventory it
+ JOIN tItemAvailableCalc iac ON iac.itemFk = it.id
+ SET it.avalaible = IF(iac.minQuantity > 0,
+ it.avalaible,
+ it.avalaible + iac.minQuantity),
+ it.sd = it.inventory + iac.quantity;
DROP TEMPORARY TABLE
tmp.itemTravel,
tmp.itemCalc,
+ tmp.itemAtp,
tItemInventoryCalc,
tItemVisibleCalc,
- tmp.itemAtp;
+ tItemAvailableCalc;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -66347,11 +67075,6 @@ proc: BEGIN
DECLARE vEndingDate DATETIME;
DECLARE vIsTodayRelative BOOLEAN;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- RESIGNAL;
- END;
-
SELECT util.dayEnd(util.VN_CURDATE()) + INTERVAL LEAST(vScopeDays, maxProductionScopeDays) DAY
INTO vEndingDate
FROM productionConfig;
@@ -66506,27 +67229,30 @@ proc: BEGIN
WHERE NOT `lines`;
-- Lineas por linea de encajado
+ CREATE OR REPLACE TEMPORARY TABLE tItemPackingType
+ (PRIMARY KEY(ticketFk))
+ ENGINE = MEMORY
+ SELECT ticketFk,
+ SUM(sub.H) H,
+ SUM(sub.V) V,
+ SUM(sub.N) N
+ FROM (
+ SELECT t.ticketFk,
+ SUM(i.itemPackingTypeFk = 'H') H,
+ SUM(i.itemPackingTypeFk = 'V') V,
+ SUM(i.itemPackingTypeFk IS NULL) N
+ FROM tmp.productionTicket t
+ JOIN sale s ON s.ticketFk = t.ticketFk
+ JOIN item i ON i.id = s.itemFk
+ GROUP BY t.ticketFk, i.itemPackingTypeFk
+ ) sub
+ GROUP BY ticketFk;
+
UPDATE tmp.productionBuffer pb
- JOIN (
- SELECT ticketFk,
- SUM(sub.H) H,
- SUM(sub.V) V,
- SUM(sub.N) N
- FROM (
- SELECT t.ticketFk,
- SUM(i.itemPackingTypeFk = 'H') H,
- SUM(i.itemPackingTypeFk = 'V') V,
- SUM(i.itemPackingTypeFk IS NULL) N
- FROM tmp.productionTicket t
- JOIN sale s ON s.ticketFk = t.ticketFk
- 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;
+ 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
@@ -66602,10 +67328,10 @@ proc: BEGIN
DROP TEMPORARY TABLE
tmp.productionTicket,
tmp.ticket,
- tmp.risk,
tmp.ticket_problems,
tmp.ticketWithPrevia,
- tItemShelvingStock;
+ tItemShelvingStock,
+ tItemPackingType;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -66964,6 +67690,7 @@ BEGIN
) sub;
DROP TEMPORARY TABLE tmp.whiteTicket;
DROP TEMPORARY TABLE tmp.sectorTypeTicket;
+ DROP TEMPORARY TABLE tmp.productionBuffer;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -67983,17 +68710,21 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `route_updateM3`(vRoute INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `route_updateM3`(
+ vSelf INT
+)
BEGIN
+/**
+ * Actualiza el volumen de la ruta.
+ *
+ * @param vSelf Id ruta
+ */
+ DECLARE vVolume DECIMAL(10,1)
+ DEFAULT (SELECT SUM(volume) FROM saleVolume WHERE routeFk = vSelf);
- UPDATE vn.route r
- LEFT JOIN (
- SELECT routeFk, SUM(volume) AS m3
- FROM saleVolume
- WHERE routeFk = vRoute
- ) v ON v.routeFk = r.id
- SET r.m3 = IFNULL(v.m3,0)
- WHERE r.id =vRoute;
+ UPDATE `route`
+ SET m3 = IFNULL(vVolume, 0)
+ WHERE id = vSelf;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -68078,20 +68809,23 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `saleGroup_setParking`(IN `vSaleGroupFk` VARCHAR(8), IN `vParkingFk` INT)
-proc: BEGIN
+CREATE DEFINER=`root`@`localhost` PROCEDURE `saleGroup_setParking`(
+ vSaleGroupFk VARCHAR(8),
+ vParkingFk INT
+)
+BEGIN
/**
- * Aparca una preparación previa en un parking
+ * Aparca una preparación previa en un parking.
*
* @param vSaleGroupFk id de la preparación previa
* @param vParkingFk id del parking
*/
- UPDATE vn.saleGroup sg
+ UPDATE saleGroup sg
SET sg.parkingFk = vParkingFk
- WHERE sg.id = vSaleGroupFk
- AND sg.created >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE());
+ WHERE sg.id = vSaleGroupFk
+ AND sg.created >= util.VN_CURDATE() - INTERVAL 1 WEEK;
- CALL vn.ticket_setNextState(vn.ticket_get(vSaleGroupFk));
+ CALL ticket_setNextState(ticket_get(vSaleGroupFk));
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -68919,21 +69653,20 @@ BEGIN
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
(saleFk INT PRIMARY KEY)
- SELECT
- s.ticketFk,
- s.id saleFk,
- s.itemFk,
- s.concept,
- s.quantity,
- MAKETIME(pb.HH,pb.mm,0) etd,
- pb.routeFk,
- FLOOR(s.quantity / IF(i.isBoxPickingMode, ish.packing, i.packingOut)) stickers,
- IF(i.isBoxPickingMode, ish.packing, i.packingOut) packing,
- b.packagingFk
+ SELECT s.ticketFk,
+ s.id saleFk,
+ s.itemFk,
+ s.concept,
+ s.quantity,
+ MAKETIME(pb.HH,pb.mm,0) etd,
+ pb.routeFk,
+ FLOOR(s.quantity / IF(i.isBoxPickingMode, ish.packing, i.packingOut)) stickers,
+ IF(i.isBoxPickingMode, ish.packing, i.packingOut) packing,
+ IF(pa.isPackageReturnable, pc.defaultBigPackageFk, b.packagingFk) packagingFk
FROM sale s
JOIN item i ON i.id = s.itemFk
JOIN itemShelving ish ON ish.itemFk = s.itemFk
- LEFT JOIN ( SELECT iss.itemShelvingFk,
+ LEFT JOIN ( SELECT iss.itemShelvingFk,
s.itemFk,
SUM(iss.quantity) reserve
FROM itemShelvingSale iss
@@ -68952,6 +69685,8 @@ BEGIN
LEFT JOIN ticketState ts ON ts.ticketFk = s.ticketFk
LEFT JOIN cache.last_buy lb ON lb.item_id = i.id AND lb.warehouse_id = vWarehouseFk
LEFT JOIN buy b ON b.id = lb.buy_id
+ LEFT JOIN packaging pa ON pa.id = b.packagingFk
+ JOIN packagingConfig pc
WHERE IF(i.isBoxPickingMode, ish.packing, i.packingOut)
<= LEAST(s.quantity, ish.visible - IFNULL(tISS.reserve,0))
AND NOT pb.problem
@@ -69117,156 +69852,98 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_getProblems`(IN vIsTodayRelative tinyint(1))
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_getProblems`(
+ vIsTodayRelative tinyint(1)
+)
BEGIN
/**
* Calcula los problemas de cada venta para un conjunto de tickets.
*
* @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy
- * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular
+ * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Tickets a calcular
* @return tmp.sale_problems
*/
- DECLARE vWarehouseFk INT;
+ DECLARE vWarehouseFk INT;
DECLARE vDate DATE;
- DECLARE vAvailableCache INT;
+ DECLARE vAvailableCache INT;
DECLARE vVisibleCache INT;
DECLARE vDone BOOL;
- DECLARE vComponentCount INT;
-
- DECLARE vCursor CURSOR FOR
- SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(tt.shipped))
- FROM tmp.sale_getProblems tt
- WHERE DATE(tt.shipped) BETWEEN util.VN_CURDATE()
- AND util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY;
+ DECLARE vCursor CURSOR FOR
+ SELECT DISTINCT warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(shipped))
+ FROM tmp.sale_getProblems
+ WHERE shipped BETWEEN util.VN_CURDATE()
+ AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
DELETE tt.*
FROM tmp.sale_getProblems tt
JOIN ticketObservation tto ON tto.ticketFk = tt.ticketFk
- JOIN observationType ot ON ot.id = tto.observationTypeFk
- WHERE ot.code = 'administrative'
+ JOIN observationType ot ON ot.id = tto.observationTypeFk
+ WHERE ot.code = 'administrative'
AND tto.description = 'Miriam';
- CREATE OR REPLACE TEMPORARY TABLE tmp.sale_problems (
- ticketFk INT(11),
- saleFk INT(11),
- isFreezed INTEGER(1) DEFAULT 0,
- risk DECIMAL(10,1) DEFAULT 0,
- hasHighRisk TINYINT(1) DEFAULT 0,
- hasTicketRequest INTEGER(1) DEFAULT 0,
- itemShortage VARCHAR(255),
- isTaxDataChecked INTEGER(1) DEFAULT 1,
- itemDelay VARCHAR(255),
- itemLost VARCHAR(255),
- hasComponentLack INTEGER(1),
- hasRounding VARCHAR(255),
- isTooLittle BOOL DEFAULT FALSE,
- isVip BOOL DEFAULT FALSE,
- PRIMARY KEY (ticketFk, saleFk)
- ) ENGINE = MEMORY;
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_problems (
+ ticketFk INT(11),
+ saleFk INT(11),
+ isFreezed INTEGER(1) DEFAULT 0,
+ risk DECIMAL(10,1) DEFAULT 0,
+ hasRisk TINYINT(1) DEFAULT 0,
+ hasHighRisk TINYINT(1) DEFAULT 0,
+ hasTicketRequest INTEGER(1) DEFAULT 0,
+ itemShortage VARCHAR(255),
+ isTaxDataChecked INTEGER(1) DEFAULT 1,
+ itemDelay VARCHAR(255),
+ itemLost VARCHAR(255),
+ hasComponentLack INTEGER(1),
+ hasRounding VARCHAR(255),
+ isTooLittle BOOL DEFAULT FALSE,
+ isVip BOOL DEFAULT FALSE,
+ PRIMARY KEY (ticketFk, saleFk)
+ ) ENGINE = MEMORY;
- CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_list
- (PRIMARY KEY (ticketFk))
- ENGINE = MEMORY
- SELECT ticketFk, clientFk
- FROM tmp.sale_getProblems;
+ INSERT INTO tmp.sale_problems(ticketFk,
+ saleFk,
+ isFreezed,
+ risk,
+ hasRisk,
+ hasHighRisk,
+ hasTicketRequest,
+ isTaxDataChecked,
+ hasComponentLack,
+ hasRounding,
+ isTooLittle)
+ SELECT sgp.ticketFk,
+ s.id,
+ IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed,
+ t.risk,
+ IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk,
+ IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk,
+ IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest,
+ IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked,
+ IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack,
+ IF(FIND_IN_SET('hasRounding', s.problem),
+ LEFT(GROUP_CONCAT('RE: ', i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250),
+ NULL
+ ) hasRounding,
+ IF(FIND_IN_SET('isTooLittle', t.problem)
+ AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE,
+ TRUE, FALSE) isTooLittle
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
+ LEFT JOIN sale s ON s.ticketFk = t.id
+ LEFT JOIN item i ON i.id = s.itemFk
+ LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
+ AND zc.dated = util.VN_CURDATE()
+ WHERE s.problem <> '' OR t.problem <> '' OR t.risk
+ GROUP BY t.id, s.id;
- SELECT COUNT(*) INTO vComponentCount
- FROM component
- WHERE isRequired;
-
- -- Too Little
- INSERT INTO tmp.sale_problems(ticketFk, isTooLittle)
- SELECT tp.ticketFk, TRUE
- FROM tmp.sale_getProblems tp
- JOIN ticket t ON t.id = tp.ticketFk
- JOIN (
- SELECT t.addressFk,
- SUM(ROUND(`ic`.`cm3delivery` * `s`.`quantity` / 1000, 0)) litros,
- t.totalWithoutVat
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- JOIN sale s ON s.ticketFk = t.id
- AND s.quantity > 0
- JOIN itemCost ic ON ic.itemFk = s.itemFk
- AND ic.warehouseFk = t.warehouseFk
- JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
- AND zc.dated = util.VN_CURDATE()
- JOIN agencyMode am ON am.id = t.agencyModeFk
- JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- WHERE util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE
- AND dm.code IN ('AGENCY','DELIVERY','PICKUP')
- AND t.shipped BETWEEN util.VN_CURDATE() AND util.midnight()
- GROUP BY t.addressFk
- ) sub ON sub.addressFk = t.addressFk
- JOIN volumeConfig vc
- WHERE sub.litros < vc.minTicketVolume
- AND sub.totalWithoutVat < vc.minTicketValue;
-
- -- VIP
INSERT INTO tmp.sale_problems(ticketFk, isVip)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
+ SELECT sgp.ticketFk, TRUE
+ FROM tmp.sale_getProblems sgp
+ JOIN client c ON c.id = sgp.clientFk
WHERE c.businessTypeFk = 'VIP'
- ON DUPLICATE KEY UPDATE isVip = TRUE;
-
- -- 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
- 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 agencyMode am ON am.id = t.agencyModeFk
- JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- WHERE dm.code IN ('AGENCY','DELIVERY','PICKUP')
- AND s.quantity > 0
- GROUP BY s.id
- ) sub
- HAVING hasComponentLack;
-
- -- Cliente congelado
- INSERT INTO tmp.sale_problems(ticketFk, isFreezed)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
- WHERE c.isFreezed
- ON DUPLICATE KEY UPDATE isFreezed = c.isFreezed;
-
- -- Credit exceeded
- CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt
- (PRIMARY KEY (clientFk))
- ENGINE = MEMORY
- SELECT DISTINCT clientFk
- FROM tmp.ticket_list;
-
- CALL client_getDebt(util.VN_CURDATE());
-
- INSERT INTO tmp.sale_problems(ticketFk, risk, hasHighRisk)
- SELECT DISTINCT tl.ticketFk, r.risk, ((r.risk - cc.riskTolerance) > c.credit + 10)
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- JOIN agencyMode a ON t.agencyModeFk = a.id
- JOIN tmp.risk r ON r.clientFk = t.clientFk
- JOIN client c ON c.id = t.clientFk
- JOIN clientConfig cc
- WHERE r.risk > c.credit + 10
- AND NOT a.isRiskFree
- ON DUPLICATE KEY UPDATE
- risk = r.risk, hasHighRisk = ((r.risk - cc.riskTolerance) > c.credit + 10);
-
- -- Antiguo COD 100, son peticiones de compra sin terminar
- INSERT INTO tmp.sale_problems(ticketFk, hasTicketRequest)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN ticketRequest tr ON tr.ticketFk = tl.ticketFk
- WHERE tr.isOK IS NULL
- ON DUPLICATE KEY UPDATE hasTicketRequest = TRUE;
+ ON DUPLICATE KEY UPDATE isVIP = TRUE;
CREATE OR REPLACE TEMPORARY TABLE tItemShelvingStock_byWarehouse
(INDEX (itemFk, warehouseFk))
@@ -69278,10 +69955,9 @@ BEGIN
JOIN shelving sh ON sh.code = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector s ON s.id = p.sectorFk
- GROUP BY ish.itemFk,
- s.warehouseFk;
+ GROUP BY ish.itemFk, s.warehouseFk;
- -- Disponible, Faltas, Inventario y Retrasos
+ -- Disponible, faltas, inventario y retrasos
OPEN vCursor;
l: LOOP
SET vDone = FALSE;
@@ -69300,14 +69976,14 @@ BEGIN
INSERT INTO tmp.sale_problems(ticketFk, itemShortage, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
- LEFT(CONCAT('F: ',GROUP_CONCAT(i.id, ' ', i.longName, ' ')),250) problem,
- s.id AS saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ SELECT sgp.ticketFk,
+ LEFT(CONCAT('F: ', GROUP_CONCAT(i.id, ' ', i.longName, ' ')), 250) problem,
+ s.id saleFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = i.id
AND v.calc_id = vVisibleCache
@@ -69315,8 +69991,8 @@ BEGIN
AND av.calc_id = vAvailableCache
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
- WHERE IFNULL(v.visible,0) < s.quantity
- AND IFNULL(av.available ,0) < s.quantity
+ WHERE IFNULL(v.visible, 0) < s.quantity
+ AND IFNULL(av.available, 0) < s.quantity
AND IFNULL(issw.visible, 0) < s.quantity
AND NOT s.isPicked
AND NOT s.reserved
@@ -69325,27 +70001,27 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk) sub
+ GROUP BY sgp.ticketFk) sub
ON DUPLICATE KEY UPDATE itemShortage = sub.problem, saleFk = sub.saleFk;
-- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida
INSERT INTO tmp.sale_problems(ticketFk, itemLost, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
+ SELECT sgp.ticketFk,
LEFT(GROUP_CONCAT('I: ', i.id, ' ', i.longName, ' '), 250) problem,
s.id saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = s.itemFk
AND v.calc_id = vVisibleCache
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
- WHERE IFNULL(v.visible,0) >= s.quantity
+ WHERE IFNULL(v.visible, 0) >= s.quantity
AND IFNULL(issw.visible, 0) < s.quantity
AND s.quantity > 0
AND NOT s.isPicked
@@ -69355,22 +70031,22 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk
+ GROUP BY sgp.ticketFk
) sub
- ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk;
+ ON DUPLICATE KEY UPDATE itemLost = sub.problem, saleFk = sub.saleFk;
-- Retraso: Disponible suficiente, pero no visible ni ubicado
INSERT INTO tmp.sale_problems(ticketFk, itemDelay, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
+ SELECT sgp.ticketFk,
LEFT(GROUP_CONCAT('R: ', i.id, ' ', i.longName, ' '), 250) problem,
s.id saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = s.itemFk
AND v.calc_id = vVisibleCache
@@ -69389,43 +70065,28 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk
+ GROUP BY sgp.ticketFk
) sub
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);
- INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk)
- SELECT ticketFk, problem ,saleFk
- FROM (
- SELECT tl.ticketFk,
- s.id saleFk,
- LEFT(GROUP_CONCAT('RE: ',i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- AND t.warehouseFk = vWarehouseFk
- JOIN sale s ON s.ticketFk = tl.ticketFk
- JOIN item i ON i.id = s.itemFk
- JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
- JOIN buy b ON b.id = bu.buyFk
- WHERE MOD(s.quantity, b.`grouping`)
- GROUP BY tl.ticketFk
- )sub
- ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk;
END LOOP;
CLOSE vCursor;
-
- INSERT INTO tmp.sale_problems(ticketFk, isTaxDataChecked)
- SELECT DISTINCT tl.ticketFk, FALSE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
- WHERE NOT c.isTaxDataChecked
- ON DUPLICATE KEY UPDATE isTaxDataChecked = FALSE;
- DROP TEMPORARY TABLE
- tmp.clientGetDebt,
- tmp.ticket_list,
- tItemShelvingStock_byWarehouse;
+ INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk)
+ SELECT ticketFk, problem, saleFk
+ FROM (
+ SELECT sgp.ticketFk,
+ s.id saleFk,
+ LEFT(GROUP_CONCAT('RE: ', i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
+ JOIN sale s ON s.ticketFk = sgp.ticketFk
+ JOIN item i ON i.id = s.itemFk
+ WHERE FIND_IN_SET('hasRounding', s.problem)
+ GROUP BY sgp.ticketFk
+ ) sub
+ ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk;
+
+ DROP TEMPORARY TABLE tItemShelvingStock_byWarehouse;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -69450,8 +70111,7 @@ BEGIN
*
* @return Problems result
*/
- DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems;
- CREATE TEMPORARY TABLE tmp.sale_getProblems
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
(INDEX (ticketFk))
ENGINE = MEMORY
SELECT t.id ticketFk, t.clientFk, t.warehouseFk, t.shipped
@@ -69490,7 +70150,7 @@ BEGIN
JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk
WHERE s.ticketFk = vTicketFk
- AND ct.`type` = 'otros';
+ AND ct.code = 'other';
UPDATE vn.sale s
JOIN (
@@ -69507,14 +70167,14 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `sale_recalcComponent` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_recalcComponent`(vOption VARCHAR(25))
proc: BEGIN
@@ -69595,7 +70255,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
@@ -69698,7 +70358,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
@@ -69706,6 +70366,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;
@@ -69795,15 +70457,38 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setProblem`(
BEGIN
/**
* Update column sale.problem with a problem code
+ *
* @param vProblemCode Code to set or unset
- * @table tmp.sale(saleFk, hasProblem)
+ * @table tmp.sale(saleFk, hasProblem, isProblemCalcNeeded)
*/
- UPDATE sale s
- JOIN tmp.sale ts ON ts.saleFk = s.id
- SET s.problem = CONCAT(
- IF(ts.hasProblem,
- CONCAT(s.problem, ',', vProblemCode),
- REPLACE(s.problem, vProblemCode , '')));
+ DECLARE vSaleFk INT;
+ DECLARE vHasProblem INT;
+ DECLARE vIsProblemCalcNeeded BOOL;
+ DECLARE vDone BOOL;
+ 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, vIsProblemCalcNeeded;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ UPDATE sale
+ SET problem = IF (vIsProblemCalcNeeded,
+ CONCAT(
+ IF(vHasProblem,
+ CONCAT(problem, ',', vProblemCode),
+ REPLACE(problem, vProblemCode , ''))),
+ NULL)
+ WHERE id = vSaleFk;
+ END LOOP;
+ CLOSE vSaleList;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -69831,9 +70516,13 @@ BEGIN
* @param vSelf Id del sale
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
- (INDEX(saleFk))
+ (INDEX(saleFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT vSelf saleFk, sale_hasComponentLack(vSelf) hasProblem;
+ SELECT vSelf saleFk,
+ sale_hasComponentLack(vSelf) hasProblem,
+ (ticket_isProblemCalcNeeded(ticketFk) AND quantity > 0) isProblemCalcNeeded
+ FROM sale
+ WHERE id = vSelf;
CALL sale_setProblem('hasComponentLack');
@@ -69865,11 +70554,13 @@ BEGIN
* @param vComponentFk Id component
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
- (INDEX(saleFk))
+ (INDEX(saleFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT saleFk, sale_hasComponentLack(saleFk)hasProblem
+ SELECT saleFk,
+ sale_hasComponentLack(saleFk) hasProblem,
+ (ticket_isProblemCalcNeeded(ticketFk) AND quantity > 0) isProblemCalcNeeded
FROM (
- SELECT s.id saleFk
+ 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
@@ -69908,17 +70599,20 @@ BEGIN
DECLARE vWarehouseFk INT;
DECLARE vShipped DATE;
DECLARE vQuantity INT;
+ DECLARE vIsProblemCalcNeeded BOOL;
- SELECT s.itemFk, t.warehouseFk, t.shipped, s.quantity
- INTO vItemFk, vWarehouseFk, vShipped, vQuantity
+ SELECT s.itemFk, t.warehouseFk, t.shipped, s.quantity, ticket_isProblemCalcNeeded(t.id)
+ INTO vItemFk, vWarehouseFk, vShipped, vQuantity, vIsProblemCalcNeeded
FROM sale s
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, MOD(vQuantity, b.`grouping`) hasProblem
+ SELECT vSelf saleFk,
+ MOD(vQuantity, b.`grouping`) hasProblem,
+ vIsProblemCalcNeeded isProblemCalcNeeded
FROM tmp.buyUltimate bu
JOIN buy b ON b.id = bu.buyFk
WHERE bu.itemFk = vItemFk;
@@ -69935,6 +70629,94 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sale_setProblemRoundingByBuy` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setProblemRoundingByBuy`(
+ vBuyFk INT
+)
+BEGIN
+/**
+ * Update rounding problem for all sales related to a buy.
+ *
+ * @param vBuyFk Buy id
+ */
+ DECLARE vItemFk INT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vMaxDated DATE;
+ DECLARE vMinDated DATE;
+ DECLARE vLanding DATE;
+ DECLARE vLastBuy INT;
+ DECLARE vCurrentBuy INT;
+ DECLARE vGrouping INT;
+
+ SELECT b.itemFk, t.warehouseInFk
+ INTO vItemFk, vWarehouseFk
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE b.id = vBuyFk;
+
+ IF vItemFk AND vWarehouseFk THEN
+ SELECT DATE(MAX(t.shipped)) + INTERVAL 1 DAY, DATE(MIN(t.shipped))
+ INTO vMaxDated, vMinDated
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE t.shipped >= util.VN_CURDATE()
+ AND s.itemFk = vItemFk
+ AND s.quantity > 0;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMinDated);
+
+ SELECT bu.buyFk, b.grouping INTO vLastBuy, vGrouping
+ FROM tmp.buyUltimate bu
+ JOIN buy b ON b.id = bu.buyFk;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+
+ SET vLanding = vMaxDated;
+
+ WHILE vCurrentBuy <> vLastBuy OR vLanding > vMinDated DO
+ SET vMaxDated = vLanding - INTERVAL 1 DAY;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMaxDated);
+
+ SELECT buyFk, landing
+ INTO vCurrentBuy, vLanding
+ FROM tmp.buyUltimate;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+ END WHILE;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk, isProblemCalcNeeded))
+ ENGINE = MEMORY
+ SELECT s.id saleFk,
+ MOD(s.quantity, vGrouping) hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE s.itemFk = vItemFk
+ AND s.quantity > 0
+ AND t.shipped BETWEEN vMinDated AND util.dayEnd(vMaxDated);
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ END IF;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `sectorCollectionSaleGroup_add` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -70275,8 +71057,11 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `setParking`(IN `vParam` VARCHAR(8), IN `vParkingCode` VARCHAR(8))
-proc: BEGIN
+CREATE DEFINER=`root`@`localhost` PROCEDURE `setParking`(
+ vParam VARCHAR(8),
+ vParkingCode VARCHAR(8)
+)
+BEGIN
/**
* Aparca una colección, un ticket, un saleGroup o un shelving en un parking
*
@@ -70284,56 +71069,31 @@ proc: BEGIN
* @param vParkingCode código del parking
*/
DECLARE vParkingFk INT;
- DECLARE vIsSaleGroup BOOL;
- DECLARE vIsTicket BOOL;
- DECLARE vIsCollection BOOL;
+ DECLARE vLastWeek DATE;
- SET vParkingCode = replace(vParkingCode,' ','');
+ SET vParkingCode = REPLACE(vParkingCode, ' ', '');
SELECT id INTO vParkingFk
- FROM vn.parking
+ FROM parking
WHERE code = vParkingCode COLLATE utf8_unicode_ci;
IF vParkingFk IS NULL THEN
CALL util.throw('parkingNotExist');
- LEAVE proc;
END IF;
-
- IF vParam REGEXP '^[0-9]+$' THEN
- -- Se comprueba si es una preparación previa
- SELECT COUNT(*) INTO vIsSaleGroup
- FROM vn.saleGroup sg
- WHERE sg.id = vParam;
- IF vIsSaleGroup THEN
- CALL vn.saleGroup_setParking(vParam, vParkingFk);
- LEAVE proc;
- END IF;
+ SET vLastWeek = util.VN_CURDATE() - INTERVAL 1 WEEK;
- -- Se comprueba si es un ticket
- SELECT COUNT(*) INTO vIsTicket
- FROM vn.ticket t
- WHERE t.id = vParam
- AND t.shipped >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE());
-
- IF vIsTicket THEN
- CALL vn.ticket_setParking(vParam, vParkingFk);
- LEAVE proc;
- END IF;
-
- -- Se comprueba si es una coleccion de tickets
- SELECT COUNT(*) INTO vIsCollection
- FROM vn.collection c
- WHERE c.id = vParam
- AND c.created >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE());
-
- IF vIsCollection THEN
- CALL vn.collection_setParking(vParam, vParkingFk);
- LEAVE proc;
- END IF;
+ -- Comprobamos si es una prep. previa, ticket, colección o shelving
+ IF (SELECT TRUE FROM saleGroup WHERE id = vParam) THEN
+ CALL saleGroup_setParking(vParam, vParkingFk);
+ ELSEIF (SELECT TRUE FROM ticket WHERE id = vParam AND shipped >= vLastWeek) THEN
+ CALL ticket_setParking(vParam, vParkingFk);
+ ELSEIF (SELECT TRUE FROM `collection` WHERE id = vParam AND created >= vLastWeek) THEN
+ CALL collection_setParking(vParam, vParkingFk);
+ ELSEIF (SELECT TRUE FROM shelving WHERE code = vParam COLLATE utf8_unicode_ci) THEN
+ CALL shelving_setParking(vParam, vParkingFk);
ELSE
- -- Por descarte, se considera una matrícula
- CALL vn.shelving_setParking(vParam, vParkingFk);
+ CALL util.throw('paramNotExist');
END IF;
END ;;
DELIMITER ;
@@ -70611,21 +71371,21 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `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
@@ -70875,7 +71635,7 @@ 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 ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -71374,7 +72134,7 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `supplier_statement` */;
+/*!50003 DROP PROCEDURE IF EXISTS `supplier_statementWithEntries` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
@@ -71382,28 +72142,35 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `supplier_statement`(
+CREATE DEFINER=`root`@`localhost` PROCEDURE `supplier_statementWithEntries`(
vSupplierFk INT,
vCurrencyFk INT,
vCompanyFk INT,
vOrderBy VARCHAR(15),
- vIsConciliated BOOL
+ vIsConciliated BOOL,
+ vHasEntries 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
- */
+* 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 *,
@@ -71416,107 +72183,127 @@ BEGIN
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
+ 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 ;
@@ -72760,14 +73547,14 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `ticket_add` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_add`(
vClientId INT
@@ -72835,6 +73622,8 @@ BEGIN
IF (vZoneFk IS NULL OR vZoneFk = 0) AND vIsRequiredZone THEN
CALL util.throw ('NOT_ZONE_WITH_THIS_PARAMETERS');
END IF;
+
+ DROP TEMPORARY TABLE tmp.zoneGetShipped;
END IF;
INSERT INTO ticket (
@@ -73236,14 +74025,14 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `ticket_checkNoComponents` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_checkNoComponents`(vShippedFrom DATETIME, vShippedTo DATETIME)
BEGIN
@@ -73266,7 +74055,8 @@ BEGIN
JOIN itemCategory ic ON ic.id = tp.categoryFk
JOIN saleComponent sc ON sc.saleFk = s.id
JOIN component c ON c.id = sc.componentFk
- JOIN componentType ct ON ct.id = c.typeFk AND ct.id = 1
+ JOIN componentType ct ON ct.id = c.typeFk
+ AND ct.code = 'cost'
WHERE t.shipped BETWEEN vShippedFrom AND vShippedTo
AND ic.merchandise;
@@ -73455,7 +74245,6 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_cloneWeekly`(
vDateTo DATE
)
BEGIN
- DECLARE vIsDone BOOL;
DECLARE vLanding DATE;
DECLARE vShipment DATE;
DECLARE vWarehouseFk INT;
@@ -73466,36 +74255,37 @@ 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
- SELECT tt.ticketFk,
- t.clientFk,
- t.warehouseFk,
- t.companyFk,
- t.addressFk,
- tt.agencyModeFk,
- ti.dated
- FROM ticketWeekly tt
- JOIN ticket t ON tt.ticketFk = t.id
- JOIN tmp.time ti
- WHERE WEEKDAY(ti.dated) = tt.weekDay;
+ DECLARE vTickets CURSOR FOR
+ SELECT tt.ticketFk,
+ t.clientFk,
+ t.warehouseFk,
+ t.companyFk,
+ t.addressFk,
+ tt.agencyModeFk,
+ ti.dated
+ FROM ticketWeekly tt
+ JOIN ticket t ON tt.ticketFk = t.id
+ JOIN tmp.time ti
+ WHERE WEEKDAY(ti.dated) = tt.weekDay;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = 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;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- SET vIsDone = FALSE;
- FETCH rsTicket INTO
+ CALL `util`.`time_generate`(vDateFrom, vDateTo);
+
+ OPEN vTickets;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vTickets INTO
vTicketFk,
vClientFk,
vWarehouseFk,
@@ -73504,11 +74294,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
@@ -73518,7 +74308,7 @@ BEGIN
AND tClon.isDeleted = FALSE
AND DATE(tClon.shipped) = vShipment)
THEN
- ITERATE myLoop;
+ ITERATE l;
END IF;
IF vAgencyModeFk IS NULL THEN
@@ -73558,15 +74348,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
@@ -73603,15 +74393,7 @@ BEGIN
attenderFk,
vNewTicket
FROM ticketRequest
- WHERE ticketFk =vTicketFk;
-
- SELECT id INTO vSalesPersonFK
- FROM observationType
- WHERE code = 'salesPerson';
-
- SELECT id INTO vItemPicker
- FROM observationType
- WHERE code = 'itemPicker';
+ WHERE ticketFk = vTicketFk;
INSERT INTO ticketObservation(
ticketFk,
@@ -73619,7 +74401,7 @@ BEGIN
description)
VALUES(
vNewTicket,
- vSalesPersonFK,
+ vObservationSalesPersonFk,
CONCAT('turno desde ticket: ',vTicketFk))
ON DUPLICATE KEY UPDATE description =
CONCAT(ticketObservation.description,VALUES(description),' ');
@@ -73629,16 +74411,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 ',
@@ -73650,21 +74433,22 @@ 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;
+ CLOSE vTickets;
+
+ DROP TEMPORARY TABLE IF EXISTS
+ tmp.time,
+ tmp.zoneGetLanded;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -73684,7 +74468,7 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_close`()
BEGIN
/**
- * Realiza el cierre de todos los
+ * Realiza el cierre de todos los
* tickets de la tabla tmp.ticket_close.
*
* @table tmp.ticket_close(ticketFk) Identificadores de los tickets a cerrar
@@ -73702,7 +74486,7 @@ BEGIN
DECLARE cur CURSOR FOR
SELECT ticketFk FROM tmp.ticket_close;
-
+
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN
RESIGNAL;
@@ -73712,7 +74496,7 @@ BEGIN
proc: LOOP
SET vDone = FALSE;
-
+
FETCH cur INTO vCurTicketFk;
IF vDone THEN
@@ -73726,15 +74510,15 @@ BEGIN
t.shipped,
IFNULL(a.hasDailyInvoice, co.hasDailyInvoice),
w.isManaged,
- c.hasToInvoice
+ c.hasToInvoice
INTO vClientFk,
vIsTaxDataChecked,
- vCompanyFk,
+ vCompanyFk,
vShipped,
vHasDailyInvoice,
vWithPackage,
- vHasToInvoice
- FROM ticket t
+ vHasToInvoice
+ FROM ticket t
JOIN `client` c ON c.id = t.clientFk
JOIN province p ON p.id = c.provinceFk
LEFT JOIN autonomy a ON a.id = p.autonomyFk
@@ -73744,22 +74528,26 @@ BEGIN
INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity)
(SELECT vCurTicketFk, p.id, COUNT(*)
- FROM expedition e
+ FROM expedition e
JOIN packaging p ON p.id = e.packagingFk
+ JOIN ticket t ON t.id = e.ticketFk
+ LEFT JOIN agencyMode am ON am.id = t.agencyModeFk
+ LEFT JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
WHERE e.ticketFk = vCurTicketFk AND p.isPackageReturnable
AND vWithPackage
+ AND NOT dm.`code`= 'PICKUP'
GROUP BY p.itemFk);
-- No retornables o no catalogados
- INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed)
+ INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed)
(SELECT e.freightItemFk, vCurTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.freightItemFk, vClientFk), 1
- FROM expedition e
+ FROM expedition e
JOIN item i ON i.id = e.freightItemFk
LEFT JOIN packaging p ON p.itemFk = i.id
WHERE e.ticketFk = vCurTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0
AND getSpecialPrice(e.freightItemFk, vClientFk) > 0
GROUP BY e.freightItemFk);
-
+
IF(vHasDailyInvoice) AND vHasToInvoice THEN
-- Facturacion rapida
@@ -73767,10 +74555,10 @@ BEGIN
-- Facturar si está contabilizado
IF vIsTaxDataChecked THEN
CALL invoiceOut_newFromClient(
- vClientFk,
- (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')),
- vShipped,
- vCompanyFk,
+ vClientFk,
+ (SELECT invoiceSerial(vClientFk, vCompanyFk, 'multiple')),
+ vShipped,
+ vCompanyFk,
NULL,
NULL,
vNewInvoiceId);
@@ -74005,13 +74793,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
@@ -74066,14 +74853,14 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_DelayTruck`(vWarehouserFk IN
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE vTicketFk INT;
- DECLARE cur1 CURSOR FOR SELECT ticketFk FROM tmp.ticket;
+ DECLARE cur1 CURSOR FOR SELECT ticketFk FROM tTicket;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
CALL vn.productionControl(vWarehouserFk,0) ;
- DROP TEMPORARY TABLE IF EXISTS tmp.ticket;
- CREATE TEMPORARY TABLE tmp.ticket
+ DROP TEMPORARY TABLE IF EXISTS tTicket;
+ CREATE TEMPORARY TABLE tTicket
SELECT ticketFk
FROM tmp.productionBuffer
JOIN alertLevel al ON al.code = 'FREE'
@@ -74094,6 +74881,7 @@ BEGIN
END LOOP;
CLOSE cur1;
+ DROP TEMPORARY TABLE tTicket, tmp.productionBuffer;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -74344,7 +75132,7 @@ BEGIN
JOIN vn.componentType ct ON ct.id = c.typeFk
JOIN vn.sale s ON s.id = sc.saleFk
JOIN tmp.ticket t ON t.ticketFk = s.ticketFk
- WHERE ct.code = 'FREIGHT'
+ WHERE ct.code = 'freight'
GROUP BY t.ticketFk) sb ON sb.ticketFk = tf.ticketFk
SET tf.freight = sb.freight;
@@ -74366,7 +75154,7 @@ BEGIN
-- Margin
UPDATE tmp.ticketFloramondo tf
- JOIN (SELECT SUM(IF(ct.code = 'COST',sc.value, 0)) cost,
+ JOIN (SELECT SUM(IF(ct.code = 'cost',sc.value, 0)) cost,
SUM(IF(ct.isMargin, sc.value, 0)) margin,
t.ticketFk
FROM vn.saleComponent sc
@@ -74485,7 +75273,9 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getProblems`(IN vIsTodayRelative tinyint(1))
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getProblems`(
+ vIsTodayRelative tinyint(1)
+)
BEGIN
/**
* Calcula los problemas para un conjunto de tickets.
@@ -74502,6 +75292,7 @@ BEGIN
SELECT ticketFk,
MAX(isFreezed) isFreezed,
MAX(risk) risk,
+ MAX(hasRisk) hasRisk,
MAX(hasHighRisk) hasHighRisk,
MAX(hasTicketRequest) hasTicketRequest,
MAX(itemShortage) itemShortage,
@@ -74516,19 +75307,19 @@ BEGIN
FROM tmp.sale_problems
GROUP BY ticketFk;
- UPDATE tmp.ticket_problems tp
- SET tp.totalProblems = (
- (tp.isFreezed) +
- IF(tp.risk,TRUE, FALSE) +
- (tp.hasTicketRequest) +
- (tp.isTaxDataChecked = 0) +
- (tp.hasComponentLack) +
- (tp.itemDelay) +
- (tp.isTooLittle) +
- (tp.itemLost) +
- (tp.hasRounding) +
- (tp.itemShortage) +
- (tp.isVip)
+ UPDATE tmp.ticket_problems
+ SET totalProblems = (
+ (isFreezed) +
+ (hasRisk) +
+ (hasTicketRequest) +
+ (!isTaxDataChecked) +
+ (hasComponentLack) +
+ (itemDelay IS NOT NULL) +
+ (isTooLittle) +
+ (itemLost IS NOT NULL) +
+ (hasRounding IS NOT NULL) +
+ (itemShortage IS NOT NULL) +
+ (isVip)
);
DROP TEMPORARY TABLE tmp.sale_problems;
@@ -75165,16 +75956,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;
@@ -75185,8 +75988,9 @@ BEGIN
CALL ticket_recalc(vTicketFk, NULL);
END LOOP;
-
CLOSE cTickets;
+
+ DROP TEMPORARY TABLE tItems;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -75228,25 +76032,32 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `ticket_setNextState` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setNextState`(vSelf INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setNextState`(
+ vSelf INT
+)
BEGIN
/**
- * Cambia el estado del ticket al siguiente estado según la tabla state
+ * Cambia el estado del ticket al siguiente estado según la tabla state.
*
- * @param vSelf id dle ticket
+ * @param vSelf Id ticket
*/
DECLARE vStateFk INT;
DECLARE vNewStateFk INT;
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ RESIGNAL;
+ END;
+
SELECT stateFk INTO vStateFk
FROM ticketState
WHERE ticketFk = vSelf;
@@ -75255,6 +76066,10 @@ BEGIN
FROM state
WHERE id = vStateFk;
+ IF vNewStateFk IS NULL THEN
+ CALL util.throw('The ticket not have next state');
+ END IF;
+
INSERT INTO ticketTracking(stateFk, ticketFk, userFk)
VALUES (vNewStateFk, vSelf, account.myUser_getId());
END ;;
@@ -75273,13 +76088,16 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setParking`(IN `vTicketFk` VARCHAR(8), IN `vParkingFk` INT)
-proc: BEGIN
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setParking`(
+ vSelf INT,
+ vParkingFk INT
+)
+BEGIN
/**
- * Aparca un ticket en un parking
+ * Aparca un ticket en un parking.
*
- * @param vTicketFk id del ticket
- * @param vParkingFk id del parking
+ * @param vSelf Id ticket
+ * @param vParkingFk Id parking
*/
DECLARE vDone INT DEFAULT FALSE;
DECLARE vCollectionTicketFk INT;
@@ -75288,7 +76106,7 @@ proc: BEGIN
FROM ticket t
LEFT JOIN ticketCollection tc1 ON tc1.ticketFk = t.id
LEFT JOIN ticketCollection tc2 ON tc2.collectionFk = tc1.collectionFk
- WHERE t.id = vTicketFk;
+ WHERE t.id = vSelf;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
@@ -75297,7 +76115,7 @@ proc: BEGIN
FROM ticket t
LEFT JOIN ticketCollection tc1 ON tc1.ticketFk = t.id
LEFT JOIN ticketCollection tc2 ON tc2.collectionFk = tc1.collectionFk
- WHERE t.id = vTicketFk
+ WHERE t.id = vSelf
ON DUPLICATE KEY UPDATE parkingFk = vParkingFk;
OPEN vCursor;
@@ -75378,17 +76196,39 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblem`(
)
BEGIN
/**
- * Update column ticket.problem with a problem code
+ * Update column ticket.problem with a problem code and SET NULL when
+ * the problem is not requiered
*
* @param vProblemCode Code to set or unset
- * @table tmp.ticket(ticketFk, hasProblem)
+ * @table tmp.ticket(ticketFk, hasProblem, isProblemCalcNeeded)
*/
- UPDATE ticket t
- JOIN tmp.ticket tt ON tt.ticketFk = t.id
- SET t.problem = CONCAT(
- IF(tt.hasProblem,
- CONCAT(problem, ',', vProblemCode),
- REPLACE(problem, vProblemCode , '')));
+ DECLARE vTicketFk INT;
+ DECLARE vHasProblem INT;
+ DECLARE vIsProblemCalcNeeded BOOL;
+ DECLARE vDone BOOL;
+ 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, vIsProblemCalcNeeded;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ UPDATE ticket
+ SET problem = IF(vIsProblemCalcNeeded,
+ CONCAT(IF(vHasProblem,
+ CONCAT(problem, ',', vProblemCode),
+ REPLACE(problem, vProblemCode , ''))),
+ NULL)
+ WHERE id = vTicketFk;
+ END LOOP;
+ CLOSE vTicketList;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -75415,9 +76255,11 @@ BEGIN
* @param vClientFk Id Cliente, if NULL all clients
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- (INDEX(ticketFk))
+ (INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT t.id ticketFk, FALSE hasProblem
+ SELECT t.id ticketFk,
+ FALSE hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
FROM ticket t
WHERE t.shipped >= util.VN_CURDATE()
AND (vClientFk IS NULL OR t.clientFk = vClientFk);
@@ -75427,7 +76269,7 @@ BEGIN
JOIN client c ON c.id = ti.clientFk
SET t.hasProblem = TRUE
WHERE c.isFreezed;
-
+
CALL ticket_setProblem('isFreezed');
DROP TEMPORARY TABLE tmp.ticket;
@@ -75457,9 +76299,11 @@ BEGIN
* @param vSelf Id ticket, if NULL ALL tickets
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- (INDEX(ticketFk))
+ (INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT t.id ticketFk, FALSE hasProblem
+ SELECT t.id ticketFk,
+ FALSE hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
FROM ticket t
WHERE t.shipped >= util.VN_CURDATE()
AND (vSelf IS NULL OR t.id = vSelf);
@@ -75499,21 +76343,30 @@ BEGIN
*/
DECLARE vHasRisk BOOL;
DECLARE vHasHighRisk BOOL;
+ DECLARE vIsProblemCalcNeeded BOOL;
- SELECT t.risk > (c.credit + 10), ((t.risk - cc.riskTolerance) > (c.credit + 10))
- INTO vHasRisk, vHasHighRisk
+ SELECT t.risk > (c.credit + 10),
+ (t.risk - cc.riskTolerance) > (c.credit + 10),
+ ticket_isProblemCalcNeeded(t.id)
+ INTO vHasRisk, vHasHighRisk, vIsProblemCalcNeeded
FROM client c
JOIN ticket t ON t.clientFk = c.id
JOIN clientConfig cc
WHERE t.id = vSelf;
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- SELECT vSelf ticketFk, vHasRisk hasProblem;
+ ENGINE = MEMORY
+ SELECT vSelf ticketFk,
+ vHasRisk hasProblem,
+ vIsProblemCalcNeeded isProblemCalcNeeded;
CALL ticket_setProblem('hasRisk');
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- SELECT vSelf ticketFk, vHasHighRisk hasProblem;
+ ENGINE = MEMORY
+ SELECT vSelf ticketFk,
+ vHasHighRisk hasProblem,
+ vIsProblemCalcNeeded isProblemCalcNeeded;
CALL ticket_setProblem('hasHighRisk');
@@ -75526,6 +76379,54 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemRiskByClient` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_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 ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemRounding` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -75551,10 +76452,13 @@ BEGIN
FROM ticket
WHERE id = vSelf;
- CALL buyUltimate(vWarehouseFk, vDated);
+ CALL buy_getUltimate(NULL, vWarehouseFk, vDated);
- CREATE OR REPLACE TEMPORARY TABLE tmp.sale
- SELECT s.id saleFk , MOD(s.quantity, b.`grouping`) hasProblem
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk, isProblemCalcNeeded))
+ SELECT s.id saleFk ,
+ MOD(s.quantity, b.`grouping`) hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
FROM ticket t
JOIN sale s ON s.ticketFk = t.id
JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
@@ -75590,9 +76494,11 @@ BEGIN
* @param vClientFk Id cliente, if NULL all clients
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- (INDEX(ticketFk))
+ (INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT t.id ticketFk, IF(c.isTaxDataChecked, FALSE, TRUE) hasProblem
+ SELECT t.id ticketFk,
+ IF(c.isTaxDataChecked, FALSE, TRUE) hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
FROM ticket t
JOIN client c ON c.id = t.clientFk
WHERE t.shipped >= util.VN_CURDATE()
@@ -75626,11 +76532,25 @@ BEGIN
*
* @param vSelf Id del ticket
*/
+ DECLARE vTicketIsTooLittle BOOL;
+
+ SELECT ticket_isTooLittle(vSelf) INTO vTicketIsTooLittle;
+
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- (INDEX(ticketFk))
+ (INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT vSelf ticketFk, ticket_isTooLittle(vSelf) hasProblem;
-
+ WITH ticketData AS (
+ SELECT addressFk, DATE(shipped) dated
+ FROM vn.ticket
+ WHERE id = vSelf
+ )
+ SELECT t.id ticketFk,
+ vTicketIsTooLittle hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
+ FROM vn.ticket t
+ JOIN ticketData td ON td.addressFk = t.addressFk
+ WHERE t.shipped BETWEEN td.dated AND util.dayEnd(td.dated);
+
CALL ticket_setProblem('isTooLittle');
DROP TEMPORARY TABLE tmp.ticket;
@@ -75661,7 +76581,7 @@ BEGIN
* @param vItemFk Id del item, NULL ALL items
*/
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- (INDEX(ticketFk))
+ (INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
WITH tickets AS(
SELECT t.id ticketFk
@@ -75670,7 +76590,9 @@ BEGIN
WHERE t.shipped >= util.VN_CURDATE()
AND (s.itemFk = vItemFk OR vItemFk IS NULL)
GROUP BY t.id
- )SELECT ticketFk, ticket_isTooLittle(ticketFk) hasProblem
+ )SELECT ticketFk,
+ ticket_isTooLittle(ticketFk) hasProblem,
+ ticket_isProblemCalcNeeded(ticketFk) isProblemCalcNeeded
FROM tickets;
CALL ticket_setProblem('isTooLittle');
@@ -75693,89 +76615,85 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `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;
-
- SELECT COUNT(*) INTO vHasDebt
- FROM `client`
- WHERE id = vClientFk
- AND typeFk = 'normal';
-
- IF vHasDebt THEN
-
+ 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
- FROM vn.ticket t
- WHERE clientFk = vClientFk
- AND refFk IS NULL
- AND NOT isDeleted
- AND totalWithoutVat <> 0
- ), dated AS(
- SELECT t.companyFk, MIN(DATE(t.dated) - INTERVAL cc.riskScope MONTH) started,
- MAX(DATE(t.dated)) ended
- FROM ticket t
- JOIN vn.clientConfig cc
- GROUP BY t.companyFk
- ), balance AS(
- SELECT SUM(amount)amount, companyFk
- FROM (
- SELECT amount, companyFk
- FROM vn.clientRisk
- WHERE clientFk = vClientFk
- UNION ALL
- SELECT -(SUM(amount) / 100) amount, tm.companyFk
- FROM hedera.tpvTransaction t
- JOIN hedera.tpvMerchant tm ON t.id = t.merchantFk
- WHERE clientFk = vClientFk
- AND receiptFk IS NULL
- AND status = 'ok'
- ) sub
- WHERE companyFk
+ WITH ticket AS (
+ 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
- ), uninvoiced AS(
- SELECT t.companyFk, DATE(t.shipped) dated, SUM(IFNULL(t.totalWithVat, 0)) amount
- FROM vn.ticket t
- JOIN dated d
- WHERE t.clientFk = vClientFk
- AND t.refFk IS NULL
- AND t.shipped BETWEEN d.started AND d.ended
- GROUP BY t.companyFk, DATE(t.shipped)
- ), receipt AS(
- SELECT companyFk,DATE(payed) dated, SUM(amountPaid) amount
- FROM vn.receipt
- WHERE clientFk = vClientFk
- AND payed > util.VN_CURDATE()
- GROUP BY companyFk, DATE(payed)
- ), risk AS(
+ ), receipt AS (
+ 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,
- SUM(ui.amount) OVER (PARTITION BY b.companyFk ORDER BY ui.dated ) +
+ ui.dated,
+ SUM(ui.amount) OVER (PARTITION BY b.companyFk ORDER BY ui.dated) +
b.amount +
SUM(IFNULL(r.amount, 0)) amount
FROM balance b
JOIN uninvoiced ui ON ui.companyFk = b.companyFk
- LEFT JOIN receipt r ON r.dated > ui.dated AND r.companyFk = ui.companyFk
+ LEFT JOIN receipt r ON r.dated > ui.dated
+ AND r.companyFk = ui.companyFk
GROUP BY b.companyFk, ui.dated
- )
- SELECT ti.ticketFk, r.amount
- FROM ticket ti
- JOIN risk r ON r.dated = ti.dated AND r.companyFk = ti.companyFk;
+ )
+ SELECT ti.ticketFk, r.amount, ti.isProblemCalcNeeded
+ FROM ticket ti
+ JOIN risk r ON r.dated = ti.dated
+ AND r.companyFk = ti.companyFk;
UPDATE ticket t
JOIN tTicketRisk tr ON tr.ticketFk = t.id
- SET t.risk = tr.amount;
+ SET t.risk = IF(tr.isProblemCalcNeeded, tr.amount, NULL);
DROP TEMPORARY TABLE tTicketRisk;
- END IF;
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -75951,7 +76869,7 @@ DELIMITER ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_splitItemPackingType`(
- vTicketFk INT,
+ vSelf INT,
vOriginalItemPackingTypeFk VARCHAR(1)
)
BEGIN
@@ -75959,7 +76877,7 @@ BEGIN
* Clona y reparte las ventas de un ticket en funcion del tipo de empaquetado.
* Respeta el id inicial para el tipo propuesto.
*
- * @param vTicketFk Identificador de vn.ticket
+ * @param vSelf Id ticket
* @param vOriginalItemPackingTypeFk Tipo para el que se reserva el número de ticket original
* @return table tmp.ticketIPT(ticketFk, itemPackingTypeFk)
*/
@@ -75967,10 +76885,12 @@ BEGIN
DECLARE vNewTicketFk INT;
DECLARE vPackingTypesToSplit INT;
DECLARE vDone INT DEFAULT FALSE;
+ DECLARE vErrorNumber INT;
+ DECLARE vErrorMsg TEXT;
- DECLARE cur1 CURSOR FOR
+ DECLARE vSaleGroup CURSOR FOR
SELECT itemPackingTypeFk
- FROM tmp.saleGroup
+ FROM tSaleGroup
WHERE itemPackingTypeFk IS NOT NULL
ORDER BY (itemPackingTypeFk = vOriginalItemPackingTypeFk) DESC;
@@ -75978,33 +76898,51 @@ BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
+ GET DIAGNOSTICS CONDITION 1
+ vErrorNumber = MYSQL_ERRNO,
+ vErrorMsg = MESSAGE_TEXT;
+
+ CALL util.debugAdd('ticket_splitItemPackingType', JSON_OBJECT(
+ 'errorNumber', vErrorNumber,
+ 'errorMsg', vErrorMsg,
+ 'ticketFk', vSelf
+ )); -- Tmp
+ ROLLBACK;
RESIGNAL;
END;
- DELETE FROM vn.sale
- WHERE quantity = 0
- AND ticketFk = vTicketFk;
+ START TRANSACTION;
- CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ SELECT id
+ FROM sale
+ WHERE ticketFk = vSelf
+ AND NOT quantity
+ FOR UPDATE;
+
+ DELETE FROM sale
+ WHERE NOT quantity
+ AND ticketFk = vSelf;
+
+ CREATE OR REPLACE TEMPORARY TABLE tSale
(PRIMARY KEY (id))
ENGINE = MEMORY
- SELECT s.id, i.itemPackingTypeFk , IFNULL(sv.litros, 0) litros
- FROM vn.sale s
- JOIN vn.item i ON i.id = s.itemFk
- LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id
- WHERE s.ticketFk = vTicketFk;
+ SELECT s.id, i.itemPackingTypeFk, IFNULL(sv.litros, 0) litros
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ LEFT JOIN saleVolume sv ON sv.saleFk = s.id
+ WHERE s.ticketFk = vSelf;
- CREATE OR REPLACE TEMPORARY TABLE tmp.saleGroup
+ CREATE OR REPLACE TEMPORARY TABLE tSaleGroup
ENGINE = MEMORY
SELECT itemPackingTypeFk, SUM(litros) totalLitros
- FROM tmp.sale
+ FROM tSale
GROUP BY itemPackingTypeFk;
SELECT COUNT(*) INTO vPackingTypesToSplit
- FROM tmp.saleGroup
+ FROM tSaleGroup
WHERE itemPackingTypeFk IS NOT NULL;
- CREATE OR REPLACE TEMPORARY TABLE tmp.ticketIPT (
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticketIPT(
ticketFk INT,
itemPackingTypeFk VARCHAR(1)
) ENGINE = MEMORY;
@@ -76012,56 +76950,64 @@ BEGIN
CASE vPackingTypesToSplit
WHEN 0 THEN
INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
- VALUES(vTicketFk, vItemPackingTypeFk);
+ VALUES(vSelf, vItemPackingTypeFk);
WHEN 1 THEN
INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
- SELECT vTicketFk, itemPackingTypeFk
- FROM tmp.saleGroup
+ SELECT vSelf, itemPackingTypeFk
+ FROM tSaleGroup
WHERE itemPackingTypeFk IS NOT NULL;
ELSE
- OPEN cur1;
-
- FETCH cur1 INTO vItemPackingTypeFk;
+ OPEN vSaleGroup;
+ FETCH vSaleGroup INTO vItemPackingTypeFk;
INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
- VALUES(vTicketFk, vItemPackingTypeFk);
+ VALUES(vSelf, vItemPackingTypeFk);
- read_loop: LOOP
- FETCH cur1 INTO vItemPackingTypeFk;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vSaleGroup INTO vItemPackingTypeFk;
IF vDone THEN
- LEAVE read_loop;
+ LEAVE l;
END IF;
- CALL vn.ticket_Clone(vTicketFk, vNewTicketFk);
+ CALL ticket_Clone(vSelf, vNewTicketFk);
INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
VALUES(vNewTicketFk, vItemPackingTypeFk);
END LOOP;
- CLOSE cur1;
+ CLOSE vSaleGroup;
- UPDATE vn.sale s
- JOIN tmp.sale ts ON ts.id = s.id
+ SELECT s.id
+ FROM sale s
+ JOIN tSale ts ON ts.id = s.id
+ JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = ts.itemPackingTypeFk
+ FOR UPDATE;
+
+ UPDATE sale s
+ JOIN tSale ts ON ts.id = s.id
JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = ts.itemPackingTypeFk
SET s.ticketFk = t.ticketFk;
SELECT itemPackingTypeFk INTO vItemPackingTypeFk
- FROM tmp.saleGroup sg
+ FROM tSaleGroup sg
WHERE sg.itemPackingTypeFk IS NOT NULL
ORDER BY sg.itemPackingTypeFk
LIMIT 1;
- UPDATE vn.sale s
- JOIN tmp.sale ts ON ts.id = s.id
+ UPDATE sale s
+ JOIN tSale ts ON ts.id = s.id
JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = vItemPackingTypeFk
SET s.ticketFk = t.ticketFk
WHERE ts.itemPackingTypeFk IS NULL;
END CASE;
+ COMMIT;
+
DROP TEMPORARY TABLE
- tmp.sale,
- tmp.saleGroup;
+ tSale,
+ tSaleGroup;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -79671,6 +80617,8 @@ BEGIN
*/
DECLARE vLastIn DATETIME ;
DECLARE vIsMiddleOdd BOOLEAN ;
+ DECLARE vMailTo VARCHAR(50) DEFAULT NULL;
+ DECLARE vUserName VARCHAR(50) DEFAULT NULL;
IF (vTimed IS NULL) THEN
SET vTimed = util.VN_NOW();
@@ -79719,6 +80667,19 @@ BEGIN
VALUES('in', NULL);
END IF;
+ IF (SELECT option1 IS NULL AND option2 IS NULL FROM tmp.workerTimeControlDirection) THEN
+ SELECT CONCAT(u.name, '@verdnatura.es'), CONCAT(w.firstName, ' ', w.lastName)
+ INTO vMailTo, vUserName
+ FROM account.user u
+ JOIN worker w ON w.bossFk = u.id
+ WHERE w.id = vWorkerFk;
+
+ CALL mail_insert(
+ vMailTo,
+ vMailTo,
+ 'Error al fichar',
+ CONCAT(vUserName, ' tiene problemas para fichar'));
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -80670,19 +81631,6 @@ BEGIN
* identificando y notificando los asientos descuadrados
* y ajustando los saldos en caso necesario.
*/
- INSERT INTO mail (receiver, subject, body)
- SELECT 'cau@verdnatura.es',
- 'Asientos descuadrados',
- GROUP_CONCAT(CONCAT(' Asiento: ', ASIEN, ' - Importe:', recon) SEPARATOR ' | \n')
- FROM (
- SELECT ASIEN,
- SUM(IFNULL(ROUND(Eurodebe, 2), 0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) recon
- FROM XDiario
- WHERE NOT enlazado
- GROUP BY ASIEN
- HAVING ABS(SUM(IFNULL(ROUND(Eurodebe, 2), 0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0))) > 0.01
- ) sub
- HAVING COUNT(*);
UPDATE XDiario xd
JOIN (
@@ -81170,55 +82118,57 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `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 (
- SELECT clientFk
- FROM vn.ticket
- WHERE landed BETWEEN vLanded AND util.dayEnd(vLanded)
- )
+ WITH clientWithTicket AS (
+ SELECT clientFk
+ FROM vn.ticket
+ WHERE shipped BETWEEN vShipped AND util.dayEnd(vShipped)
)
- SELECT c.id clientFk,
- c.name,
- c.phone,
- bt.description,
- c.salesPersonFk,
- u.name username,
- aai.invoiced,
- cnb.lastShipped
- FROM vn.client c
- JOIN notHasTicket ON notHasTicket.id = 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
- JOIN vn.town t ON t.id = pc.townFk AND t.provinceFk = a.provinceFk
- JOIN vn.zoneGeo zg ON zg.name = a.postalCode
- JOIN tmp.zoneNodes zn ON zn.geoFk = pc.geoFk
- LEFT JOIN bs.clientNewBorn cnb ON cnb.clientFk = c.id
- LEFT JOIN vn.annualAverageInvoiced aai ON aai.clientFk = c.id
- JOIN vn.clientType ct ON ct.code = c.typeFk
- JOIN vn.businessType bt ON bt.code = c.businessTypeFk
- WHERE a.isActive
- AND c.isActive
- AND ct.code = 'normal'
- AND bt.code <> 'worker'
- GROUP BY c.id;
+ SELECT c.id,
+ c.name,
+ c.phone,
+ bt.description,
+ c.salesPersonFk,
+ u.name username,
+ aai.invoiced,
+ cnb.lastShipped,
+ cwt.clientFk
+ FROM vn.client c
+ 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
+ JOIN vn.town t ON t.id = pc.townFk AND t.provinceFk = a.provinceFk
+ JOIN vn.zoneGeo zg ON zg.name = a.postalCode
+ JOIN tmp.zoneNodes zn ON zn.geoFk = pc.geoFk
+ LEFT JOIN bs.clientNewBorn cnb ON cnb.clientFk = c.id
+ LEFT JOIN vn.annualAverageInvoiced aai ON aai.clientFk = c.id
+ JOIN vn.clientType ct ON ct.code = c.typeFk
+ JOIN vn.businessType bt ON bt.code = c.businessTypeFk
+ WHERE a.isActive
+ 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;
END ;;
@@ -81462,7 +82412,8 @@ BEGIN
DROP TEMPORARY TABLE
geoCollision,
tmp.zone,
- tmp.zoneNodes;
+ tmp.zoneNodes,
+ tmp.zoneOption;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -83166,16 +84117,11 @@ SET character_set_client = utf8;
1 AS `Id_Trabajador`,
1 AS `life`,
1 AS `isPackaging`,
- 1 AS `density`,
1 AS `inventory`,
1 AS `odbc_date`,
1 AS `confeccion`,
1 AS `Temperatura`,
- 1 AS `promo`,
- 1 AS `maneuver`,
- 1 AS `target`,
- 1 AS `top_margin`,
- 1 AS `profit` */;
+ 1 AS `promo` */;
SET character_set_client = @saved_cs_client;
--
@@ -83654,8 +84600,7 @@ SET character_set_client = utf8;
1 AS `packingOut`,
1 AS `itemOriginalFk`,
1 AS `itemOriginalName`,
- 1 AS `gramsMax`,
- 1 AS `minQuantity` */;
+ 1 AS `gramsMax` */;
SET character_set_client = @saved_cs_client;
--
@@ -83668,7 +84613,6 @@ SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE VIEW `buy_edi` AS SELECT
1 AS `id`,
- 1 AS `barcode`,
1 AS `entry_year`,
1 AS `delivery_number`,
1 AS `fec`,
@@ -85241,7 +86185,7 @@ USE `bi`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `tarifa_componentes_series` AS select `ct`.`id` AS `tarifa_componentes_series_id`,`ct`.`type` AS `Serie`,`ct`.`isBase` AS `base`,`ct`.`isMargin` AS `margen` from `vn`.`componentType` `ct` */;
+/*!50001 VIEW `tarifa_componentes_series` AS select `ct`.`id` AS `tarifa_componentes_series_id`,`ct`.`name` AS `Serie`,`ct`.`isBase` AS `base`,`ct`.`isMargin` AS `margen` from `vn`.`componentType` `ct` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -85373,7 +86317,7 @@ USE `edi`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `ektRecent` AS select `e`.`id` AS `id`,`e`.`barcode` AS `barcode`,`e`.`entryYear` AS `entryYear`,`e`.`batchNumber` AS `batchNumber`,`e`.`deliveryNumber` AS `deliveryNumber`,`e`.`vendorOrderNumber` AS `vendorOrderNumber`,`e`.`fec` AS `fec`,`e`.`hor` AS `hor`,`e`.`now` AS `now`,`e`.`ptj` AS `ptj`,`e`.`ref` AS `ref`,`e`.`item` AS `item`,`e`.`pac` AS `pac`,`e`.`qty` AS `qty`,`e`.`ori` AS `ori`,`e`.`cat` AS `cat`,`e`.`agj` AS `agj`,`e`.`kop` AS `kop`,`e`.`ptd` AS `ptd`,`e`.`sub` AS `sub`,`e`.`pro` AS `pro`,`e`.`pri` AS `pri`,`e`.`package` AS `package`,`e`.`auction` AS `auction`,`e`.`klo` AS `klo`,`e`.`k1` AS `k1`,`e`.`k2` AS `k2`,`e`.`k3` AS `k3`,`e`.`k4` AS `k4`,`e`.`s1` AS `s1`,`e`.`s2` AS `s2`,`e`.`s3` AS `s3`,`e`.`s4` AS `s4`,`e`.`s5` AS `s5`,`e`.`s6` AS `s6`,`e`.`ok` AS `ok`,`e`.`trolleyFk` AS `trolleyFk`,`e`.`putOrderFk` AS `putOrderFk`,`e`.`scanned` AS `scanned`,`e`.`cps` AS `cps`,`e`.`dp` AS `dp`,`e`.`sender` AS `sender`,`ec`.`usefulAuctionLeftSegmentLength` AS `usefulAuctionLeftSegmentLength`,`ec`.`standardBarcodeLength` AS `standardBarcodeLength`,`ec`.`floridayBarcodeLength` AS `floridayBarcodeLength`,`ec`.`floramondoBarcodeLength` AS `floramondoBarcodeLength`,`ec`.`defaultKlo` AS `defaultKlo`,`ec`.`ektRecentScopeDays` AS `ektRecentScopeDays` from (`ekt` `e` join `ektConfig` `ec`) where `e`.`entryYear` = year(`util`.`VN_CURDATE`()) and `e`.`fec` >= `util`.`VN_CURDATE`() + interval -`ec`.`ektRecentScopeDays` day */;
+/*!50001 VIEW `ektRecent` AS select `e`.`id` AS `id`,`e`.`entryYear` AS `entryYear`,`e`.`batchNumber` AS `batchNumber`,`e`.`deliveryNumber` AS `deliveryNumber`,`e`.`vendorOrderNumber` AS `vendorOrderNumber`,`e`.`fec` AS `fec`,`e`.`hor` AS `hor`,`e`.`now` AS `now`,`e`.`ptj` AS `ptj`,`e`.`ref` AS `ref`,`e`.`item` AS `item`,`e`.`pac` AS `pac`,`e`.`qty` AS `qty`,`e`.`ori` AS `ori`,`e`.`cat` AS `cat`,`e`.`agj` AS `agj`,`e`.`kop` AS `kop`,`e`.`ptd` AS `ptd`,`e`.`sub` AS `sub`,`e`.`pro` AS `pro`,`e`.`pri` AS `pri`,`e`.`package` AS `package`,`e`.`auction` AS `auction`,`e`.`klo` AS `klo`,`e`.`k1` AS `k1`,`e`.`k2` AS `k2`,`e`.`k3` AS `k3`,`e`.`k4` AS `k4`,`e`.`s1` AS `s1`,`e`.`s2` AS `s2`,`e`.`s3` AS `s3`,`e`.`s4` AS `s4`,`e`.`s5` AS `s5`,`e`.`s6` AS `s6`,`e`.`ok` AS `ok`,`e`.`trolleyFk` AS `trolleyFk`,`e`.`putOrderFk` AS `putOrderFk`,`e`.`scanned` AS `scanned`,`e`.`cps` AS `cps`,`e`.`dp` AS `dp`,`e`.`sender` AS `sender`,`ec`.`usefulAuctionLeftSegmentLength` AS `usefulAuctionLeftSegmentLength`,`ec`.`standardBarcodeLength` AS `standardBarcodeLength`,`ec`.`floridayBarcodeLength` AS `floridayBarcodeLength`,`ec`.`floramondoBarcodeLength` AS `floramondoBarcodeLength`,`ec`.`defaultKlo` AS `defaultKlo`,`ec`.`ektRecentScopeDays` AS `ektRecentScopeDays` from (`ekt` `e` join `ektConfig` `ec`) where `e`.`entryYear` = year(`util`.`VN_CURDATE`()) and `e`.`fec` >= `util`.`VN_CURDATE`() + interval -`ec`.`ektRecentScopeDays` day */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -85829,7 +86773,7 @@ USE `pbx`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `queueConf` AS select `q`.`name` AS `name`,`c`.`strategy` AS `strategy`,`c`.`timeout` AS `timeout`,`c`.`retry` AS `retry`,`c`.`weight` AS `weight`,`c`.`maxLen` AS `maxlen`,`c`.`ringInUse` AS `ringinuse` from (`queue` `q` join `queueConfig` `c` on(`q`.`config` = `c`.`id`)) */;
+/*!50001 VIEW `queueConf` AS select `q`.`name` AS `name`,`c`.`strategy` AS `strategy`,`c`.`timeout` AS `timeout`,`c`.`retry` AS `retry`,`c`.`weight` AS `weight`,`c`.`maxLen` AS `maxlen`,`c`.`ringInUse` AS `ringinuse` from (`queue` `q` join `queueMultiConfig` `c` on(`q`.`config` = `c`.`id`)) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87533,7 +88477,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `saleCost` AS select `s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`s`.`discount` AS `discount`,`s`.`price` AS `price`,`c`.`name` AS `component`,`sc`.`value` AS `coste` from (((`sale` `s` join `saleComponent` `sc` on(`sc`.`saleFk` = `s`.`id`)) join `component` `c` on(`c`.`id` = `sc`.`componentFk`)) join `componentType` `ct` on(`ct`.`id` = `c`.`typeFk`)) where `ct`.`type` = 'coste' */;
+/*!50001 VIEW `saleCost` AS select `s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`s`.`discount` AS `discount`,`s`.`price` AS `price`,`c`.`name` AS `component`,`sc`.`value` AS `coste` from (((`sale` `s` join `saleComponent` `sc` on(`sc`.`saleFk` = `s`.`id`)) join `component` `c` on(`c`.`id` = `sc`.`componentFk`)) join `componentType` `ct` on(`ct`.`id` = `c`.`typeFk`)) where `ct`.`code` = 'cost' */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87659,7 +88603,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `sale_freightComponent` AS select `t`.`id` AS `ticketFk`,`sc`.`value` * `s`.`quantity` AS `amount`,`t`.`shipped` AS `shipped` from ((((`ticket` `t` straight_join `sale` `s` on(`t`.`id` = `s`.`ticketFk`)) join `saleComponent` `sc` on(`sc`.`saleFk` = `s`.`id`)) join `component` `c` on(`c`.`id` = `sc`.`componentFk`)) join `componentType` `ct` on(`ct`.`id` = `c`.`typeFk` and `ct`.`type` = 'agencia')) */;
+/*!50001 VIEW `sale_freightComponent` AS select `t`.`id` AS `ticketFk`,`sc`.`value` * `s`.`quantity` AS `amount`,`t`.`shipped` AS `shipped` from ((((`ticket` `t` straight_join `sale` `s` on(`t`.`id` = `s`.`ticketFk`)) join `saleComponent` `sc` on(`sc`.`saleFk` = `s`.`id`)) join `component` `c` on(`c`.`id` = `sc`.`componentFk`)) join `componentType` `ct` on(`ct`.`id` = `c`.`typeFk` and `ct`.`code` = 'freight')) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -88835,7 +89779,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `Tipos` AS select `it`.`id` AS `tipo_id`,`it`.`code` AS `Id_Tipo`,`it`.`name` AS `Tipo`,`it`.`order` AS `Orden`,`it`.`categoryFk` AS `reino_id`,`it`.`workerFk` AS `Id_Trabajador`,`it`.`life` AS `life`,`it`.`isPackaging` AS `isPackaging`,`it`.`density` AS `density`,`it`.`isInventory` AS `inventory`,`it`.`created` AS `odbc_date`,`it`.`making` AS `confeccion`,`it`.`temperatureFk` AS `Temperatura`,`it`.`promo` AS `promo`,`it`.`maneuver` AS `maneuver`,`it`.`target` AS `target`,`it`.`topMargin` AS `top_margin`,`it`.`profit` AS `profit` from `vn`.`itemType` `it` */;
+/*!50001 VIEW `Tipos` AS select `it`.`id` AS `tipo_id`,`it`.`code` AS `Id_Tipo`,`it`.`name` AS `Tipo`,`it`.`order` AS `Orden`,`it`.`categoryFk` AS `reino_id`,`it`.`workerFk` AS `Id_Trabajador`,`it`.`life` AS `life`,`it`.`isPackaging` AS `isPackaging`,`it`.`isInventory` AS `inventory`,`it`.`created` AS `odbc_date`,`it`.`making` AS `confeccion`,`it`.`temperatureFk` AS `Temperatura`,`it`.`promo` AS `promo` from `vn`.`itemType` `it` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89267,7 +90211,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `buySource` AS select `b`.`entryFk` AS `Id_Entrada`,`b`.`isPickedOff` AS `isPickedOff`,NULL AS `tarifa0`,`e`.`kop` AS `kop`,`b`.`id` AS `Id_Compra`,`i`.`typeFk` AS `tipo_id`,`b`.`itemFk` AS `Id_Article`,`i`.`size` AS `Medida`,`i`.`stems` AS `Tallos`,`b`.`stickers` AS `Etiquetas`,`b`.`packagingFk` AS `Id_Cubo`,`b`.`buyingValue` AS `Costefijo`,`b`.`packing` AS `Packing`,`b`.`grouping` AS `Grouping`,`b`.`quantity` AS `Cantidad`,`b`.`price2` AS `Tarifa2`,`b`.`price3` AS `Tarifa3`,`b`.`isChecked` AS `Punteo`,`b`.`groupingMode` AS `Caja`,`i`.`isToPrint` AS `Imprimir`,`i`.`name` AS `Article`,`vn`.`ink`.`picture` AS `Tinta`,`i`.`originFk` AS `id_origen`,`i`.`minPrice` AS `PVP`,NULL AS `Id_Accion`,`s`.`company_name` AS `pro`,`i`.`hasMinPrice` AS `Min`,`b`.`isIgnored` AS `Novincular`,`b`.`freightValue` AS `Portefijo`,round(`b`.`buyingValue` * `b`.`quantity`,2) AS `Importe`,`b`.`printedStickers` AS `Vida`,`i`.`comment` AS `reference`,`b`.`workerFk` AS `Id_Trabajador`,`e`.`s1` AS `S1`,`e`.`s2` AS `S2`,`e`.`s3` AS `S3`,`e`.`s4` AS `S4`,`e`.`s5` AS `S5`,`e`.`s6` AS `S6`,0 AS `price_fixed`,`i`.`producerFk` AS `producer_id`,`i`.`subName` AS `tag1`,`i`.`value5` AS `tag2`,`i`.`value6` AS `tag3`,`i`.`value7` AS `tag4`,`i`.`value8` AS `tag5`,`i`.`value9` AS `tag6`,`i`.`value10` AS `tag7`,`s`.`company_name` AS `company_name`,`b`.`weight` AS `weightPacking`,`i`.`packingOut` AS `packingOut`,`b`.`itemOriginalFk` AS `itemOriginalFk`,`io`.`longName` AS `itemOriginalName`,`it`.`gramsMax` AS `gramsMax`,`i`.`minQuantity` AS `minQuantity` from ((((((`vn`.`item` `i` join `vn`.`itemType` `it` on(`it`.`id` = `i`.`typeFk`)) left join `vn`.`ink` on(`vn`.`ink`.`id` = `i`.`inkFk`)) left join `vn`.`buy` `b` on(`b`.`itemFk` = `i`.`id`)) left join `vn`.`item` `io` on(`io`.`id` = `b`.`itemOriginalFk`)) left join `edi`.`ekt` `e` on(`e`.`id` = `b`.`ektFk`)) left join `edi`.`supplier` `s` on(`e`.`pro` = `s`.`supplier_id`)) */;
+/*!50001 VIEW `buySource` AS select `b`.`entryFk` AS `Id_Entrada`,`b`.`isPickedOff` AS `isPickedOff`,NULL AS `tarifa0`,`e`.`kop` AS `kop`,`b`.`id` AS `Id_Compra`,`i`.`typeFk` AS `tipo_id`,`b`.`itemFk` AS `Id_Article`,`i`.`size` AS `Medida`,`i`.`stems` AS `Tallos`,`b`.`stickers` AS `Etiquetas`,`b`.`packagingFk` AS `Id_Cubo`,`b`.`buyingValue` AS `Costefijo`,`b`.`packing` AS `Packing`,`b`.`grouping` AS `Grouping`,`b`.`quantity` AS `Cantidad`,`b`.`price2` AS `Tarifa2`,`b`.`price3` AS `Tarifa3`,`b`.`isChecked` AS `Punteo`,`b`.`groupingMode` AS `Caja`,`i`.`isToPrint` AS `Imprimir`,`i`.`name` AS `Article`,`vn`.`ink`.`picture` AS `Tinta`,`i`.`originFk` AS `id_origen`,`i`.`minPrice` AS `PVP`,NULL AS `Id_Accion`,`s`.`company_name` AS `pro`,`i`.`hasMinPrice` AS `Min`,`b`.`isIgnored` AS `Novincular`,`b`.`freightValue` AS `Portefijo`,round(`b`.`buyingValue` * `b`.`quantity`,2) AS `Importe`,`b`.`printedStickers` AS `Vida`,`i`.`comment` AS `reference`,`b`.`workerFk` AS `Id_Trabajador`,`e`.`s1` AS `S1`,`e`.`s2` AS `S2`,`e`.`s3` AS `S3`,`e`.`s4` AS `S4`,`e`.`s5` AS `S5`,`e`.`s6` AS `S6`,0 AS `price_fixed`,`i`.`producerFk` AS `producer_id`,`i`.`subName` AS `tag1`,`i`.`value5` AS `tag2`,`i`.`value6` AS `tag3`,`i`.`value7` AS `tag4`,`i`.`value8` AS `tag5`,`i`.`value9` AS `tag6`,`i`.`value10` AS `tag7`,`s`.`company_name` AS `company_name`,`b`.`weight` AS `weightPacking`,`i`.`packingOut` AS `packingOut`,`b`.`itemOriginalFk` AS `itemOriginalFk`,`io`.`longName` AS `itemOriginalName`,`it`.`gramsMax` AS `gramsMax` from ((((((`vn`.`item` `i` join `vn`.`itemType` `it` on(`it`.`id` = `i`.`typeFk`)) left join `vn`.`ink` on(`vn`.`ink`.`id` = `i`.`inkFk`)) left join `vn`.`buy` `b` on(`b`.`itemFk` = `i`.`id`)) left join `vn`.`item` `io` on(`io`.`id` = `b`.`itemOriginalFk`)) left join `edi`.`ekt` `e` on(`e`.`id` = `b`.`ektFk`)) left join `edi`.`supplier` `s` on(`e`.`pro` = `s`.`supplier_id`)) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89285,7 +90229,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `buy_edi` AS select `t`.`id` AS `id`,`t`.`barcode` AS `barcode`,`t`.`entryYear` AS `entry_year`,`t`.`deliveryNumber` AS `delivery_number`,`t`.`fec` AS `fec`,`t`.`hor` AS `hor`,`t`.`now` AS `now`,`t`.`ptj` AS `ptj`,`t`.`ref` AS `ref`,`t`.`item` AS `item`,`t`.`pac` AS `pac`,`t`.`qty` AS `qty`,`t`.`ori` AS `ori`,`t`.`cat` AS `cat`,`t`.`agj` AS `agj`,`t`.`kop` AS `kop`,`t`.`ptd` AS `ptd`,`t`.`sub` AS `sub`,`t`.`pro` AS `pro`,`t`.`pri` AS `pri`,`t`.`package` AS `package`,`t`.`auction` AS `auction`,`t`.`klo` AS `klo`,`t`.`k1` AS `k01`,`t`.`k2` AS `k02`,`t`.`k3` AS `k03`,`t`.`k4` AS `k04`,`t`.`s1` AS `s1`,`t`.`s2` AS `s2`,`t`.`s3` AS `s3`,`t`.`s4` AS `s4`,`t`.`s5` AS `s5`,`t`.`s6` AS `s6`,`t`.`ok` AS `ok`,`t`.`trolleyFk` AS `trolley_id`,`t`.`putOrderFk` AS `putOrderFk`,`t`.`scanned` AS `scanned` from `edi`.`ekt` `t` */;
+/*!50001 VIEW `buy_edi` AS select `t`.`id` AS `id`,`t`.`entryYear` AS `entry_year`,`t`.`deliveryNumber` AS `delivery_number`,`t`.`fec` AS `fec`,`t`.`hor` AS `hor`,`t`.`now` AS `now`,`t`.`ptj` AS `ptj`,`t`.`ref` AS `ref`,`t`.`item` AS `item`,`t`.`pac` AS `pac`,`t`.`qty` AS `qty`,`t`.`ori` AS `ori`,`t`.`cat` AS `cat`,`t`.`agj` AS `agj`,`t`.`kop` AS `kop`,`t`.`ptd` AS `ptd`,`t`.`sub` AS `sub`,`t`.`pro` AS `pro`,`t`.`pri` AS `pri`,`t`.`package` AS `package`,`t`.`auction` AS `auction`,`t`.`klo` AS `klo`,`t`.`k1` AS `k01`,`t`.`k2` AS `k02`,`t`.`k3` AS `k03`,`t`.`k4` AS `k04`,`t`.`s1` AS `s1`,`t`.`s2` AS `s2`,`t`.`s3` AS `s3`,`t`.`s4` AS `s4`,`t`.`s5` AS `s5`,`t`.`s6` AS `s6`,`t`.`ok` AS `ok`,`t`.`trolleyFk` AS `trolley_id`,`t`.`putOrderFk` AS `putOrderFk`,`t`.`scanned` AS `scanned` from `edi`.`ekt` `t` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89879,7 +90823,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `mandato_tipo` AS select `m`.`id` AS `idmandato_tipo`,`m`.`name` AS `Nombre` from `vn`.`mandateType` `m` */;
+/*!50001 VIEW `mandato_tipo` AS select `m`.`id` AS `idmandato_tipo`,`m`.`code` AS `Nombre` from `vn`.`mandateType` `m` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -90559,4 +91503,4 @@ USE `vn2008`;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-07-09 5:48:04
+-- Dump completed on 2024-09-04 7:00:41
diff --git a/db/dump/.dump/triggers.sql b/db/dump/.dump/triggers.sql
index 41525b2eb..70ef63cf4 100644
--- a/db/dump/.dump/triggers.sql
+++ b/db/dump/.dump/triggers.sql
@@ -175,6 +175,70 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`mailAliasAccount_beforeInsert`
+ BEFORE INSERT ON `mailAliasAccount`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`mailAliasAccount_beforeUpdate`
+ BEFORE UPDATE ON `mailAliasAccount`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`mailAliasAccount_afterDelete`
+ AFTER DELETE ON `mailAliasAccount`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO userLog
+ SET `action` = 'delete',
+ `changedModel` = 'MailAliasAccount',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`mailForward_beforeInsert`
BEFORE INSERT ON `mailForward`
FOR EACH ROW
@@ -1359,6 +1423,70 @@ DELIMITER ;
--
USE `salix`;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `salix`.`ACL_beforeInsert`
+ BEFORE INSERT ON `ACL`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `salix`.`ACL_beforeUpdate`
+ BEFORE UPDATE ON `ACL`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `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 ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
--
-- Current Database: `srt`
@@ -1374,6 +1502,134 @@ USE `srt`;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`buffer_beforeInsert`
+ BEFORE INSERT ON `buffer`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`buffer_beforeUpdate`
+ BEFORE UPDATE ON `buffer`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `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 ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`config_beforeInsert`
+ BEFORE INSERT ON `config`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`config_beforeUpdate`
+ BEFORE UPDATE ON `config`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `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 ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`expedition_beforeUpdate`
BEFORE UPDATE ON `expedition`
FOR EACH ROW
@@ -4084,29 +4340,22 @@ DELIMITER ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`delivery_beforeInsert`
BEFORE INSERT ON `delivery`
FOR EACH ROW
BEGIN
-
- IF (NEW.longitude IS NOT NULL AND NEW.latitude IS NOT NULL AND NEW.ticketFK IS NOT NULL)
+ IF (NEW.longitude IS NOT NULL
+ AND NEW.latitude IS NOT NULL
+ AND NEW.ticketFK IS NOT NULL)
THEN
- UPDATE address
- SET longitude = NEW.longitude,
- latitude = NEW.latitude
- WHERE id IN (
- SELECT addressFK
- FROM ticket
- WHERE id = NEW.ticketFk
- );
+ CALL address_updateCoordinates(NEW.ticketFk, NEW.longitude, NEW.latitude);
END IF;
-
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -4116,29 +4365,22 @@ DELIMITER ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`delivery_beforeUpdate`
BEFORE UPDATE ON `delivery`
FOR EACH ROW
BEGIN
-
-IF (NEW.longitude IS NOT NULL AND NEW.latitude IS NOT NULL AND NEW.ticketFK IS NOT NULL)
+ IF (NEW.longitude IS NOT NULL
+ AND NEW.latitude IS NOT NULL
+ AND NEW.ticketFK IS NOT NULL)
THEN
- UPDATE address
- SET longitude = NEW.longitude,
- latitude = NEW.latitude
- WHERE id IN (
- SELECT addressFK
- FROM ticket
- WHERE id = NEW.ticketFk
- );
+ CALL address_updateCoordinates(NEW.ticketFk, NEW.longitude, NEW.latitude);
END IF;
-
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -5305,11 +5547,32 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`host_beforeInsert`
+ BEFORE INSERT ON `host`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`host_beforeUpdate`
BEFORE UPDATE ON `host`
FOR EACH ROW
BEGIN
SET new.updated = util.VN_NOW();
+ SET NEW.editorFk = account.myUser_getId();
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -6176,6 +6439,72 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemMinimumQuantity_beforeInsert`
+ BEFORE INSERT ON `itemMinimumQuantity`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+ CALL itemMinimumQuantity_check(NEW.id, NEW.itemFk, NEW.started, NEW.ended, NEW.warehouseFk);
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemMinimumQuantity_beforeUpdate`
+ BEFORE UPDATE ON `itemMinimumQuantity`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+ CALL itemMinimumQuantity_check(NEW.id, NEW.itemFk, NEW.started, NEW.ended, NEW.warehouseFk);
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemMinimumQuantity_afterDelete`
+ AFTER DELETE ON `itemMinimumQuantity`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO itemLog
+ SET `action` = 'delete',
+ `changedModel` = 'ItemMinimumQuantity',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_beforeInsert`
BEFORE INSERT ON `itemShelving`
FOR EACH ROW
@@ -6209,10 +6538,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 */ ;
@@ -6309,6 +6634,30 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_afterDelete`
+ AFTER DELETE ON `itemShelving`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO shelvingLog
+ SET `action` = 'delete',
+ `changedModel` = 'itemShelving',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelvingSale_afterInsert`
AFTER INSERT ON `itemShelvingSale`
FOR EACH ROW
@@ -7162,6 +7511,70 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`productionConfig_beforeInsert`
+ BEFORE INSERT ON `productionConfig`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`productionConfig_beforeUpdate`
+ BEFORE UPDATE ON `productionConfig`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`productionConfig_afterDelete`
+ AFTER DELETE ON `productionConfig`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO productionConfig
+ SET `action` = 'delete',
+ `changedModel` = 'ProductionConfig',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`projectNotes_beforeInsert`
BEFORE INSERT ON `projectNotes`
FOR EACH ROW
@@ -7529,6 +7942,54 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`roadmap_beforeInsert`
+ BEFORE INSERT ON `roadmap`
+ FOR EACH ROW
+BEGIN
+ IF NEW.driver1Fk IS NOT NULL THEN
+ SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
+ ELSE
+ SET NEW.driverName = NULL;
+ END IF;
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`roadmap_beforeUpdate`
+ BEFORE UPDATE ON `roadmap`
+ FOR EACH ROW
+BEGIN
+ IF NEW.driver1Fk IS NOT NULL THEN
+ SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
+ ELSE
+ SET NEW.driverName = NULL;
+ END IF;
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!50003 SET character_set_client = @saved_cs_client */ ;
+/*!50003 SET character_set_results = @saved_cs_results */ ;
+/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!50003 SET @saved_col_connection = @@collation_connection */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
+/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expeditionTruck_beforeInsert`
BEFORE INSERT ON `roadmapStop` FOR EACH ROW
BEGIN
@@ -9020,13 +9481,22 @@ 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 AND NOT (
+ SELECT (COUNT(s.id) = COUNT(cb.saleFk)
+ AND SUM(s.quantity) = SUM(cb.quantity))
+ FROM sale s
+ LEFT JOIN claimBeginning cb ON cb.saleFk = s.id
+ WHERE s.ticketFk = NEW.id
+ ) 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
@@ -10939,4 +11409,4 @@ USE `vn2008`;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-07-09 5:48:24
+-- Dump completed on 2024-09-04 7:01:01
diff --git a/db/dump/dump.after.sql b/db/dump/dump.after.sql
index f1a121b2a..7508a36a7 100644
--- a/db/dump/dump.after.sql
+++ b/db/dump/dump.after.sql
@@ -1 +1,10 @@
--- Executed after dump
+CREATE USER 'vn'@'localhost';
+
+GRANT SELECT,
+ INSERT,
+ UPDATE,
+ DELETE,
+ CREATE TEMPORARY TABLES,
+ EXECUTE,
+ TRIGGER
+ ON *.* TO 'vn'@'localhost';
diff --git a/db/dump/fixtures.after.sql b/db/dump/fixtures.after.sql
index 84ce0d940..59730d592 100644
--- a/db/dump/fixtures.after.sql
+++ b/db/dump/fixtures.after.sql
@@ -10,9 +10,6 @@ SET foreign_key_checks = 0;
INSERT INTO util.config (id, environment, mockTime, mockUtcTime, mockEnabled)
VALUES (1, 'local', '2001-01-01 12:00:00', '2001-01-01 11:00:00', TRUE);
-INSERT INTO util.binlogQueue (code,logName, `position`)
- VALUES ('mylogger', 'bin.000001', 4);
-
/* #5483
INSERT INTO vn.entryConfig (defaultEntry, mailToNotify, inventorySupplierFk, maxLockTime, defaultSupplierFk)
VALUES(1, NULL, 1, 300, 1);
diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql
index db0fab77f..ea689c609 100644
--- a/db/dump/fixtures.before.sql
+++ b/db/dump/fixtures.before.sql
@@ -108,6 +108,7 @@ INSERT INTO `vn`.`worker`(`id`,`code`, `firstName`, `lastName`, `bossFk`)
UPDATE `vn`.`worker` SET bossFk = NULL WHERE id = 20;
UPDATE `vn`.`worker` SET bossFk = 20 WHERE id = 1 OR id = 9;
UPDATE `vn`.`worker` SET bossFk = 19 WHERE id = 18;
+UPDATE `vn`.`worker` SET bossFk = 50 WHERE id = 49;
DELETE FROM `vn`.`worker` WHERE firstName ='customer';
@@ -412,7 +413,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'),
@@ -582,6 +583,7 @@ INSERT INTO `vn`.`supplier`(`id`, `name`, `nickname`,`account`,`countryFk`,`nif`
VALUES
(1, 'PLANTS SL', 'Plants nick', 4100000001, 1, '06089160W', 0, util.VN_CURDATE(), 1, 'supplier address 1', 'GOTHAM', 1, 46000, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'),
(2, 'FARMER KING', 'The farmer', 4000020002, 1, '87945234L', 0, util.VN_CURDATE(), 1, 'supplier address 2', 'GOTHAM', 2, 46000, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'),
+ (4, 'INVENTARIO', 'INVENTARIO', 4000000004, NULL, NULL, 0, util.VN_CURDATE(), 1, NULL, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL, NULL),
(69, 'PACKAGING', 'Packaging nick', 4100000069, 1, '94935005K', 0, util.VN_CURDATE(), 1, 'supplier address 5', 'ASGARD', 3, 46600, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'),
(442, 'VERDNATURA LEVANTE SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, util.VN_CURDATE(), 1, 'supplier address 3', 'GOTHAM', 1, 46000, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'),
(567, 'HOLLAND', 'Holland nick', 4000020567, 1, '14364089Z', 0, util.VN_CURDATE(), 1, 'supplier address 6', 'ASGARD', 3, 46600, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'),
@@ -632,7 +634,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');
@@ -743,45 +745,45 @@ INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agen
(6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3),
(7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5);
-INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`)
+INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`, `problem`, `risk`)
VALUES
- (1 , 3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 121, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1),
- (2 , 1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 1, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 2),
- (3 , 1, 7, 1, 6, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL, 3),
- (4 , 3, 2, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 9, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL, NULL),
- (5 , 3, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), NULL, NULL),
- (6 , 1, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, NULL),
- (7 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (8 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Bat cave', 121, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (9 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (10, 1, 1, 5, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'Ingram Street', 2, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (11, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (12, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (13, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (14, 1, 2, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1104, 'Malibu Point', 4, NULL, 0, 9, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (15, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 'An incredibly long alias for testing purposes', 125, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (16, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (17, 1, 7, 2, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (18, 1, 4, 4, 4, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 'Cerebro', 128, NULL, 0, 12, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +12 HOUR), NULL, NULL),
- (19, 1, 5, 5, NULL, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 1, NULL, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (20, 1, 5, 5, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL),
- (21, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Holland', 102, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL),
- (22, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Japan', 103, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL),
- (23, NULL, 8, 1, 7, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'address 21', 121, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (24 ,NULL, 8, 1, 7, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (25 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (26 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'An incredibly long alias for testing purposes', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (27 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (28, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (29, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (30, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (31, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (32, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (33, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (34, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1103, 'BEJAR', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL),
- (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL),
- (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL),
- (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL);
+ (1 , 3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 121, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 'hasHighRisk', 901.4),
+ (2 , 1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 1, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 2, 'hasHighRisk', 901.4),
+ (3 , 1, 7, 1, 6, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL, 3, NULL, NULL),
+ (4 , 3, 2, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 9, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL, NULL, NULL, NULL),
+ (5 , 3, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), NULL, NULL, NULL, NULL),
+ (6 , 1, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, NULL, 'hasHighRisk', 901.4),
+ (7 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4),
+ (8 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Bat cave', 121, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4),
+ (9 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (10, 1, 1, 5, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'Ingram Street', 2, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isTooLittle', NULL),
+ (11, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasTicketRequest', NULL),
+ (12, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (13, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (14, 1, 2, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1104, 'Malibu Point', 4, NULL, 0, 9, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (15, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 'An incredibly long alias for testing purposes', 125, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isFreezed', NULL),
+ (16, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 388.7),
+ (17, 1, 7, 2, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 388.7),
+ (18, 1, 4, 4, 4, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 'Cerebro', 128, NULL, 0, 12, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +12 HOUR), NULL, NULL, 'isFreezed', NULL),
+ (19, 1, 5, 5, NULL, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 1, NULL, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isTaxDataChecked', NULL),
+ (20, 1, 5, 5, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL),
+ (21, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Holland', 102, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL),
+ (22, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Japan', 103, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL),
+ (23, NULL, 8, 1, 7, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'address 21', 121, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasTicketRequest, hasHighRisk', 901.4),
+ (24 ,NULL, 8, 1, 7, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4),
+ (25 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4),
+ (26 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'An incredibly long alias for testing purposes', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4),
+ (27 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 901.4),
+ (28, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (29, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (30, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (31, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (32, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (33, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (34, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1103, 'BEJAR', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL),
+ (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL);
INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`)
VALUES
@@ -1059,50 +1061,50 @@ INSERT INTO `vn`.`ticketPackaging`(`id`, `ticketFk`, `packagingFk`, `quantity`,
(2, 2, 2, 1, util.VN_CURDATE(), NULL),
(3, 3, 2, 4, util.VN_CURDATE(), NULL);
-INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `price`, `discount`, `reserved`, `isPicked`, `created`)
+INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `price`, `discount`, `reserved`, `isPicked`, `created`, `problem`)
VALUES
- (1, 1, 1, 'Ranged weapon longbow 200cm', 5, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
- (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
- (3, 1, 1, 'Ranged weapon longbow 200cm', 2, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
- (4, 4, 1, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
- (5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
- (6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)),
- (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE()),
- (8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE()),
- (9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE()),
- (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE()),
- (11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE()),
- (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE()),
- (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE()),
- (14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE()),
- (15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE()),
- (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE()),
- (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)),
- (18, 4, 22, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)),
- (19, 1, 4, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)),
- (20, 1, 5, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)),
- (21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
- (22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()),
- (23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()),
- (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()),
- (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE()),
- (32, 1, 24, 'Ranged weapon longbow 200cm', -1, 8.07, 0, 0, 0, util.VN_CURDATE()),
- (33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE()),
- (34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
- (38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)),
- (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE()),
- (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE()),
- (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE()),
- (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE());
+ (1, 1, 1, 'Ranged weapon longbow 200cm', 5, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
+ (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
+ (3, 1, 1, 'Ranged weapon longbow 200cm', 2, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
+ (4, 4, 1, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
+ (5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
+ (6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 'hasComponentLack'),
+ (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'),
+ (18, 4, 22, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'),
+ (19, 1, 4, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 'hasComponentLack'),
+ (20, 1, 5, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 'hasComponentLack'),
+ (21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
+ (22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (32, 1, 24, 'Ranged weapon longbow 200cm', -1, 8.07, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), NULL),
+ (36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'),
+ (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
+ (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack');
INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`)
VALUES
@@ -1516,23 +1518,26 @@ 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`(`buyer`, `year`, `week`, `family`, `itemFk`, `itemTypeFk`, `saleTotal`, `saleWaste`, `rate`)
+INSERT INTO `vn`.`entryConfig` (`defaultEntry`, `inventorySupplierFk`, `defaultSupplierFk`)
+ VALUES (2, 4, 1);
+
+INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `saleTotal`, `saleWasteQuantity`, `saleInternalWaste`, `saleExternalWaste`)
VALUES
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation', 1, 1, '1062', '51', '4.8'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Colombia', 2, 1, '35074', '687', '2.0'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Mini', 3, 1, '1777', '13', '0.7'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Short', 4, 1, '3182', '59', '0.6'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Crisantemo', 5, 1, '1747', '13', '0.7'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Lilium Oriental', 6, 1, '7182', '59', '0.6'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Alstroemeria', 7, 1, '1777', '13', '0.7'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Cymbidium', 1, 1, '4181', '59', '0.6'),
- ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Cymbidium', 2, 1, '7268', '59', '0.6'),
- ('DavidCharlesHaller', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Containers', 2, 1, '-74', '0', '0.0'),
- ('DavidCharlesHaller', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Packagings', 3, 1, '-7', '0', '0.0'),
- ('DavidCharlesHaller', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Freight', 4, 1, '1100', '0', '0.0'),
- ('HankPym', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Funeral Accessories', 5, 1, '848', '-187', '-22.1'),
- ('HankPym', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Miscellaneous Accessories', 6, 1, '186', '0', '0.0'),
- ('HankPym', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Adhesives', 7, 1, '277', '0', '0.0');
+ ('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'),
+ ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 3, 1, '1777', '13', '12.02', '53.12'),
+ ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 4, 1, '3182', '59', '51', '56.20'),
+ ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 5, 1, '1747', '13', '53.12', '53.12'),
+ ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 6, 1, '7182', '59', '51', '53.12'),
+ ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 7, 1, '1777', '13', '89.69', '89.69'),
+ ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 8, 1, '4181', '59', '53.12', '53.12'),
+ ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 9, 1, '7268', '59', '12.02', '56.20'),
+ ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 2, 1, '-74', '0', '51', '89.69'),
+ ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 3, 1, '-7', '0', '12.02', '53.12'),
+ ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 4, 1, '1100', '0', '51', '56.20'),
+ ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 5, 1, '848', '-187', '12.02', '89.69'),
+ ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 6, 1, '186', '0', '51', '53.12'),
+ ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 7, 1, '277', '0', '53.12', '56.20');
INSERT INTO `vn`.`buy`(`id`,`entryFk`,`itemFk`,`buyingValue`,`quantity`,`packagingFk`,`stickers`,`freightValue`,`packageValue`,`comissionValue`,`packing`,`grouping`,`groupingMode`,`location`,`price1`,`price2`,`price3`, `printedStickers`,`isChecked`,`isIgnored`,`weight`, `created`)
VALUES
@@ -1968,7 +1973,7 @@ INSERT INTO `vn`.`orderTicket`(`orderFk`, `ticketFk`)
(21, 21),
(22, 22);
-INSERT INTO `vn`.`userConfig` (`userFk`, `warehouseFk`, `companyFk`)
+INSERT INTO `vn`.`userMultiConfig` (`userFk`, `warehouseFk`, `companyFk`)
VALUES
(1, 1, 69),
(5, 1, 442),
@@ -3916,6 +3921,16 @@ INSERT INTO `vn`.`calendarHolidays` (calendarHolidaysTypeFk, dated, calendarHoli
(1, '2001-05-17', 1, 5),
(1, '2001-05-18', 1, 5);
+INSERT INTO vn.medicalReview
+(id, workerFk, centerFk, `date`, `time`, isFit, amount, invoice, remark)
+VALUES(1, 1106, 1, '2000-01-01', '08:10', 1, 200.0, NULL, '');
+INSERT INTO vn.medicalReview
+(id, workerFk, centerFk, `date`, `time`, isFit, amount, invoice, remark)
+VALUES(2, 1106, 2, '2001-01-01', '09:10', 0, 10.0, NULL, NULL);
+INSERT INTO vn.medicalReview
+(id, workerFk, centerFk, `date`, `time`, isFit, amount, invoice, remark)
+VALUES(3, 9, 2, '2000-01-01', '8:00', 1, 150.0, NULL, NULL);
+
INSERT INTO vn.payrollComponent
(id, name, isSalaryAgreed, isVariable, isException)
VALUES
@@ -3945,11 +3960,15 @@ 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');
+
+INSERT IGNORE INTO ormConfig
+ SET id =1,
+ selectLimit = 1000;
diff --git a/db/routines/bi/procedures/clean.sql b/db/routines/bi/procedures/clean.sql
index ba43b609c..a1eb99166 100644
--- a/db/routines/bi/procedures/clean.sql
+++ b/db/routines/bi/procedures/clean.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`clean`()
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`clean`()
BEGIN
DECLARE vDateShort DATETIME;
DECLARE vDateLong DATETIME;
@@ -15,5 +15,5 @@ BEGIN
DELETE FROM bi.defaulters WHERE `date` < vDateLong;
DELETE FROM bi.defaulting WHERE `date` < vDateLong;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/bi/procedures/facturacion_media_anual_update.sql b/db/routines/bi/procedures/facturacion_media_anual_update.sql
index b956f353a..e8810cc21 100644
--- a/db/routines/bi/procedures/facturacion_media_anual_update.sql
+++ b/db/routines/bi/procedures/facturacion_media_anual_update.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`facturacion_media_anual_update`()
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`facturacion_media_anual_update`()
BEGIN
TRUNCATE TABLE bs.clientAnnualConsumption;
@@ -12,5 +12,5 @@ BEGIN
GROUP BY clientFk, year, month
) vol
GROUP BY clientFk;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/bs/procedures/carteras_add.sql b/db/routines/bs/procedures/carteras_add.sql
index 6de377371..5143b4bb5 100644
--- a/db/routines/bs/procedures/carteras_add.sql
+++ b/db/routines/bs/procedures/carteras_add.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`carteras_add`()
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`carteras_add`()
BEGIN
/**
* Inserta en la tabla @bs.carteras las ventas desde el año pasado
@@ -23,5 +23,5 @@ BEGIN
GROUP BY w.code, t.`year`, t.`month`;
DROP TEMPORARY TABLE tmp.time;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/bs/procedures/nightTask_launchAll.sql b/db/routines/bs/procedures/nightTask_launchAll.sql
index 59899ee03..e61e88bb6 100644
--- a/db/routines/bs/procedures/nightTask_launchAll.sql
+++ b/db/routines/bs/procedures/nightTask_launchAll.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`nightTask_launchAll`()
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`nightTask_launchAll`()
BEGIN
/**
* Runs all nightly tasks.
@@ -76,5 +76,5 @@ BEGIN
END IF;
END LOOP;
CLOSE vQueue;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/bs/procedures/salesByItemTypeDay_addLauncher.sql b/db/routines/bs/procedures/salesByItemTypeDay_addLauncher.sql
index 3424bac74..63677def6 100644
--- a/db/routines/bs/procedures/salesByItemTypeDay_addLauncher.sql
+++ b/db/routines/bs/procedures/salesByItemTypeDay_addLauncher.sql
@@ -1,6 +1,6 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`salesByItemTypeDay_addLauncher`()
-BEGIN
- CALL bs.salesByItemTypeDay_add(util.VN_CURDATE() - INTERVAL 30 DAY, util.VN_CURDATE());
+BEGIN
+ CALL bs.salesByItemTypeDay_add(util.VN_CURDATE() - INTERVAL 30 DAY, util.VN_CURDATE());
END$$
DELIMITER ;
diff --git a/db/routines/bs/procedures/waste_addSales.sql b/db/routines/bs/procedures/waste_addSales.sql
index 0ab328b49..20eee5d49 100644
--- a/db/routines/bs/procedures/waste_addSales.sql
+++ b/db/routines/bs/procedures/waste_addSales.sql
@@ -1,31 +1,45 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`waste_addSales`()
BEGIN
- DECLARE vWeek INT;
- DECLARE vYear INT;
+ 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);
- SELECT week, year
- INTO vWeek, vYear
- FROM vn.time
- WHERE dated = util.VN_CURDATE();
-
REPLACE bs.waste
- SELECT *, 100 * mermas / total as porcentaje
- FROM (
- SELECT buyer,
- year,
- week,
- family,
- itemFk,
- itemTypeFk,
- floor(sum(value)) as total,
- floor(sum(IF(typeFk = 'loses', value, 0))) as mermas
- FROM vn.saleValue
- where year = vYear and week = vWeek
-
- GROUP BY family, itemFk
-
- ) sub
- ORDER BY mermas DESC;
+ SELECT YEAR(t.shipped),
+ WEEK(t.shipped, 4),
+ it.workerFk,
+ it.id,
+ s.itemFk,
+ 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
+ )
+ ),
+ SUM(
+ IF(
+ aw.`type` = 'external',
+ (b.buyingValue + b.freightValue + b.comissionValue + b.packageValue) * s.quantity,
+ 0
+ )
+ )
+ FROM vn.sale s
+ JOIN vn.item i ON i.id = s.itemFk
+ JOIN vn.itemType it ON it.id = i.typeFk
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ JOIN vn.address a FORCE INDEX (PRIMARY) ON a.id = t.addressFk
+ LEFT JOIN vn.addressWaste aw ON aw.addressFk = a.id
+ JOIN vn.warehouse w ON w.id = t.warehouseFk
+ 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
+ WHERE t.shipped BETWEEN vDateFrom AND vDateTo
+ AND w.isManaged
+ GROUP BY i.id;
END$$
DELIMITER ;
diff --git a/db/routines/cache/procedures/available_refresh.sql b/db/routines/cache/procedures/available_refresh.sql
index abf023a41..87c003648 100644
--- a/db/routines/cache/procedures/available_refresh.sql
+++ b/db/routines/cache/procedures/available_refresh.sql
@@ -1,5 +1,10 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`available_refresh`(OUT `vCalc` INT, IN `vRefresh` INT, IN `vWarehouse` INT, IN `vDated` DATE)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`available_refresh`(
+ OUT `vCalc` INT,
+ `vRefresh` INT,
+ `vWarehouse` INT,
+ `vDated` DATE
+)
proc: BEGIN
DECLARE vStartDate DATE;
DECLARE vReserveDate DATETIME;
diff --git a/db/routines/cache/procedures/available_updateItem.sql b/db/routines/cache/procedures/available_updateItem.sql
new file mode 100644
index 000000000..8e94a9d75
--- /dev/null
+++ b/db/routines/cache/procedures/available_updateItem.sql
@@ -0,0 +1,31 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`available_updateItem`(
+ `vItem` INT,
+ `vWarehouse` INT,
+ `vDated` DATE,
+ `vQuantity` INT
+)
+BEGIN
+/**
+ * Immediately deduct/add an amount from the available cache (if exists).
+ *
+ * @param vItem The item id
+ * @param vWarehouse The warehouse id
+ * @param vDated Available cache date
+ * @param vQuantity The amount to be deducted from the cache
+ */
+ DECLARE vCalc INT;
+
+ SELECT id INTO vCalc
+ FROM cache_calc
+ WHERE cacheName = 'available'
+ AND params = CONCAT_WS('/', vWarehouse, vDated);
+
+ IF vCalc IS NOT NULL THEN
+ UPDATE available
+ SET available = available - vQuantity
+ WHERE calc_id = vCalc
+ AND item_id = vItem;
+ END IF;
+END$$
+DELIMITER ;
diff --git a/db/routines/cache/procedures/cache_calc_end.sql b/db/routines/cache/procedures/cache_calc_end.sql
index b3a25532b..b74a1b7fd 100644
--- a/db/routines/cache/procedures/cache_calc_end.sql
+++ b/db/routines/cache/procedures/cache_calc_end.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`cache_calc_end`(IN `v_calc` INT)
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`cache_calc_end`(IN `v_calc` INT)
BEGIN
DECLARE v_cache_name VARCHAR(255);
DECLARE v_params VARCHAR(255);
@@ -21,5 +21,5 @@ BEGIN
IF v_cache_name IS NOT NULL THEN
DO RELEASE_LOCK(CONCAT_WS('/', v_cache_name, IFNULL(v_params, '')));
END IF;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/cache/procedures/cache_calc_start.sql b/db/routines/cache/procedures/cache_calc_start.sql
index 701bb1a68..933d926ef 100644
--- a/db/routines/cache/procedures/cache_calc_start.sql
+++ b/db/routines/cache/procedures/cache_calc_start.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`cache_calc_start`(OUT `v_calc` INT, INOUT `v_refresh` INT, IN `v_cache_name` VARCHAR(50), IN `v_params` VARCHAR(100))
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`cache_calc_start`(OUT `v_calc` INT, INOUT `v_refresh` INT, IN `v_cache_name` VARCHAR(50), IN `v_params` VARCHAR(100))
proc: BEGIN
DECLARE v_valid BOOL;
DECLARE v_lock_id VARCHAR(100);
@@ -83,5 +83,5 @@ proc: BEGIN
-- Si se debe recalcular mantiene el bloqueo y devuelve su identificador.
SET v_refresh = TRUE;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/cache/procedures/last_buy_refresh.sql b/db/routines/cache/procedures/last_buy_refresh.sql
index 49ef4ee5e..86a5e8d8c 100644
--- a/db/routines/cache/procedures/last_buy_refresh.sql
+++ b/db/routines/cache/procedures/last_buy_refresh.sql
@@ -4,7 +4,7 @@ proc: BEGIN
/**
* Crea o actualiza la cache con la última compra y fecha de cada
* artículo hasta ayer. Para obtener la última compra hasta una fecha
- * determinada utilizar el procedimiento vn.buyUltimate().
+ * determinada utilizar el procedimiento vn.buy_getUltimate().
*
* @param vRefresh %TRUE para forzar el recálculo de la cache
*/
@@ -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;
diff --git a/db/routines/cache/procedures/visible_refresh.sql b/db/routines/cache/procedures/visible_refresh.sql
index 78d23dbfb..a673969d2 100644
--- a/db/routines/cache/procedures/visible_refresh.sql
+++ b/db/routines/cache/procedures/visible_refresh.sql
@@ -20,9 +20,12 @@ proc:BEGIN
CREATE OR REPLACE TEMPORARY TABLE tmp.itemVisible
(PRIMARY KEY (item_id))
ENGINE = MEMORY
- SELECT item_id, amount stock, amount visible
- FROM cache.stock
- WHERE warehouse_id = v_warehouse;
+ SELECT s.item_id, SUM(s.amount) stock, SUM(s.amount) visible
+ FROM stock s
+ JOIN vn.warehouse w ON w.id = s.warehouse_id
+ WHERE (v_warehouse IS NULL OR s.warehouse_id = v_warehouse)
+ AND w.isComparative
+ GROUP BY s.item_id;
-- Calculamos los movimientos confirmados de hoy
CALL vn.item_calcVisible(NULL, v_warehouse);
diff --git a/db/routines/hedera/procedures/order_addItem.sql b/db/routines/hedera/procedures/order_addItem.sql
index f690f9aa6..204dcb6bf 100644
--- a/db/routines/hedera/procedures/order_addItem.sql
+++ b/db/routines/hedera/procedures/order_addItem.sql
@@ -1,8 +1,8 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_addItem`(
vSelf INT,
- vWarehouse INT,
- vItem INT,
+ vWarehouse INT,
+ vItem INT,
vAmount INT)
BEGIN
/**
@@ -37,7 +37,7 @@ BEGIN
ROLLBACK;
RESIGNAL;
END;
-
+
CALL order_calcCatalogFromItem(vSelf, vItem);
START TRANSACTION;
@@ -102,6 +102,8 @@ BEGIN
amount = vAdd,
price = vPrice;
+ CALL cache.available_updateItem(vItem, vWarehouse, vShipment, vAdd);
+
SET vRow = LAST_INSERT_ID();
INSERT INTO orderRowComponent (rowFk, componentFk, price)
@@ -121,6 +123,6 @@ BEGIN
END IF;
COMMIT;
- CALL vn.ticketCalculatePurge;
+ CALL vn.ticketCalculatePurge;
END$$
DELIMITER ;
diff --git a/db/routines/hedera/procedures/order_confirmWithUser.sql b/db/routines/hedera/procedures/order_confirmWithUser.sql
index 9c932aaa1..2b033b704 100644
--- a/db/routines/hedera/procedures/order_confirmWithUser.sql
+++ b/db/routines/hedera/procedures/order_confirmWithUser.sql
@@ -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,26 +65,36 @@ 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;
-- Verifica si el cliente tiene los datos comprobados
IF NOT vIsTaxDataChecked THEN
- CALL util.throw ('clientNotVerified');
+ CALL util.throw('clientNotVerified');
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
- CALL util.throw ('ORDER_EMPTY');
+ 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)
- )
- SELECT t.id INTO vTicket
+ WHERE t.shipped BETWEEN vShipment AND vShipmentDayEnd
+ )
+ 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
- AND o.date_send = t.landed
- AND DATE(t.shipped) = vShipment
+ 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
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;
diff --git a/db/routines/pbx/views/queueConf.sql b/db/routines/pbx/views/queueConf.sql
index 07c241589..107989801 100644
--- a/db/routines/pbx/views/queueConf.sql
+++ b/db/routines/pbx/views/queueConf.sql
@@ -10,5 +10,5 @@ AS SELECT `q`.`name` AS `name`,
`c`.`ringInUse` AS `ringinuse`
FROM (
`pbx`.`queue` `q`
- JOIN `pbx`.`queueConfig` `c` ON(`q`.`config` = `c`.`id`)
+ JOIN `pbx`.`queueMultiConfig` `c` ON(`q`.`config` = `c`.`id`)
)
diff --git a/db/routines/salix/triggers/ACL_afterDelete.sql b/db/routines/salix/triggers/ACL_afterDelete.sql
new file mode 100644
index 000000000..b7e6071fc
--- /dev/null
+++ b/db/routines/salix/triggers/ACL_afterDelete.sql
@@ -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 ;
diff --git a/db/routines/salix/triggers/ACL_beforeInsert.sql b/db/routines/salix/triggers/ACL_beforeInsert.sql
new file mode 100644
index 000000000..94fb51ada
--- /dev/null
+++ b/db/routines/salix/triggers/ACL_beforeInsert.sql
@@ -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 ;
diff --git a/db/routines/salix/triggers/ACL_beforeUpdate.sql b/db/routines/salix/triggers/ACL_beforeUpdate.sql
new file mode 100644
index 000000000..b214fc9f6
--- /dev/null
+++ b/db/routines/salix/triggers/ACL_beforeUpdate.sql
@@ -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 ;
diff --git a/db/routines/srt/events/moving_clean.sql b/db/routines/srt/events/moving_clean.sql
index a6f7792a2..18644a9f8 100644
--- a/db/routines/srt/events/moving_clean.sql
+++ b/db/routines/srt/events/moving_clean.sql
@@ -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 ;
diff --git a/db/routines/srt/procedures/moving_clean.sql b/db/routines/srt/procedures/moving_clean.sql
index b8fae7ff4..a5bbc7e70 100644
--- a/db/routines/srt/procedures/moving_clean.sql
+++ b/db/routines/srt/procedures/moving_clean.sql
@@ -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 ;
diff --git a/db/routines/srt/triggers/buffer_afterDelete.sql b/db/routines/srt/triggers/buffer_afterDelete.sql
new file mode 100644
index 000000000..d554e6364
--- /dev/null
+++ b/db/routines/srt/triggers/buffer_afterDelete.sql
@@ -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 ;
diff --git a/db/routines/srt/triggers/buffer_beforeInsert.sql b/db/routines/srt/triggers/buffer_beforeInsert.sql
new file mode 100644
index 000000000..6b1e05362
--- /dev/null
+++ b/db/routines/srt/triggers/buffer_beforeInsert.sql
@@ -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 ;
diff --git a/db/routines/srt/triggers/buffer_beforeUpdate.sql b/db/routines/srt/triggers/buffer_beforeUpdate.sql
new file mode 100644
index 000000000..86418a551
--- /dev/null
+++ b/db/routines/srt/triggers/buffer_beforeUpdate.sql
@@ -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 ;
diff --git a/db/routines/srt/triggers/config_afterDelete.sql b/db/routines/srt/triggers/config_afterDelete.sql
new file mode 100644
index 000000000..1e4af9104
--- /dev/null
+++ b/db/routines/srt/triggers/config_afterDelete.sql
@@ -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 ;
diff --git a/db/routines/srt/triggers/config_beforeInsert.sql b/db/routines/srt/triggers/config_beforeInsert.sql
new file mode 100644
index 000000000..7d8389646
--- /dev/null
+++ b/db/routines/srt/triggers/config_beforeInsert.sql
@@ -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 ;
diff --git a/db/routines/srt/triggers/config_beforeUpdate.sql b/db/routines/srt/triggers/config_beforeUpdate.sql
new file mode 100644
index 000000000..0002fb4d6
--- /dev/null
+++ b/db/routines/srt/triggers/config_beforeUpdate.sql
@@ -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 ;
diff --git a/db/routines/vn/events/claim_changeState.sql b/db/routines/vn/events/claim_changeState.sql
index 5d94170a0..2d8968af8 100644
--- a/db/routines/vn/events/claim_changeState.sql
+++ b/db/routines/vn/events/claim_changeState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`claim_changeState`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`claim_changeState`
ON SCHEDULE EVERY 1 DAY
STARTS '2024-06-06 07:52:46.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/client_unassignSalesPerson.sql b/db/routines/vn/events/client_unassignSalesPerson.sql
index 46ad414b1..ffd83fbf6 100644
--- a/db/routines/vn/events/client_unassignSalesPerson.sql
+++ b/db/routines/vn/events/client_unassignSalesPerson.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`client_unassignSalesPerson`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`client_unassignSalesPerson`
ON SCHEDULE EVERY 1 DAY
STARTS '2023-06-01 03:30:00.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/client_userDisable.sql b/db/routines/vn/events/client_userDisable.sql
index b3354f8fd..6ecc05add 100644
--- a/db/routines/vn/events/client_userDisable.sql
+++ b/db/routines/vn/events/client_userDisable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`client_userDisable`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`client_userDisable`
ON SCHEDULE EVERY 1 MONTH
STARTS '2023-06-01 00:00:00.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/collection_make.sql b/db/routines/vn/events/collection_make.sql
index 1c6bd0fcb..940b11d93 100644
--- a/db/routines/vn/events/collection_make.sql
+++ b/db/routines/vn/events/collection_make.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`collection_make`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`collection_make`
ON SCHEDULE EVERY 5 MINUTE
STARTS '2022-09-15 00:00:00.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/department_doCalc.sql b/db/routines/vn/events/department_doCalc.sql
index b3ce49fa5..09734fbde 100644
--- a/db/routines/vn/events/department_doCalc.sql
+++ b/db/routines/vn/events/department_doCalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`department_doCalc`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`department_doCalc`
ON SCHEDULE EVERY 15 SECOND
STARTS '2019-11-15 00:00:00.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/envialiaThreHoldChecker.sql b/db/routines/vn/events/envialiaThreHoldChecker.sql
index a5440ef67..46f27c2ac 100644
--- a/db/routines/vn/events/envialiaThreHoldChecker.sql
+++ b/db/routines/vn/events/envialiaThreHoldChecker.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`envialiaThreHoldChecker`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`envialiaThreHoldChecker`
ON SCHEDULE EVERY 1 DAY
STARTS '2022-01-28 09:52:46.000'
ON COMPLETION NOT PRESERVE
diff --git a/db/routines/vn/events/greuge_notify.sql b/db/routines/vn/events/greuge_notify.sql
index 8c23dbe36..c89373d54 100644
--- a/db/routines/vn/events/greuge_notify.sql
+++ b/db/routines/vn/events/greuge_notify.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`greuge_notify`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`greuge_notify`
ON SCHEDULE EVERY 1 DAY
STARTS '2023-01-01 00:07:00.000'
ON COMPLETION NOT PRESERVE
diff --git a/db/routines/vn/events/itemImageQueue_check.sql b/db/routines/vn/events/itemImageQueue_check.sql
index 680faa37f..01a97613b 100644
--- a/db/routines/vn/events/itemImageQueue_check.sql
+++ b/db/routines/vn/events/itemImageQueue_check.sql
@@ -1,11 +1,11 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`itemImageQueue_check`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`itemImageQueue_check`
ON SCHEDULE EVERY 1 HOUR
STARTS '2023-07-28 00:00:00.000'
ON COMPLETION PRESERVE
ENABLE
-DO BEGIN
- DELETE FROM itemImageQueue
- WHERE attempts >= (SELECT downloadMaxAttempts FROM itemConfig);
+DO BEGIN
+ DELETE FROM itemImageQueue
+ WHERE attempts >= (SELECT downloadMaxAttempts FROM itemConfig);
END$$
DELIMITER ;
diff --git a/db/routines/vn/events/itemShelvingSale_doReserve.sql b/db/routines/vn/events/itemShelvingSale_doReserve.sql
index 228886556..b8a1a14ec 100644
--- a/db/routines/vn/events/itemShelvingSale_doReserve.sql
+++ b/db/routines/vn/events/itemShelvingSale_doReserve.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`itemShelvingSale_doReserve`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`itemShelvingSale_doReserve`
ON SCHEDULE EVERY 15 SECOND
STARTS '2023-10-16 00:00:00'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/mysqlConnectionsSorter_kill.sql b/db/routines/vn/events/mysqlConnectionsSorter_kill.sql
index 1f5d46b18..1d87ceb82 100644
--- a/db/routines/vn/events/mysqlConnectionsSorter_kill.sql
+++ b/db/routines/vn/events/mysqlConnectionsSorter_kill.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`mysqlConnectionsSorter_kill`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`mysqlConnectionsSorter_kill`
ON SCHEDULE EVERY 1 MINUTE
STARTS '2021-10-28 09:56:27.000'
ON COMPLETION NOT PRESERVE
diff --git a/db/routines/vn/events/printQueue_check.sql b/db/routines/vn/events/printQueue_check.sql
index 262ddc7c8..cddba8cf8 100644
--- a/db/routines/vn/events/printQueue_check.sql
+++ b/db/routines/vn/events/printQueue_check.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`printQueue_check`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`printQueue_check`
ON SCHEDULE EVERY 10 MINUTE
STARTS '2022-01-28 09:52:46.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/raidUpdate.sql b/db/routines/vn/events/raidUpdate.sql
index 619dadb48..c0c6f03c5 100644
--- a/db/routines/vn/events/raidUpdate.sql
+++ b/db/routines/vn/events/raidUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`raidUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`raidUpdate`
ON SCHEDULE EVERY 1 DAY
STARTS '2017-12-29 00:05:00.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/route_doRecalc.sql b/db/routines/vn/events/route_doRecalc.sql
index 62f75a3bc..4e6a77674 100644
--- a/db/routines/vn/events/route_doRecalc.sql
+++ b/db/routines/vn/events/route_doRecalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`route_doRecalc`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`route_doRecalc`
ON SCHEDULE EVERY 10 SECOND
STARTS '2021-07-08 07:32:23.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/travel_setDelivered.sql b/db/routines/vn/events/travel_setDelivered.sql
new file mode 100644
index 000000000..769ee9d24
--- /dev/null
+++ b/db/routines/vn/events/travel_setDelivered.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`travel_setDelivered`
+ ON SCHEDULE EVERY 1 DAY
+ STARTS '2024-07-12 00:10:00.000'
+ ON COMPLETION PRESERVE
+ ENABLE
+DO BEGIN
+ UPDATE travel t
+ SET t.isDelivered = TRUE
+ WHERE t.shipped < util.VN_CURDATE();
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/events/vehicle_notify.sql b/db/routines/vn/events/vehicle_notify.sql
index d974e1817..edeecd1f8 100644
--- a/db/routines/vn/events/vehicle_notify.sql
+++ b/db/routines/vn/events/vehicle_notify.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`vehicle_notify`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`vehicle_notify`
ON SCHEDULE EVERY 1 DAY
STARTS '2022-01-01 00:07:00.000'
ON COMPLETION NOT PRESERVE
diff --git a/db/routines/vn/events/workerJourney_doRecalc.sql b/db/routines/vn/events/workerJourney_doRecalc.sql
index 61077fc5b..a3f19929d 100644
--- a/db/routines/vn/events/workerJourney_doRecalc.sql
+++ b/db/routines/vn/events/workerJourney_doRecalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`workerJourney_doRecalc`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`workerJourney_doRecalc`
ON SCHEDULE EVERY 1 DAY
STARTS '2023-07-22 04:00:00.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/events/worker_updateChangedBusiness.sql b/db/routines/vn/events/worker_updateChangedBusiness.sql
index 02f7af8aa..6f6c15650 100644
--- a/db/routines/vn/events/worker_updateChangedBusiness.sql
+++ b/db/routines/vn/events/worker_updateChangedBusiness.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`worker_updateChangedBusiness`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`worker_updateChangedBusiness`
ON SCHEDULE EVERY 1 DAY
STARTS '2000-01-01 00:00:05.000'
ON COMPLETION NOT PRESERVE
diff --git a/db/routines/vn/events/zoneGeo_doCalc.sql b/db/routines/vn/events/zoneGeo_doCalc.sql
index 579141e13..ca2a54f94 100644
--- a/db/routines/vn/events/zoneGeo_doCalc.sql
+++ b/db/routines/vn/events/zoneGeo_doCalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`zoneGeo_doCalc`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `vn`.`zoneGeo_doCalc`
ON SCHEDULE EVERY 15 SECOND
STARTS '2019-09-13 15:30:47.000'
ON COMPLETION PRESERVE
diff --git a/db/routines/vn/functions/MIDNIGHT.sql b/db/routines/vn/functions/MIDNIGHT.sql
index c2df0c0c6..d40734fcf 100644
--- a/db/routines/vn/functions/MIDNIGHT.sql
+++ b/db/routines/vn/functions/MIDNIGHT.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`MIDNIGHT`(vDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`MIDNIGHT`(vDate DATE)
RETURNS datetime
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/addressTaxArea.sql b/db/routines/vn/functions/addressTaxArea.sql
index 1d4e9e2f0..3cad7a55d 100644
--- a/db/routines/vn/functions/addressTaxArea.sql
+++ b/db/routines/vn/functions/addressTaxArea.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`addressTaxArea`(vAddresId INT, vCompanyId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`addressTaxArea`(vAddresId INT, vCompanyId INT)
RETURNS varchar(25) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/address_getGeo.sql b/db/routines/vn/functions/address_getGeo.sql
index 1a9f5ddb8..04155c30c 100644
--- a/db/routines/vn/functions/address_getGeo.sql
+++ b/db/routines/vn/functions/address_getGeo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`address_getGeo`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`address_getGeo`(vSelf INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/barcodeToItem.sql b/db/routines/vn/functions/barcodeToItem.sql
index ee0315118..14d19fe4e 100644
--- a/db/routines/vn/functions/barcodeToItem.sql
+++ b/db/routines/vn/functions/barcodeToItem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`barcodeToItem`(vBarcode VARCHAR(22))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`barcodeToItem`(vBarcode VARCHAR(22))
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/buy_getUnitVolume.sql b/db/routines/vn/functions/buy_getUnitVolume.sql
index baf300450..473ea8fc0 100644
--- a/db/routines/vn/functions/buy_getUnitVolume.sql
+++ b/db/routines/vn/functions/buy_getUnitVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`buy_getUnitVolume`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`buy_getUnitVolume`(vSelf INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/buy_getVolume.sql b/db/routines/vn/functions/buy_getVolume.sql
index c29c0a57c..55027d7e5 100644
--- a/db/routines/vn/functions/buy_getVolume.sql
+++ b/db/routines/vn/functions/buy_getVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`buy_getVolume`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`buy_getVolume`(vSelf INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/catalog_componentReverse.sql b/db/routines/vn/functions/catalog_componentReverse.sql
index f37b20890..c333654da 100644
--- a/db/routines/vn/functions/catalog_componentReverse.sql
+++ b/db/routines/vn/functions/catalog_componentReverse.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`catalog_componentReverse`(vWarehouse INT,
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`catalog_componentReverse`(vWarehouse INT,
vCost DECIMAL(10,3),
vM3 DECIMAL(10,3),
vAddressFk INT,
diff --git a/db/routines/vn/functions/clientGetMana.sql b/db/routines/vn/functions/clientGetMana.sql
index fa983c2b2..4c26ae79b 100644
--- a/db/routines/vn/functions/clientGetMana.sql
+++ b/db/routines/vn/functions/clientGetMana.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`clientGetMana`(vClient INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`clientGetMana`(vClient INT)
RETURNS decimal(10,2)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/clientGetSalesPerson.sql b/db/routines/vn/functions/clientGetSalesPerson.sql
index 4b8601be3..2502aa196 100644
--- a/db/routines/vn/functions/clientGetSalesPerson.sql
+++ b/db/routines/vn/functions/clientGetSalesPerson.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`clientGetSalesPerson`(vClientFk INT, vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`clientGetSalesPerson`(vClientFk INT, vDated DATE)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/clientTaxArea.sql b/db/routines/vn/functions/clientTaxArea.sql
index f03520b0b..1c2f776f1 100644
--- a/db/routines/vn/functions/clientTaxArea.sql
+++ b/db/routines/vn/functions/clientTaxArea.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`clientTaxArea`(vClientId INT, vCompanyId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`clientTaxArea`(vClientId INT, vCompanyId INT)
RETURNS varchar(25) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/client_getDebt.sql b/db/routines/vn/functions/client_getDebt.sql
index 8c715d2db..c35e61c30 100644
--- a/db/routines/vn/functions/client_getDebt.sql
+++ b/db/routines/vn/functions/client_getDebt.sql
@@ -1,8 +1,8 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`client_getDebt`(`vClient` INT, `vDate` DATE)
- RETURNS decimal(10,2)
- NOT DETERMINISTIC
- READS SQL DATA
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getDebt`(`vClient` INT, `vDate` DATE)
+ RETURNS decimal(10,2)
+ NOT DETERMINISTIC
+ READS SQL DATA
BEGIN
/**
* Returns the risk of a customer.
@@ -34,5 +34,5 @@ BEGIN
tmp.risk;
RETURN vDebt;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/functions/client_getFromPhone.sql b/db/routines/vn/functions/client_getFromPhone.sql
index 5e4daa532..3ddf3419c 100644
--- a/db/routines/vn/functions/client_getFromPhone.sql
+++ b/db/routines/vn/functions/client_getFromPhone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`client_getFromPhone`(vPhone VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getFromPhone`(vPhone VARCHAR(255))
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/client_getSalesPerson.sql b/db/routines/vn/functions/client_getSalesPerson.sql
index c53816f7f..d0152e0aa 100644
--- a/db/routines/vn/functions/client_getSalesPerson.sql
+++ b/db/routines/vn/functions/client_getSalesPerson.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`client_getSalesPerson`(vClientFk INT, vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getSalesPerson`(vClientFk INT, vDated DATE)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/client_getSalesPersonByTicket.sql b/db/routines/vn/functions/client_getSalesPersonByTicket.sql
index 640df11ce..4c98ac526 100644
--- a/db/routines/vn/functions/client_getSalesPersonByTicket.sql
+++ b/db/routines/vn/functions/client_getSalesPersonByTicket.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`client_getSalesPersonByTicket`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getSalesPersonByTicket`(vTicketFk INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/client_getSalesPersonCode.sql b/db/routines/vn/functions/client_getSalesPersonCode.sql
index 69b8424d8..b238f26bf 100644
--- a/db/routines/vn/functions/client_getSalesPersonCode.sql
+++ b/db/routines/vn/functions/client_getSalesPersonCode.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`client_getSalesPersonCode`(vClientFk INT, vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getSalesPersonCode`(vClientFk INT, vDated DATE)
RETURNS varchar(3) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/client_getSalesPersonCodeByTicket.sql b/db/routines/vn/functions/client_getSalesPersonCodeByTicket.sql
index 3ec5a8e9d..9e63708f3 100644
--- a/db/routines/vn/functions/client_getSalesPersonCodeByTicket.sql
+++ b/db/routines/vn/functions/client_getSalesPersonCodeByTicket.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`client_getSalesPersonCodeByTicket`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getSalesPersonCodeByTicket`(vTicketFk INT)
RETURNS varchar(3) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/client_hasDifferentCountries.sql b/db/routines/vn/functions/client_hasDifferentCountries.sql
index a90b774c7..5f4831069 100644
--- a/db/routines/vn/functions/client_hasDifferentCountries.sql
+++ b/db/routines/vn/functions/client_hasDifferentCountries.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`client_hasDifferentCountries`(vClientFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_hasDifferentCountries`(vClientFk INT)
RETURNS tinyint(1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/collection_isPacked.sql b/db/routines/vn/functions/collection_isPacked.sql
index 9f148273f..f7d81b4c0 100644
--- a/db/routines/vn/functions/collection_isPacked.sql
+++ b/db/routines/vn/functions/collection_isPacked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`collection_isPacked`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`collection_isPacked`(vSelf INT)
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/currency_getCommission.sql b/db/routines/vn/functions/currency_getCommission.sql
index b0a591c23..1b5d51ee6 100644
--- a/db/routines/vn/functions/currency_getCommission.sql
+++ b/db/routines/vn/functions/currency_getCommission.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`currency_getCommission`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`currency_getCommission`(vSelf INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/currentRate.sql b/db/routines/vn/functions/currentRate.sql
index 57870fca4..6d18b9613 100644
--- a/db/routines/vn/functions/currentRate.sql
+++ b/db/routines/vn/functions/currentRate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`currentRate`(vCurrencyFk INT, vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`currentRate`(vCurrencyFk INT, vDated DATE)
RETURNS decimal(10,4)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/deviceProductionUser_accessGranted.sql b/db/routines/vn/functions/deviceProductionUser_accessGranted.sql
index a2d39a0ab..b0c5f0e90 100644
--- a/db/routines/vn/functions/deviceProductionUser_accessGranted.sql
+++ b/db/routines/vn/functions/deviceProductionUser_accessGranted.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`deviceProductionUser_accessGranted`(vUserFK INT(10) , android_id VARCHAR(50))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`deviceProductionUser_accessGranted`(vUserFK INT(10) , android_id VARCHAR(50))
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/duaTax_getRate.sql b/db/routines/vn/functions/duaTax_getRate.sql
index a11015066..ee74a24fe 100644
--- a/db/routines/vn/functions/duaTax_getRate.sql
+++ b/db/routines/vn/functions/duaTax_getRate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`duaTax_getRate`(vDuaFk INT, vTaxClassFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`duaTax_getRate`(vDuaFk INT, vTaxClassFk INT)
RETURNS decimal(5,2)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/ekt_getEntry.sql b/db/routines/vn/functions/ekt_getEntry.sql
index c629098a6..4e6824682 100644
--- a/db/routines/vn/functions/ekt_getEntry.sql
+++ b/db/routines/vn/functions/ekt_getEntry.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ekt_getEntry`(vEktFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ekt_getEntry`(vEktFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ekt_getTravel.sql b/db/routines/vn/functions/ekt_getTravel.sql
index 4cf7f5631..a4466eb84 100644
--- a/db/routines/vn/functions/ekt_getTravel.sql
+++ b/db/routines/vn/functions/ekt_getTravel.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ekt_getTravel`(vEntryAssignFk INT, vEktFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ekt_getTravel`(vEntryAssignFk INT, vEktFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/entry_getCommission.sql b/db/routines/vn/functions/entry_getCommission.sql
index 62946407a..4a19f4e63 100644
--- a/db/routines/vn/functions/entry_getCommission.sql
+++ b/db/routines/vn/functions/entry_getCommission.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`entry_getCommission`(vTravelFk INT,
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_getCommission`(vTravelFk INT,
vCurrencyFk INT,
vSupplierFk INT
)
diff --git a/db/routines/vn/functions/entry_getCurrency.sql b/db/routines/vn/functions/entry_getCurrency.sql
index 4cfce19db..ffde8e029 100644
--- a/db/routines/vn/functions/entry_getCurrency.sql
+++ b/db/routines/vn/functions/entry_getCurrency.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`entry_getCurrency`(vCurrency INT,
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_getCurrency`(vCurrency INT,
vSupplierFk INT
)
RETURNS int(11)
diff --git a/db/routines/vn/functions/entry_getForLogiflora.sql b/db/routines/vn/functions/entry_getForLogiflora.sql
index 71f0b585c..57e787afa 100644
--- a/db/routines/vn/functions/entry_getForLogiflora.sql
+++ b/db/routines/vn/functions/entry_getForLogiflora.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`entry_getForLogiflora`(vLanded DATE, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_getForLogiflora`(vLanded DATE, vWarehouseFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/entry_isIntrastat.sql b/db/routines/vn/functions/entry_isIntrastat.sql
index 8d46b4a02..79eb7fd86 100644
--- a/db/routines/vn/functions/entry_isIntrastat.sql
+++ b/db/routines/vn/functions/entry_isIntrastat.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`entry_isIntrastat`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_isIntrastat`(vSelf INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/entry_isInventoryOrPrevious.sql b/db/routines/vn/functions/entry_isInventoryOrPrevious.sql
index 4acbf060d..7779f7288 100644
--- a/db/routines/vn/functions/entry_isInventoryOrPrevious.sql
+++ b/db/routines/vn/functions/entry_isInventoryOrPrevious.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`entry_isInventoryOrPrevious`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_isInventoryOrPrevious`(vSelf INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/expedition_checkRoute.sql b/db/routines/vn/functions/expedition_checkRoute.sql
index 9b2929797..ce27ea391 100644
--- a/db/routines/vn/functions/expedition_checkRoute.sql
+++ b/db/routines/vn/functions/expedition_checkRoute.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`expedition_checkRoute`(vPalletFk INT,vExpeditionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`expedition_checkRoute`(vPalletFk INT,vExpeditionFk INT)
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/firstDayOfWeek.sql b/db/routines/vn/functions/firstDayOfWeek.sql
index 25ab4480c..d4742771a 100644
--- a/db/routines/vn/functions/firstDayOfWeek.sql
+++ b/db/routines/vn/functions/firstDayOfWeek.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`firstDayOfWeek`(vYear INT, vWeek INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`firstDayOfWeek`(vYear INT, vWeek INT)
RETURNS date
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/getAlert3State.sql b/db/routines/vn/functions/getAlert3State.sql
index f3a7aae53..620ac8d01 100644
--- a/db/routines/vn/functions/getAlert3State.sql
+++ b/db/routines/vn/functions/getAlert3State.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getAlert3State`(vTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getAlert3State`(vTicket INT)
RETURNS varchar(45) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/getDueDate.sql b/db/routines/vn/functions/getDueDate.sql
index 694117a52..c2793cb06 100644
--- a/db/routines/vn/functions/getDueDate.sql
+++ b/db/routines/vn/functions/getDueDate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getDueDate`(vDated DATE, vDayToPay INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getDueDate`(vDated DATE, vDayToPay INT)
RETURNS date
NOT DETERMINISTIC
NO SQL
diff --git a/db/routines/vn/functions/getInventoryDate.sql b/db/routines/vn/functions/getInventoryDate.sql
index b67f1c384..9c1a5349f 100644
--- a/db/routines/vn/functions/getInventoryDate.sql
+++ b/db/routines/vn/functions/getInventoryDate.sql
@@ -1,8 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getInventoryDate`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getInventoryDate`()
RETURNS date
DETERMINISTIC
-BEGIN
- RETURN (SELECT inventoried FROM config LIMIT 1);
+BEGIN
+ RETURN (SELECT inventoried FROM config LIMIT 1);
END$$
DELIMITER ;
diff --git a/db/routines/vn/functions/getNewItemId.sql b/db/routines/vn/functions/getNewItemId.sql
index 2cb9b275b..24c13e28c 100644
--- a/db/routines/vn/functions/getNewItemId.sql
+++ b/db/routines/vn/functions/getNewItemId.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getNewItemId`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getNewItemId`()
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/getNextDueDate.sql b/db/routines/vn/functions/getNextDueDate.sql
index 8e8691ec5..d0f923d65 100644
--- a/db/routines/vn/functions/getNextDueDate.sql
+++ b/db/routines/vn/functions/getNextDueDate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getNextDueDate`(vDated DATE, vGapDays INT, vPayDay INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getNextDueDate`(vDated DATE, vGapDays INT, vPayDay INT)
RETURNS date
NOT DETERMINISTIC
NO SQL
diff --git a/db/routines/vn/functions/getShipmentHour.sql b/db/routines/vn/functions/getShipmentHour.sql
index 9eca04ac4..5fdd8db32 100644
--- a/db/routines/vn/functions/getShipmentHour.sql
+++ b/db/routines/vn/functions/getShipmentHour.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getShipmentHour`(vTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getShipmentHour`(vTicket INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/getSpecialPrice.sql b/db/routines/vn/functions/getSpecialPrice.sql
index 2cc5f2b99..bcb3251f2 100644
--- a/db/routines/vn/functions/getSpecialPrice.sql
+++ b/db/routines/vn/functions/getSpecialPrice.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getSpecialPrice`(vItemFk int(11),vClientFk int(11))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getSpecialPrice`(vItemFk int(11),vClientFk int(11))
RETURNS decimal(10,2)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/getTicketTrolleyLabelCount.sql b/db/routines/vn/functions/getTicketTrolleyLabelCount.sql
index b978db73a..8344e1c69 100644
--- a/db/routines/vn/functions/getTicketTrolleyLabelCount.sql
+++ b/db/routines/vn/functions/getTicketTrolleyLabelCount.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getTicketTrolleyLabelCount`(vTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getTicketTrolleyLabelCount`(vTicket INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/getUser.sql b/db/routines/vn/functions/getUser.sql
index eb85b8346..311394b17 100644
--- a/db/routines/vn/functions/getUser.sql
+++ b/db/routines/vn/functions/getUser.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getUser`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getUser`()
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/getUserId.sql b/db/routines/vn/functions/getUserId.sql
index 9afcb8912..d68dabc84 100644
--- a/db/routines/vn/functions/getUserId.sql
+++ b/db/routines/vn/functions/getUserId.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`getUserId`(userName varchar(30))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getUserId`(userName varchar(30))
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/hasAnyNegativeBase.sql b/db/routines/vn/functions/hasAnyNegativeBase.sql
index 97d1e7328..d3ca25858 100644
--- a/db/routines/vn/functions/hasAnyNegativeBase.sql
+++ b/db/routines/vn/functions/hasAnyNegativeBase.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`hasAnyNegativeBase`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`hasAnyNegativeBase`()
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/hasAnyPositiveBase.sql b/db/routines/vn/functions/hasAnyPositiveBase.sql
index 7222c3b2a..ea7d8f14b 100644
--- a/db/routines/vn/functions/hasAnyPositiveBase.sql
+++ b/db/routines/vn/functions/hasAnyPositiveBase.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`hasAnyPositiveBase`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`hasAnyPositiveBase`()
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/hasItemsInSector.sql b/db/routines/vn/functions/hasItemsInSector.sql
index 4aa4edb9c..7a5c4cf60 100644
--- a/db/routines/vn/functions/hasItemsInSector.sql
+++ b/db/routines/vn/functions/hasItemsInSector.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`hasItemsInSector`(vTicketFk INT, vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`hasItemsInSector`(vTicketFk INT, vSectorFk INT)
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/hasSomeNegativeBase.sql b/db/routines/vn/functions/hasSomeNegativeBase.sql
index ea7efe777..af435a6c5 100644
--- a/db/routines/vn/functions/hasSomeNegativeBase.sql
+++ b/db/routines/vn/functions/hasSomeNegativeBase.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`hasSomeNegativeBase`(vTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`hasSomeNegativeBase`(vTicket INT)
RETURNS tinyint(1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/intrastat_estimateNet.sql b/db/routines/vn/functions/intrastat_estimateNet.sql
index 350cb788a..645fb6406 100644
--- a/db/routines/vn/functions/intrastat_estimateNet.sql
+++ b/db/routines/vn/functions/intrastat_estimateNet.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`(
vSelf INT,
vStems INT
)
diff --git a/db/routines/vn/functions/invoiceOutAmount.sql b/db/routines/vn/functions/invoiceOutAmount.sql
index 6c66a46f3..447c0883e 100644
--- a/db/routines/vn/functions/invoiceOutAmount.sql
+++ b/db/routines/vn/functions/invoiceOutAmount.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceOutAmount`(vInvoiceRef VARCHAR(15))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`invoiceOutAmount`(vInvoiceRef VARCHAR(15))
RETURNS decimal(10,2)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/invoiceOut_getMaxIssued.sql b/db/routines/vn/functions/invoiceOut_getMaxIssued.sql
index dc1a59eaa..687f82dfc 100644
--- a/db/routines/vn/functions/invoiceOut_getMaxIssued.sql
+++ b/db/routines/vn/functions/invoiceOut_getMaxIssued.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceOut_getMaxIssued`(vSerial VARCHAR(2),
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`invoiceOut_getMaxIssued`(vSerial VARCHAR(2),
vCompanyFk INT,
vYear INT
)
diff --git a/db/routines/vn/functions/invoiceOut_getPath.sql b/db/routines/vn/functions/invoiceOut_getPath.sql
index 1e174a4cf..7e8850e15 100644
--- a/db/routines/vn/functions/invoiceOut_getPath.sql
+++ b/db/routines/vn/functions/invoiceOut_getPath.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceOut_getPath`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`invoiceOut_getPath`(vSelf INT)
RETURNS varchar(255) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/invoiceOut_getWeight.sql b/db/routines/vn/functions/invoiceOut_getWeight.sql
index 1302c0341..3c16191bb 100644
--- a/db/routines/vn/functions/invoiceOut_getWeight.sql
+++ b/db/routines/vn/functions/invoiceOut_getWeight.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceOut_getWeight`(vInvoiceRef VARCHAR(15)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`invoiceOut_getWeight`(vInvoiceRef VARCHAR(15)
)
RETURNS decimal(10,2)
NOT DETERMINISTIC
diff --git a/db/routines/vn/functions/invoiceSerial.sql b/db/routines/vn/functions/invoiceSerial.sql
index 66448ac9c..9c0edf1c3 100644
--- a/db/routines/vn/functions/invoiceSerial.sql
+++ b/db/routines/vn/functions/invoiceSerial.sql
@@ -1,26 +1,43 @@
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=`vn`@`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
- * 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
- */
- DECLARE vTaxArea VARCHAR(25);
- DECLARE vSerie CHAR(1);
+/**
+* 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 (vn.invoiceOutSerial.type[ENUM])
+* @return vSerie de la factura
+*/
+ DECLARE vTaxArea VARCHAR(25) COLLATE utf8mb3_general_ci;
+ DECLARE vTransactionCode INT(2);
+ 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 CodigoTransaccion INTO vTransactionCode
+ FROM taxArea
+ WHERE code = vTaxArea;
+
+ SELECT ios.code INTO vSerie
+ FROM invoiceOutSerial ios
+ JOIN taxArea ta ON ta.code = ios.taxAreaFk
+ WHERE ios.`type` = vType
+ AND ta.CodigoTransaccion = vTransactionCode;
+
RETURN vSerie;
END$$
DELIMITER ;
diff --git a/db/routines/vn/functions/invoiceSerialArea.sql b/db/routines/vn/functions/invoiceSerialArea.sql
deleted file mode 100644
index 02edd83f2..000000000
--- a/db/routines/vn/functions/invoiceSerialArea.sql
+++ /dev/null
@@ -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 ;
diff --git a/db/routines/vn/functions/isLogifloraDay.sql b/db/routines/vn/functions/isLogifloraDay.sql
index 8e9c9b264..27e8e7551 100644
--- a/db/routines/vn/functions/isLogifloraDay.sql
+++ b/db/routines/vn/functions/isLogifloraDay.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`isLogifloraDay`(vShipped DATE, vWarehouse INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`isLogifloraDay`(vShipped DATE, vWarehouse INT)
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/itemPacking.sql b/db/routines/vn/functions/itemPacking.sql
index 6856c12cd..cc5dfae7a 100644
--- a/db/routines/vn/functions/itemPacking.sql
+++ b/db/routines/vn/functions/itemPacking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`itemPacking`(vBarcode VARCHAR(22), vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`itemPacking`(vBarcode VARCHAR(22), vWarehouseFk INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/itemShelvingPlacementSupply_ClosestGet.sql b/db/routines/vn/functions/itemShelvingPlacementSupply_ClosestGet.sql
index 6b5fc3ae3..805045021 100644
--- a/db/routines/vn/functions/itemShelvingPlacementSupply_ClosestGet.sql
+++ b/db/routines/vn/functions/itemShelvingPlacementSupply_ClosestGet.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`itemShelvingPlacementSupply_ClosestGet`(vParkingFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`itemShelvingPlacementSupply_ClosestGet`(vParkingFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/itemTag_getIntValue.sql b/db/routines/vn/functions/itemTag_getIntValue.sql
index fa5a03552..3996f71f8 100644
--- a/db/routines/vn/functions/itemTag_getIntValue.sql
+++ b/db/routines/vn/functions/itemTag_getIntValue.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`itemTag_getIntValue`(vValue VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`itemTag_getIntValue`(vValue VARCHAR(255))
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/item_getFhImage.sql b/db/routines/vn/functions/item_getFhImage.sql
index 13e02e8fe..d5aef592d 100644
--- a/db/routines/vn/functions/item_getFhImage.sql
+++ b/db/routines/vn/functions/item_getFhImage.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`item_getFhImage`(itemFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`item_getFhImage`(itemFk INT)
RETURNS varchar(255) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/item_getPackage.sql b/db/routines/vn/functions/item_getPackage.sql
index 894abe4cf..88e40399f 100644
--- a/db/routines/vn/functions/item_getPackage.sql
+++ b/db/routines/vn/functions/item_getPackage.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`item_getPackage`(vItemFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`item_getPackage`(vItemFk INT)
RETURNS varchar(50) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/item_getVolume.sql b/db/routines/vn/functions/item_getVolume.sql
index afcb32c93..f4156e5a6 100644
--- a/db/routines/vn/functions/item_getVolume.sql
+++ b/db/routines/vn/functions/item_getVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`item_getVolume`(vSelf INT, vPackaging VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`item_getVolume`(vSelf INT, vPackaging VARCHAR(10))
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/itemsInSector_get.sql b/db/routines/vn/functions/itemsInSector_get.sql
index 9054087b3..254ebe1b5 100644
--- a/db/routines/vn/functions/itemsInSector_get.sql
+++ b/db/routines/vn/functions/itemsInSector_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`itemsInSector_get`(vTicketFk INT, vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`itemsInSector_get`(vTicketFk INT, vSectorFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/lastDayOfWeek.sql b/db/routines/vn/functions/lastDayOfWeek.sql
index 464bf5afe..0aba5ab7b 100644
--- a/db/routines/vn/functions/lastDayOfWeek.sql
+++ b/db/routines/vn/functions/lastDayOfWeek.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`lastDayOfWeek`(vYear INT, vWeek INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`lastDayOfWeek`(vYear INT, vWeek INT)
RETURNS date
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/machine_checkPlate.sql b/db/routines/vn/functions/machine_checkPlate.sql
index d08ed97c5..8660163e4 100644
--- a/db/routines/vn/functions/machine_checkPlate.sql
+++ b/db/routines/vn/functions/machine_checkPlate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`machine_checkPlate`(vPlate VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`machine_checkPlate`(vPlate VARCHAR(10))
RETURNS tinyint(1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/messageSend.sql b/db/routines/vn/functions/messageSend.sql
index 8a95118e7..22cca43ec 100644
--- a/db/routines/vn/functions/messageSend.sql
+++ b/db/routines/vn/functions/messageSend.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`messageSend`(vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`messageSend`(vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/messageSendWithUser.sql b/db/routines/vn/functions/messageSendWithUser.sql
index 1d5b730a8..f8bfde2e4 100644
--- a/db/routines/vn/functions/messageSendWithUser.sql
+++ b/db/routines/vn/functions/messageSendWithUser.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`messageSendWithUser`(vSenderFK INT, vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`messageSendWithUser`(vSenderFK INT, vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/orderTotalVolume.sql b/db/routines/vn/functions/orderTotalVolume.sql
index 962baa8ec..7962a9a73 100644
--- a/db/routines/vn/functions/orderTotalVolume.sql
+++ b/db/routines/vn/functions/orderTotalVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`orderTotalVolume`(vOrderId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`orderTotalVolume`(vOrderId INT)
RETURNS decimal(10,3)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/orderTotalVolumeBoxes.sql b/db/routines/vn/functions/orderTotalVolumeBoxes.sql
index cbc0e94ac..3474534c4 100644
--- a/db/routines/vn/functions/orderTotalVolumeBoxes.sql
+++ b/db/routines/vn/functions/orderTotalVolumeBoxes.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`orderTotalVolumeBoxes`(vOrderId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`orderTotalVolumeBoxes`(vOrderId INT)
RETURNS decimal(10,3)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/packaging_calculate.sql b/db/routines/vn/functions/packaging_calculate.sql
index c9aaf07b9..01ec8b843 100644
--- a/db/routines/vn/functions/packaging_calculate.sql
+++ b/db/routines/vn/functions/packaging_calculate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`packaging_calculate`(isPackageReturnable TINYINT(1),
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`packaging_calculate`(isPackageReturnable TINYINT(1),
packagingReturnFk INT(11),
base DECIMAL(10,2),
price DECIMAL(10,2),
diff --git a/db/routines/vn/functions/priceFixed_getRate2.sql b/db/routines/vn/functions/priceFixed_getRate2.sql
index d97a20e59..61e5abe9b 100644
--- a/db/routines/vn/functions/priceFixed_getRate2.sql
+++ b/db/routines/vn/functions/priceFixed_getRate2.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`priceFixed_getRate2`(vFixedPriceFk INT, vRate3 DOUBLE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`priceFixed_getRate2`(vFixedPriceFk INT, vRate3 DOUBLE)
RETURNS double
NOT DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/routeProposal.sql b/db/routines/vn/functions/routeProposal.sql
index 81b5d9048..14b626a39 100644
--- a/db/routines/vn/functions/routeProposal.sql
+++ b/db/routines/vn/functions/routeProposal.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`routeProposal`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`routeProposal`(vTicketFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/routeProposal_.sql b/db/routines/vn/functions/routeProposal_.sql
index b4559c10c..a307d8fc0 100644
--- a/db/routines/vn/functions/routeProposal_.sql
+++ b/db/routines/vn/functions/routeProposal_.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`routeProposal_`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`routeProposal_`(vTicketFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/routeProposal_beta.sql b/db/routines/vn/functions/routeProposal_beta.sql
index 4ec17d3ed..d6db4d361 100644
--- a/db/routines/vn/functions/routeProposal_beta.sql
+++ b/db/routines/vn/functions/routeProposal_beta.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`routeProposal_beta`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`routeProposal_beta`(vTicketFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/sale_hasComponentLack.sql b/db/routines/vn/functions/sale_hasComponentLack.sql
index 912d5f107..a7ccfeec6 100644
--- a/db/routines/vn/functions/sale_hasComponentLack.sql
+++ b/db/routines/vn/functions/sale_hasComponentLack.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`sale_hasComponentLack`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`sale_hasComponentLack`(
vSelf INT
)RETURNS tinyint(1)
READS SQL DATA
diff --git a/db/routines/vn/functions/specie_IsForbidden.sql b/db/routines/vn/functions/specie_IsForbidden.sql
index 5e7275ae7..a8ed12a50 100644
--- a/db/routines/vn/functions/specie_IsForbidden.sql
+++ b/db/routines/vn/functions/specie_IsForbidden.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`specie_IsForbidden`(vItemFk INT, vAddressFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`specie_IsForbidden`(vItemFk INT, vAddressFk INT)
RETURNS tinyint(1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/testCIF.sql b/db/routines/vn/functions/testCIF.sql
index ba2cc8345..f6acd8fb9 100644
--- a/db/routines/vn/functions/testCIF.sql
+++ b/db/routines/vn/functions/testCIF.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`testCIF`(vCIF VARCHAR(9))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`testCIF`(vCIF VARCHAR(9))
RETURNS varchar(10) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/testNIE.sql b/db/routines/vn/functions/testNIE.sql
index 6843becad..fdc371233 100644
--- a/db/routines/vn/functions/testNIE.sql
+++ b/db/routines/vn/functions/testNIE.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`testNIE`(vNIE VARCHAR(9))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`testNIE`(vNIE VARCHAR(9))
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/testNIF.sql b/db/routines/vn/functions/testNIF.sql
index 5b6654312..59e59a456 100644
--- a/db/routines/vn/functions/testNIF.sql
+++ b/db/routines/vn/functions/testNIF.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`testNIF`(vNIF VARCHAR(9))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`testNIF`(vNIF VARCHAR(9))
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/ticketCollection_getNoPacked.sql b/db/routines/vn/functions/ticketCollection_getNoPacked.sql
index a9f04cc88..10065faf5 100644
--- a/db/routines/vn/functions/ticketCollection_getNoPacked.sql
+++ b/db/routines/vn/functions/ticketCollection_getNoPacked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketCollection_getNoPacked`(vCollectionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticketCollection_getNoPacked`(vCollectionFk INT)
RETURNS varchar(100) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/ticketGetTotal.sql b/db/routines/vn/functions/ticketGetTotal.sql
index ced02e3c5..a45cbbec8 100644
--- a/db/routines/vn/functions/ticketGetTotal.sql
+++ b/db/routines/vn/functions/ticketGetTotal.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketGetTotal`(vTicketId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticketGetTotal`(vTicketId INT)
RETURNS decimal(10,2)
DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticketPositionInPath.sql b/db/routines/vn/functions/ticketPositionInPath.sql
index 5e75d868d..c7a6b9094 100644
--- a/db/routines/vn/functions/ticketPositionInPath.sql
+++ b/db/routines/vn/functions/ticketPositionInPath.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketPositionInPath`(vTicketId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticketPositionInPath`(vTicketId INT)
RETURNS varchar(10) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/ticketSplitCounter.sql b/db/routines/vn/functions/ticketSplitCounter.sql
index e82c079ae..eb1058a57 100644
--- a/db/routines/vn/functions/ticketSplitCounter.sql
+++ b/db/routines/vn/functions/ticketSplitCounter.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketSplitCounter`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticketSplitCounter`(vTicketFk INT)
RETURNS varchar(15) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticketTotalVolume.sql b/db/routines/vn/functions/ticketTotalVolume.sql
index dc861ab6c..1fe9b3d39 100644
--- a/db/routines/vn/functions/ticketTotalVolume.sql
+++ b/db/routines/vn/functions/ticketTotalVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketTotalVolume`(vTicketId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticketTotalVolume`(vTicketId INT)
RETURNS decimal(10,3)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticketTotalVolumeBoxes.sql b/db/routines/vn/functions/ticketTotalVolumeBoxes.sql
index eb529bab9..1fec10977 100644
--- a/db/routines/vn/functions/ticketTotalVolumeBoxes.sql
+++ b/db/routines/vn/functions/ticketTotalVolumeBoxes.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketTotalVolumeBoxes`(vTicketId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticketTotalVolumeBoxes`(vTicketId INT)
RETURNS decimal(10,1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/ticketWarehouseGet.sql b/db/routines/vn/functions/ticketWarehouseGet.sql
index 705949f24..b1c7b9bc2 100644
--- a/db/routines/vn/functions/ticketWarehouseGet.sql
+++ b/db/routines/vn/functions/ticketWarehouseGet.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketWarehouseGet`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticketWarehouseGet`(vTicketFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticket_CC_volume.sql b/db/routines/vn/functions/ticket_CC_volume.sql
index 2572ae12d..f0c65931b 100644
--- a/db/routines/vn/functions/ticket_CC_volume.sql
+++ b/db/routines/vn/functions/ticket_CC_volume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_CC_volume`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_CC_volume`(vTicketFk INT)
RETURNS decimal(10,1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticket_HasUbication.sql b/db/routines/vn/functions/ticket_HasUbication.sql
index 344a34aa9..7559cf360 100644
--- a/db/routines/vn/functions/ticket_HasUbication.sql
+++ b/db/routines/vn/functions/ticket_HasUbication.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_HasUbication`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_HasUbication`(vTicketFk INT)
RETURNS tinyint(1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticket_get.sql b/db/routines/vn/functions/ticket_get.sql
index b55b1297e..ac8d0c642 100644
--- a/db/routines/vn/functions/ticket_get.sql
+++ b/db/routines/vn/functions/ticket_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_get`(vParamFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_get`(vParamFk INT)
RETURNS INT(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticket_getFreightCost.sql b/db/routines/vn/functions/ticket_getFreightCost.sql
index 61905aff2..c5ddf561d 100644
--- a/db/routines/vn/functions/ticket_getFreightCost.sql
+++ b/db/routines/vn/functions/ticket_getFreightCost.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_getFreightCost`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_getFreightCost`(vTicketFk INT)
RETURNS decimal(10,2)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/ticket_getWeight.sql b/db/routines/vn/functions/ticket_getWeight.sql
index 32f84cac7..d0298d63f 100644
--- a/db/routines/vn/functions/ticket_getWeight.sql
+++ b/db/routines/vn/functions/ticket_getWeight.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_getWeight`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_getWeight`(vTicketFk INT)
RETURNS decimal(10,3)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/ticket_isOutClosureZone.sql b/db/routines/vn/functions/ticket_isOutClosureZone.sql
index ebddcf505..fcd7de858 100644
--- a/db/routines/vn/functions/ticket_isOutClosureZone.sql
+++ b/db/routines/vn/functions/ticket_isOutClosureZone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_isOutClosureZone`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_isOutClosureZone`(vSelf INT)
RETURNS tinyint(1)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/ticket_isProblemCalcNeeded.sql b/db/routines/vn/functions/ticket_isProblemCalcNeeded.sql
index 4974a8c76..aa821a8e5 100644
--- a/db/routines/vn/functions/ticket_isProblemCalcNeeded.sql
+++ b/db/routines/vn/functions/ticket_isProblemCalcNeeded.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_isProblemCalcNeeded`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_isProblemCalcNeeded`(
vSelf INT
)
RETURNS BOOL
diff --git a/db/routines/vn/functions/ticket_isTooLittle.sql b/db/routines/vn/functions/ticket_isTooLittle.sql
index bcbf09035..a3444c863 100644
--- a/db/routines/vn/functions/ticket_isTooLittle.sql
+++ b/db/routines/vn/functions/ticket_isTooLittle.sql
@@ -1,8 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_isTooLittle`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_isTooLittle`(
vSelf INT
)
- RETURNS tinyint(1)
+ RETURNS BOOL
READS SQL DATA
BEGIN
/**
@@ -11,14 +11,21 @@ BEGIN
* @param vSelf Id ticket
* @return BOOL
*/
- DECLARE vIsTooLittle TINYINT(1);
-
+ DECLARE vIsTooLittle BOOL;
+
+ WITH ticketData AS (
+ SELECT addressFk, DATE(shipped) dated
+ FROM vn.ticket
+ WHERE id = vSelf
+ )
SELECT (SUM(IFNULL(sv.litros, 0)) < vc.minTicketVolume
- AND IFNULL(t.totalWithoutVat, 0) < vc.minTicketValue) INTO vIsTooLittle
- FROM ticket t
- LEFT JOIN saleVolume sv ON sv.ticketFk = t.id
- JOIN volumeConfig vc
- WHERE t.id = vSelf;
+ AND SUM(IFNULL(t.totalWithoutVat, 0)) < vc.minTicketValue) INTO vIsTooLittle
+ FROM ticketData td
+ JOIN vn.ticket t ON t.addressFk = td.addressFk
+ LEFT JOIN vn.saleVolume sv ON sv.ticketFk = t.id
+ JOIN vn.volumeConfig vc
+ WHERE t.shipped BETWEEN td.dated AND util.dayEnd(td.dated)
+ AND ticket_isProblemCalcNeeded(t.id);
RETURN vIsTooLittle;
END$$
diff --git a/db/routines/vn/functions/till_new.sql b/db/routines/vn/functions/till_new.sql
index b93072596..2b235a91d 100644
--- a/db/routines/vn/functions/till_new.sql
+++ b/db/routines/vn/functions/till_new.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`till_new`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`till_new`(
vClient INT,
vBank INT,
vAmount DOUBLE,
diff --git a/db/routines/vn/functions/timeWorkerControl_getDirection.sql b/db/routines/vn/functions/timeWorkerControl_getDirection.sql
index 518e4aeb5..c0f1e67ea 100644
--- a/db/routines/vn/functions/timeWorkerControl_getDirection.sql
+++ b/db/routines/vn/functions/timeWorkerControl_getDirection.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`timeWorkerControl_getDirection`(vUserFk INT, vTimed DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`timeWorkerControl_getDirection`(vUserFk INT, vTimed DATETIME)
RETURNS varchar(6) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/time_getSalesYear.sql b/db/routines/vn/functions/time_getSalesYear.sql
index 658a1112a..d9022890d 100644
--- a/db/routines/vn/functions/time_getSalesYear.sql
+++ b/db/routines/vn/functions/time_getSalesYear.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`time_getSalesYear`(vMonth INT, vYear INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`time_getSalesYear`(vMonth INT, vYear INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/travel_getForLogiflora.sql b/db/routines/vn/functions/travel_getForLogiflora.sql
index cb3f0dac0..39c3086b7 100644
--- a/db/routines/vn/functions/travel_getForLogiflora.sql
+++ b/db/routines/vn/functions/travel_getForLogiflora.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`travel_getForLogiflora`(vLanded DATE, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`travel_getForLogiflora`(vLanded DATE, vWarehouseFk INT)
RETURNS int(11)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/travel_hasUniqueAwb.sql b/db/routines/vn/functions/travel_hasUniqueAwb.sql
index e918f1a26..d98986753 100644
--- a/db/routines/vn/functions/travel_hasUniqueAwb.sql
+++ b/db/routines/vn/functions/travel_hasUniqueAwb.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`travel_hasUniqueAwb`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`travel_hasUniqueAwb`(
vSelf INT
)
RETURNS BOOL
diff --git a/db/routines/vn/functions/validationCode.sql b/db/routines/vn/functions/validationCode.sql
index 75d603d24..ab0acedaa 100644
--- a/db/routines/vn/functions/validationCode.sql
+++ b/db/routines/vn/functions/validationCode.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`validationCode`(vString VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`validationCode`(vString VARCHAR(255))
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/validationCode_beta.sql b/db/routines/vn/functions/validationCode_beta.sql
index 0e27a4722..afeb1273a 100644
--- a/db/routines/vn/functions/validationCode_beta.sql
+++ b/db/routines/vn/functions/validationCode_beta.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`validationCode_beta`(vString VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`validationCode_beta`(vString VARCHAR(255))
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/workerMachinery_isRegistered.sql b/db/routines/vn/functions/workerMachinery_isRegistered.sql
index 89a1c44ac..60f458e9e 100644
--- a/db/routines/vn/functions/workerMachinery_isRegistered.sql
+++ b/db/routines/vn/functions/workerMachinery_isRegistered.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`workerMachinery_isRegistered`(vWorkerFk VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`workerMachinery_isRegistered`(vWorkerFk VARCHAR(10))
RETURNS tinyint(1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/workerNigthlyHours_calculate.sql b/db/routines/vn/functions/workerNigthlyHours_calculate.sql
index 0828b30f9..1b4835712 100644
--- a/db/routines/vn/functions/workerNigthlyHours_calculate.sql
+++ b/db/routines/vn/functions/workerNigthlyHours_calculate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`workerNigthlyHours_calculate`(vTimeIn DATETIME, vTimeOut DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`workerNigthlyHours_calculate`(vTimeIn DATETIME, vTimeOut DATETIME)
RETURNS decimal(5,2)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/worker_getCode.sql b/db/routines/vn/functions/worker_getCode.sql
index d3d63dccc..76ec94d1b 100644
--- a/db/routines/vn/functions/worker_getCode.sql
+++ b/db/routines/vn/functions/worker_getCode.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`worker_getCode`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`worker_getCode`()
RETURNS varchar(3) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/worker_isBoss.sql b/db/routines/vn/functions/worker_isBoss.sql
index 7efada705..8ab3a1fa9 100644
--- a/db/routines/vn/functions/worker_isBoss.sql
+++ b/db/routines/vn/functions/worker_isBoss.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`worker_isBoss`(vUserId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`worker_isBoss`(vUserId INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/worker_isInDepartment.sql b/db/routines/vn/functions/worker_isInDepartment.sql
index 8eee3656e..6f6146d0b 100644
--- a/db/routines/vn/functions/worker_isInDepartment.sql
+++ b/db/routines/vn/functions/worker_isInDepartment.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`worker_isInDepartment`(vDepartmentCode VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`worker_isInDepartment`(vDepartmentCode VARCHAR(255))
RETURNS int(11)
DETERMINISTIC
BEGIN
diff --git a/db/routines/vn/functions/worker_isWorking.sql b/db/routines/vn/functions/worker_isWorking.sql
index 3db333bd0..455b78805 100644
--- a/db/routines/vn/functions/worker_isWorking.sql
+++ b/db/routines/vn/functions/worker_isWorking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`worker_isWorking`(vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`worker_isWorking`(vWorkerFk INT)
RETURNS tinyint(1)
NOT DETERMINISTIC
READS SQL DATA
diff --git a/db/routines/vn/functions/zoneGeo_new.sql b/db/routines/vn/functions/zoneGeo_new.sql
index 65b045962..47ec3dec7 100644
--- a/db/routines/vn/functions/zoneGeo_new.sql
+++ b/db/routines/vn/functions/zoneGeo_new.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`zoneGeo_new`(vType VARCHAR(255), vName VARCHAR(255), vParentFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`zoneGeo_new`(vType VARCHAR(255), vName VARCHAR(255), vParentFk INT)
RETURNS int(11)
NOT DETERMINISTIC
NO SQL
diff --git a/db/routines/vn/procedures/XDiario_check.sql b/db/routines/vn/procedures/XDiario_check.sql
index ef969924b..a8f33adde 100644
--- a/db/routines/vn/procedures/XDiario_check.sql
+++ b/db/routines/vn/procedures/XDiario_check.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`XDiario_check`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`XDiario_check`()
BEGIN
/**
* Realiza la revisión diaria de los asientos contables,
diff --git a/db/routines/vn/procedures/XDiario_checkDate.sql b/db/routines/vn/procedures/XDiario_checkDate.sql
index b481d1f36..8b961a1fa 100644
--- a/db/routines/vn/procedures/XDiario_checkDate.sql
+++ b/db/routines/vn/procedures/XDiario_checkDate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`XDiario_checkDate`(vDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`XDiario_checkDate`(vDate DATE)
proc: BEGIN
/**
* Comprueba si la fecha pasada esta en el rango
diff --git a/db/routines/vn/procedures/absoluteInventoryHistory.sql b/db/routines/vn/procedures/absoluteInventoryHistory.sql
index 627b7c8be..d2a2029f0 100644
--- a/db/routines/vn/procedures/absoluteInventoryHistory.sql
+++ b/db/routines/vn/procedures/absoluteInventoryHistory.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`(
vItemFk INT,
vWarehouseFk INT,
vDate DATETIME
diff --git a/db/routines/vn/procedures/addAccountReconciliation.sql b/db/routines/vn/procedures/addAccountReconciliation.sql
index 8effbd76c..1aa3c28fd 100644
--- a/db/routines/vn/procedures/addAccountReconciliation.sql
+++ b/db/routines/vn/procedures/addAccountReconciliation.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`addAccountReconciliation`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`addAccountReconciliation`()
BEGIN
/**
* Updates duplicate records in the accountReconciliation table,
diff --git a/db/routines/vn/procedures/addNoteFromDelivery.sql b/db/routines/vn/procedures/addNoteFromDelivery.sql
index 61295b7db..57b7bef24 100644
--- a/db/routines/vn/procedures/addNoteFromDelivery.sql
+++ b/db/routines/vn/procedures/addNoteFromDelivery.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`addNoteFromDelivery`(idTicket INT,nota TEXT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`addNoteFromDelivery`(idTicket INT,nota TEXT)
BEGIN
DECLARE observationTypeFk INT DEFAULT 3; /*3 = REPARTIDOR*/
diff --git a/db/routines/vn/procedures/addressTaxArea.sql b/db/routines/vn/procedures/addressTaxArea.sql
index 5deb01fa4..a1bb0dec0 100644
--- a/db/routines/vn/procedures/addressTaxArea.sql
+++ b/db/routines/vn/procedures/addressTaxArea.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`addressTaxArea`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`addressTaxArea`()
READS SQL DATA
BEGIN
/**
diff --git a/db/routines/vn/procedures/address_updateCoordinates.sql b/db/routines/vn/procedures/address_updateCoordinates.sql
index bdeb886df..815c7b7a7 100644
--- a/db/routines/vn/procedures/address_updateCoordinates.sql
+++ b/db/routines/vn/procedures/address_updateCoordinates.sql
@@ -1,8 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`address_updateCoordinates`(
+CREATE OR REPLACE DEFINER=`vn`@`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.
diff --git a/db/routines/vn/procedures/agencyHourGetFirstShipped.sql b/db/routines/vn/procedures/agencyHourGetFirstShipped.sql
index 4bd1c4222..dc584d0f9 100644
--- a/db/routines/vn/procedures/agencyHourGetFirstShipped.sql
+++ b/db/routines/vn/procedures/agencyHourGetFirstShipped.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyHourGetFirstShipped`(vAgencyMode INT, vAddress INT, vWarehouse INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`agencyHourGetFirstShipped`(vAgencyMode INT, vAddress INT, vWarehouse INT)
BEGIN
/**
* DEPRECATED usar zoneGetFirstShipped
diff --git a/db/routines/vn/procedures/agencyHourGetLanded.sql b/db/routines/vn/procedures/agencyHourGetLanded.sql
index ee48388a0..6e766d739 100644
--- a/db/routines/vn/procedures/agencyHourGetLanded.sql
+++ b/db/routines/vn/procedures/agencyHourGetLanded.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyHourGetLanded`(vDated DATE, vAddress INT, vAgency INT, vWarehouse INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`agencyHourGetLanded`(vDated DATE, vAddress INT, vAgency INT, vWarehouse INT)
BEGIN
/**
* DEPRECATED usar zoneGetLanded
diff --git a/db/routines/vn/procedures/agencyHourGetWarehouse.sql b/db/routines/vn/procedures/agencyHourGetWarehouse.sql
index 7fc524fce..0e27e4437 100644
--- a/db/routines/vn/procedures/agencyHourGetWarehouse.sql
+++ b/db/routines/vn/procedures/agencyHourGetWarehouse.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyHourGetWarehouse`(vAddress INT, vDate DATE, vWarehouse INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`agencyHourGetWarehouse`(vAddress INT, vDate DATE, vWarehouse INT)
BEGIN
/**
* DEPRECATED usar zoneGetWarehouse
diff --git a/db/routines/vn/procedures/agencyHourListGetShipped.sql b/db/routines/vn/procedures/agencyHourListGetShipped.sql
index b4cf35f77..3a0b0db65 100644
--- a/db/routines/vn/procedures/agencyHourListGetShipped.sql
+++ b/db/routines/vn/procedures/agencyHourListGetShipped.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyHourListGetShipped`(vDate DATE, vAddress INT, vAgency INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`agencyHourListGetShipped`(vDate DATE, vAddress INT, vAgency INT)
BEGIN
/* * DEPRECATED usar zoneGetShipped
*/
diff --git a/db/routines/vn/procedures/agencyVolume.sql b/db/routines/vn/procedures/agencyVolume.sql
index ef47834ba..451b089fc 100644
--- a/db/routines/vn/procedures/agencyVolume.sql
+++ b/db/routines/vn/procedures/agencyVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyVolume`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`agencyVolume`()
BEGIN
/**
* Calculates and presents information on shipment and packaging volumes
diff --git a/db/routines/vn/procedures/available_calc.sql b/db/routines/vn/procedures/available_calc.sql
index 8c806d41d..ddfba8bad 100644
--- a/db/routines/vn/procedures/available_calc.sql
+++ b/db/routines/vn/procedures/available_calc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`available_calc`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`available_calc`(
vDate DATE,
vAddress INT,
vAgencyMode INT)
diff --git a/db/routines/vn/procedures/available_traslate.sql b/db/routines/vn/procedures/available_traslate.sql
index d33a8e10e..03eb376ab 100644
--- a/db/routines/vn/procedures/available_traslate.sql
+++ b/db/routines/vn/procedures/available_traslate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`available_traslate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`available_traslate`(
vWarehouseLanding INT,
vDated DATE,
vWarehouseShipment INT)
@@ -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
diff --git a/db/routines/vn/procedures/balanceNestTree_addChild.sql b/db/routines/vn/procedures/balanceNestTree_addChild.sql
index 5cd1ab470..2bf4157c4 100644
--- a/db/routines/vn/procedures/balanceNestTree_addChild.sql
+++ b/db/routines/vn/procedures/balanceNestTree_addChild.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`balanceNestTree_addChild`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`balanceNestTree_addChild`(
vSelf INT,
vName VARCHAR(45)
)
diff --git a/db/routines/vn/procedures/balanceNestTree_delete.sql b/db/routines/vn/procedures/balanceNestTree_delete.sql
index 1d6a9efff..bb0b83bf5 100644
--- a/db/routines/vn/procedures/balanceNestTree_delete.sql
+++ b/db/routines/vn/procedures/balanceNestTree_delete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`balanceNestTree_delete`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`balanceNestTree_delete`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/balanceNestTree_move.sql b/db/routines/vn/procedures/balanceNestTree_move.sql
index ce29de1d9..a05a618b7 100644
--- a/db/routines/vn/procedures/balanceNestTree_move.sql
+++ b/db/routines/vn/procedures/balanceNestTree_move.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`balanceNestTree_move`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`balanceNestTree_move`(
vSelf INT,
vFather INT
)
diff --git a/db/routines/vn/procedures/balance_create.sql b/db/routines/vn/procedures/balance_create.sql
index 366707e58..6363b4c00 100644
--- a/db/routines/vn/procedures/balance_create.sql
+++ b/db/routines/vn/procedures/balance_create.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`balance_create`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`balance_create`(
vStartingMonth INT,
vEndingMonth INT,
vCompany INT,
diff --git a/db/routines/vn/procedures/bankEntity_checkBic.sql b/db/routines/vn/procedures/bankEntity_checkBic.sql
index 2f05ae654..069c2a0d7 100644
--- a/db/routines/vn/procedures/bankEntity_checkBic.sql
+++ b/db/routines/vn/procedures/bankEntity_checkBic.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`bankEntity_checkBic`(vBic VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`bankEntity_checkBic`(vBic VARCHAR(255))
BEGIN
/**
* If the bic length is Incorrect throw exception
diff --git a/db/routines/vn/procedures/bankPolicy_notifyExpired.sql b/db/routines/vn/procedures/bankPolicy_notifyExpired.sql
index 61216938d..cdcd212f3 100644
--- a/db/routines/vn/procedures/bankPolicy_notifyExpired.sql
+++ b/db/routines/vn/procedures/bankPolicy_notifyExpired.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`bankPolicy_notifyExpired`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`bankPolicy_notifyExpired`()
BEGIN
/**
*
diff --git a/db/routines/vn/procedures/buy_afterUpsert.sql b/db/routines/vn/procedures/buy_afterUpsert.sql
index 76f60d1e5..7ff7dd841 100644
--- a/db/routines/vn/procedures/buy_afterUpsert.sql
+++ b/db/routines/vn/procedures/buy_afterUpsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_afterUpsert`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_afterUpsert`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/buy_checkGrouping.sql b/db/routines/vn/procedures/buy_checkGrouping.sql
index 11c727fb1..7d2830ab2 100644
--- a/db/routines/vn/procedures/buy_checkGrouping.sql
+++ b/db/routines/vn/procedures/buy_checkGrouping.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_checkGrouping`(vGrouping INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_checkGrouping`(vGrouping INT)
BEGIN
/**
* Checks the buy grouping, throws an error if it's invalid.
diff --git a/db/routines/vn/procedures/buy_chekItem.sql b/db/routines/vn/procedures/buy_chekItem.sql
index e8cf05fed..e9e9336b7 100644
--- a/db/routines/vn/procedures/buy_chekItem.sql
+++ b/db/routines/vn/procedures/buy_chekItem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_checkItem`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_checkItem`()
BEGIN
/**
* Checks if the item has weightByPiece or size null on any buy.
diff --git a/db/routines/vn/procedures/buy_clone.sql b/db/routines/vn/procedures/buy_clone.sql
index 7b77204c9..888531746 100644
--- a/db/routines/vn/procedures/buy_clone.sql
+++ b/db/routines/vn/procedures/buy_clone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_clone`(vEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_clone`(vEntryFk INT)
BEGIN
/**
* Clone buys to an entry
diff --git a/db/routines/vn/procedures/buy_getSplit.sql b/db/routines/vn/procedures/buy_getSplit.sql
index 73cc1dda7..087a4de4d 100644
--- a/db/routines/vn/procedures/buy_getSplit.sql
+++ b/db/routines/vn/procedures/buy_getSplit.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_getSplit`(vSelf INT, vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_getSplit`(vSelf INT, vDated DATE)
BEGIN
/**
* Devuelve tantos registros como etiquetas se necesitan para cada uno de los cubos o cajas de
diff --git a/db/routines/vn/procedures/buyUltimate.sql b/db/routines/vn/procedures/buy_getUltimate.sql
similarity index 65%
rename from db/routines/vn/procedures/buyUltimate.sql
rename to db/routines/vn/procedures/buy_getUltimate.sql
index 98b16cbc0..023e81774 100644
--- a/db/routines/vn/procedures/buyUltimate.sql
+++ b/db/routines/vn/procedures/buy_getUltimate.sql
@@ -1,34 +1,37 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimate`(
+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
+ * 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);
+ CALL cache.last_buy_refresh(FALSE);
- DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate;
- CREATE TEMPORARY TABLE tmp.buyUltimate
+ 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;
+ WHERE (warehouse_id = vWarehouseFk OR vWarehouseFk IS NULL)
+ AND (item_id = vItemFk OR vItemFk IS NULL);
IF vDated >= util.VN_CURDATE() THEN
- CALL buyUltimateFromInterval(vWarehouseFk, util.VN_CURDATE(), vDated);
+ 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;
@@ -36,6 +39,7 @@ BEGIN
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;
diff --git a/db/routines/vn/procedures/buyUltimateFromInterval.sql b/db/routines/vn/procedures/buy_getUltimateFromInterval.sql
similarity index 86%
rename from db/routines/vn/procedures/buyUltimateFromInterval.sql
rename to db/routines/vn/procedures/buy_getUltimateFromInterval.sql
index 5879b58e1..2115beb95 100644
--- a/db/routines/vn/procedures/buyUltimateFromInterval.sql
+++ b/db/routines/vn/procedures/buy_getUltimateFromInterval.sql
@@ -1,5 +1,6 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimateFromInterval`(
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_getUltimateFromInterval`(
+ vItemFk INT,
vWarehouseFk SMALLINT,
vStarted DATE,
vEnded DATE
@@ -9,6 +10,7 @@ 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
@@ -19,12 +21,12 @@ BEGIN
END IF;
IF vEnded < vStarted THEN
- SET vStarted = TIMESTAMPADD(MONTH, -1, vEnded);
+ SET vStarted = vEnded - INTERVAL 1 MONTH;
END IF;
-- Item
- DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimateFromInterval;
- CREATE TEMPORARY TABLE tmp.buyUltimateFromInterval
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.buyUltimateFromInterval
(PRIMARY KEY (itemFk, warehouseFk),
INDEX(buyFk), INDEX(landed), INDEX(warehouseFk), INDEX(itemFk))
ENGINE = MEMORY
@@ -43,6 +45,7 @@ BEGIN
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
@@ -65,6 +68,7 @@ BEGIN
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
@@ -87,12 +91,14 @@ BEGIN
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
+ -- ItemOriginal
+
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
SELECT itemFk,
warehouseFk,
@@ -109,11 +115,12 @@ BEGIN
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
+ 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;
@@ -133,6 +140,7 @@ BEGIN
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
@@ -157,6 +165,7 @@ BEGIN
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
diff --git a/db/routines/vn/procedures/buy_getVolume.sql b/db/routines/vn/procedures/buy_getVolume.sql
index 633be7ec0..227bfac3c 100644
--- a/db/routines/vn/procedures/buy_getVolume.sql
+++ b/db/routines/vn/procedures/buy_getVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_getVolume`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_getVolume`()
BEGIN
/**
* Cálculo de volumen en líneas de compra
diff --git a/db/routines/vn/procedures/buy_getVolumeByAgency.sql b/db/routines/vn/procedures/buy_getVolumeByAgency.sql
index 2f63c2bdf..7393d12d8 100644
--- a/db/routines/vn/procedures/buy_getVolumeByAgency.sql
+++ b/db/routines/vn/procedures/buy_getVolumeByAgency.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_getVolumeByAgency`(vDated DATE, vAgencyFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_getVolumeByAgency`(vDated DATE, vAgencyFk INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.buy;
diff --git a/db/routines/vn/procedures/buy_getVolumeByEntry.sql b/db/routines/vn/procedures/buy_getVolumeByEntry.sql
index e9a2bca2e..436a49654 100644
--- a/db/routines/vn/procedures/buy_getVolumeByEntry.sql
+++ b/db/routines/vn/procedures/buy_getVolumeByEntry.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_getVolumeByEntry`(vEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_getVolumeByEntry`(vEntryFk INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.buy;
diff --git a/db/routines/vn/procedures/buy_recalcPrices.sql b/db/routines/vn/procedures/buy_recalcPrices.sql
index 35eb00cf1..dea272379 100644
--- a/db/routines/vn/procedures/buy_recalcPrices.sql
+++ b/db/routines/vn/procedures/buy_recalcPrices.sql
@@ -1,52 +1,59 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPrices`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_recalcPrices`()
BEGIN
/**
- * Recalcula los precios para las compras insertadas en tmp.buyRecalc
+ * Recalcula los precios para las compras insertadas en tmp.buyRecalc.
*
* @param tmp.buyRecalc (id)
*/
DECLARE vLanded DATE;
DECLARE vWarehouseFk INT;
- DECLARE vHasNotPrice BOOL;
- DECLARE vBuyingValue DECIMAL(10,4);
- DECLARE vPackagingFk VARCHAR(10);
DECLARE vIsWarehouseFloramondo BOOL;
+ DECLARE vDone BOOL;
+ DECLARE vTravels CURSOR FOR
+ SELECT t.landed, t.warehouseInFk, (w.code = 'flm')
+ FROM tmp.buyRecalc br
+ JOIN buy b ON b.id = br.id
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ JOIN warehouse w ON w.id = t.warehouseInFk
+ GROUP BY t.landed, t.warehouseInFk;
- SELECT t.landed, t.warehouseInFk, (w.`name` = 'Floramondo')
- INTO vLanded, vWarehouseFk, vIsWarehouseFloramondo
- FROM tmp.buyRecalc br
- JOIN buy b ON b.id = br.id
- JOIN entry e ON e.id = b.entryFk
- JOIN travel t ON t.id = e.travelFk
- JOIN warehouse w ON w.id = t.warehouseInFk
- LIMIT 1;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- CALL rate_getPrices(vLanded, vWarehouseFk);
+ OPEN vTravels;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vTravels INTO vLanded, vWarehouseFk, vIsWarehouseFloramondo;
- UPDATE buy b
- JOIN tmp.buyRecalc br ON br.id = b.id AND (@buyId := b.id)
- LEFT JOIN packaging p ON p.id = b.packagingFk
- JOIN item i ON i.id = b.itemFk
- JOIN entry e ON e.id = b.entryFk
- JOIN itemType it ON it.id = i.typeFk
- JOIN travel tr ON tr.id = e.travelFk
- JOIN agencyMode am ON am.id = tr.agencyModeFk
- JOIN tmp.rate r
- JOIN volumeConfig vc
- SET b.freightValue = @PF:= IFNULL(((am.m3 * @m3:= item_getVolume(b.itemFk, b.packagingFk) / 1000000)
- / b.packing) * IF(am.hasWeightVolumetric, GREATEST(b.weight / @m3 / vc.aerealVolumetricDensity, 1), 1), 0),
- b.comissionValue = @CF:= ROUND(IFNULL(e.commission * b.buyingValue / 100, 0), 3),
- b.packageValue = @EF:= IF(vIsWarehouseFloramondo, 0, IFNULL(ROUND(IF(p.isPackageReturnable, p.returnCost / b.packing , p.`value` / b.packing), 3),0)),
- b.price3 = @t3:= IF(r.rate3 = 0, b.buyingValue,ROUND((b.buyingValue + @CF + @EF + @PF) / ((100 - r.rate3 - it.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0
- b.price2 = @t2:= round(@t3 * (1 + ((r.rate2 - r.rate3)/100)),2),
- b.price2 = @t2:= IF(@t2 <= @t3,@t3 , @t2);
+ IF vDone THEN
+ LEAVE l;
+ END IF;
- SELECT (b.buyingValue = b.price2), b.buyingValue, b.packagingFk
- INTO vHasNotPrice, vBuyingValue, vPackagingFk
- FROM vn.buy b
- WHERE b.id = @buyId AND b.buyingValue <> 0.01;
+ CALL rate_getPrices(vLanded, vWarehouseFk);
- DROP TEMPORARY TABLE tmp.rate;
+ UPDATE buy b
+ JOIN tmp.buyRecalc br ON br.id = b.id AND (@buyId := b.id)
+ LEFT JOIN packaging p ON p.id = b.packagingFk
+ JOIN item i ON i.id = b.itemFk
+ JOIN entry e ON e.id = b.entryFk
+ JOIN itemType it ON it.id = i.typeFk
+ JOIN travel tr ON tr.id = e.travelFk
+ JOIN agencyMode am ON am.id = tr.agencyModeFk
+ JOIN tmp.rate r
+ JOIN volumeConfig vc
+ SET b.freightValue = @PF:= IFNULL(((am.m3 * @m3:= item_getVolume(b.itemFk, b.packagingFk) / 1000000)
+ / b.packing) * IF(am.hasWeightVolumetric, GREATEST(b.weight / @m3 / vc.aerealVolumetricDensity, 1), 1), 0),
+ b.comissionValue = @CF:= ROUND(IFNULL(e.commission * b.buyingValue / 100, 0), 3),
+ b.packageValue = @EF:= IF(vIsWarehouseFloramondo, 0, IFNULL(ROUND(IF(p.isPackageReturnable, p.returnCost / b.packing , p.`value` / b.packing), 3),0)),
+ b.price3 = @t3:= IF(r.rate3 = 0, b.buyingValue,ROUND((b.buyingValue + @CF + @EF + @PF) / ((100 - r.rate3 - it.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0
+ b.price2 = @t2:= round(@t3 * (1 + ((r.rate2 - r.rate3)/100)),2),
+ b.price2 = @t2:= IF(@t2 <= @t3,@t3 , @t2)
+ WHERE tr.landed = vLanded
+ AND tr.warehouseInFk = vWarehouseFk;
+
+ DROP TEMPORARY TABLE tmp.rate;
+ END LOOP;
+ CLOSE vTravels;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/buy_recalcPricesByAwb.sql b/db/routines/vn/procedures/buy_recalcPricesByAwb.sql
index 6f6baf305..fafc4763e 100644
--- a/db/routines/vn/procedures/buy_recalcPricesByAwb.sql
+++ b/db/routines/vn/procedures/buy_recalcPricesByAwb.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByAwb`(IN awbFk varchar(18))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByAwb`(IN awbFk varchar(18))
BEGIN
/**
* inserta en tmp.buyRecalc las compras de un awb
diff --git a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
index b699e42d7..0801a9bea 100644
--- a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
+++ b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByBuy`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByBuy`(
vBuyFk INT(11)
)
BEGIN
diff --git a/db/routines/vn/procedures/buy_recalcPricesByEntry.sql b/db/routines/vn/procedures/buy_recalcPricesByEntry.sql
index 8d70d3626..e13548680 100644
--- a/db/routines/vn/procedures/buy_recalcPricesByEntry.sql
+++ b/db/routines/vn/procedures/buy_recalcPricesByEntry.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByEntry`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByEntry`(
vEntryFk INT(11)
)
BEGIN
diff --git a/db/routines/vn/procedures/buy_scan.sql b/db/routines/vn/procedures/buy_scan.sql
index 0d4e8fcdb..e0c7c52de 100644
--- a/db/routines/vn/procedures/buy_scan.sql
+++ b/db/routines/vn/procedures/buy_scan.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_scan`(vBarcode VARCHAR(512))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_scan`(vBarcode VARCHAR(512))
BEGIN
/**
* Busca compras a partir de un código de barras de subasta, las marca como
diff --git a/db/routines/vn/procedures/buy_updateGrouping.sql b/db/routines/vn/procedures/buy_updateGrouping.sql
index fb7adc0a3..b1b30dd2b 100644
--- a/db/routines/vn/procedures/buy_updateGrouping.sql
+++ b/db/routines/vn/procedures/buy_updateGrouping.sql
@@ -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=`vn`@`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
diff --git a/db/routines/vn/procedures/buy_updatePacking.sql b/db/routines/vn/procedures/buy_updatePacking.sql
index d86edc98f..ad25352f2 100644
--- a/db/routines/vn/procedures/buy_updatePacking.sql
+++ b/db/routines/vn/procedures/buy_updatePacking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_updatePacking`(vWarehouseFk INT, vItemFk INT, vPacking INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_updatePacking`(vWarehouseFk INT, vItemFk INT, vPacking INT)
BEGIN
/**
* Actualiza packing
@@ -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
diff --git a/db/routines/vn/procedures/catalog_calcFromItem.sql b/db/routines/vn/procedures/catalog_calcFromItem.sql
index 497fd107c..528cf0403 100644
--- a/db/routines/vn/procedures/catalog_calcFromItem.sql
+++ b/db/routines/vn/procedures/catalog_calcFromItem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`catalog_calcFromItem`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`catalog_calcFromItem`(
vLanded DATE,
vAddressFk INT,
vAgencyModeFk INT,
diff --git a/db/routines/vn/procedures/catalog_calculate.sql b/db/routines/vn/procedures/catalog_calculate.sql
index 963e33507..17e7450cc 100644
--- a/db/routines/vn/procedures/catalog_calculate.sql
+++ b/db/routines/vn/procedures/catalog_calculate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`catalog_calculate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`catalog_calculate`(
vLanded DATE,
vAddressFk INT,
vAgencyModeFk INT,
@@ -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(
@@ -72,9 +72,9 @@ BEGIN
LEAVE l;
END IF;
- CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWarehouseFk, vShipped);
- CALL `cache`.availableNoRaids_refresh (vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped);
- CALL vn.buyUltimate(vWarehouseFk, vShipped);
+ CALL `cache`.available_refresh(vAvailableCalc, FALSE, vWarehouseFk, vShipped);
+ CALL `cache`.availableNoRaids_refresh(vAvailableNoRaidsCalc, FALSE, 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,
diff --git a/db/routines/vn/procedures/catalog_componentCalculate.sql b/db/routines/vn/procedures/catalog_componentCalculate.sql
index 92fe233c5..7ac383e8f 100644
--- a/db/routines/vn/procedures/catalog_componentCalculate.sql
+++ b/db/routines/vn/procedures/catalog_componentCalculate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`catalog_componentCalculate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`catalog_componentCalculate`(
vZoneFk INT,
vAddressFk INT,
vShipped DATE,
diff --git a/db/routines/vn/procedures/catalog_componentPrepare.sql b/db/routines/vn/procedures/catalog_componentPrepare.sql
index 2e58a28e2..b16baf1c2 100644
--- a/db/routines/vn/procedures/catalog_componentPrepare.sql
+++ b/db/routines/vn/procedures/catalog_componentPrepare.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`catalog_componentPrepare`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`catalog_componentPrepare`()
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent;
diff --git a/db/routines/vn/procedures/catalog_componentPurge.sql b/db/routines/vn/procedures/catalog_componentPurge.sql
index c6a19ba62..448396a16 100644
--- a/db/routines/vn/procedures/catalog_componentPurge.sql
+++ b/db/routines/vn/procedures/catalog_componentPurge.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`catalog_componentPurge`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`catalog_componentPurge`()
BEGIN
DROP TEMPORARY TABLE
tmp.ticketComponentPrice,
diff --git a/db/routines/vn/procedures/claimRatio_add.sql b/db/routines/vn/procedures/claimRatio_add.sql
index c375f8736..8c3213644 100644
--- a/db/routines/vn/procedures/claimRatio_add.sql
+++ b/db/routines/vn/procedures/claimRatio_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`claimRatio_add`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`claimRatio_add`()
BEGIN
/*
* Añade a la tabla greuges todos los cargos necesario y
diff --git a/db/routines/vn/procedures/clean.sql b/db/routines/vn/procedures/clean.sql
index 6645b9cb2..a8ca68e5f 100644
--- a/db/routines/vn/procedures/clean.sql
+++ b/db/routines/vn/procedures/clean.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clean`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clean`()
BEGIN
/**
* Purges outdated data to optimize performance.
@@ -19,15 +19,17 @@ BEGIN
DELETE FROM workerActivity WHERE created < v2Years;
DELETE FROM ticketParking WHERE created < v2Months;
DELETE FROM routesMonitor WHERE dated < v2Months;
- DELETE FROM workerTimeControlLog WHERE created < v2Months;
DELETE FROM `message` WHERE sendDate < v2Months;
DELETE FROM messageInbox WHERE sendDate < v2Months;
DELETE FROM messageInbox WHERE sendDate < v2Months;
DELETE FROM workerTimeControl WHERE timed < v4Years;
DELETE FROM itemShelving WHERE created < util.VN_CURDATE() AND visible = 0;
DELETE FROM ticketDown WHERE created < util.yesterday();
- DELETE FROM entryLog WHERE creationDate < v2Months;
DELETE IGNORE FROM expedition WHERE created < v26Months;
+ DELETE cs
+ FROM sms s
+ JOIN clientSms cs ON cs.smsFk = s.id
+ WHERE s.created < v18Months;
DELETE FROM sms WHERE created < v18Months;
DELETE FROM saleTracking WHERE created < v1Years;
DELETE FROM productionError WHERE dated < v1Years;
@@ -57,11 +59,8 @@ BEGIN
DELETE b FROM buy b
JOIN entryConfig e ON e.defaultEntry = b.entryFk
WHERE b.created < v2Months;
- DELETE FROM itemShelvingLog WHERE created < v2Months;
DELETE FROM stockBuyed WHERE creationDate < v2Months;
- DELETE FROM itemCleanLog WHERE created < util.VN_NOW() - INTERVAL 1 YEAR;
DELETE FROM printQueue WHERE statusCode = 'printed' AND created < v2Months;
- DELETE FROM ticketLog WHERE creationDate <= v5Years;
-- Equipos duplicados
DELETE w.*
FROM workerTeam w
@@ -170,7 +169,6 @@ BEGIN
-- Borra los registros de collection y ticketcollection
DELETE FROM collection WHERE created < v2Months;
- DELETE FROM travelLog WHERE creationDate < v3Months;
CALL shelving_clean();
diff --git a/db/routines/vn/procedures/clean_logiflora.sql b/db/routines/vn/procedures/clean_logiflora.sql
index dd08410fd..fd645a158 100644
--- a/db/routines/vn/procedures/clean_logiflora.sql
+++ b/db/routines/vn/procedures/clean_logiflora.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clean_logiflora`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clean_logiflora`()
BEGIN
/**
* Elimina las compras y los artículos residuales de logiflora.
diff --git a/db/routines/vn/procedures/clearShelvingList.sql b/db/routines/vn/procedures/clearShelvingList.sql
index dbaca2747..1ba726e85 100644
--- a/db/routines/vn/procedures/clearShelvingList.sql
+++ b/db/routines/vn/procedures/clearShelvingList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clearShelvingList`(vShelvingFk VARCHAR(8))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clearShelvingList`(vShelvingFk VARCHAR(8))
BEGIN
UPDATE vn.itemShelving
SET visible = 0
diff --git a/db/routines/vn/procedures/clientDebtSpray.sql b/db/routines/vn/procedures/clientDebtSpray.sql
index 687c08fe2..5248432fe 100644
--- a/db/routines/vn/procedures/clientDebtSpray.sql
+++ b/db/routines/vn/procedures/clientDebtSpray.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientDebtSpray`(vClientFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientDebtSpray`(vClientFk INT)
BEGIN
/* Reparte el saldo de un cliente en greuge en la cartera que corresponde, y desasigna el comercial
diff --git a/db/routines/vn/procedures/clientFreeze.sql b/db/routines/vn/procedures/clientFreeze.sql
index c89db2316..727311174 100644
--- a/db/routines/vn/procedures/clientFreeze.sql
+++ b/db/routines/vn/procedures/clientFreeze.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientFreeze`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientFreeze`()
BEGIN
/**
* Congela diariamente aquellos clientes que son morosos sin recobro,
diff --git a/db/routines/vn/procedures/clientGetDebtDiary.sql b/db/routines/vn/procedures/clientGetDebtDiary.sql
index bd7a0b292..c4a52ab74 100644
--- a/db/routines/vn/procedures/clientGetDebtDiary.sql
+++ b/db/routines/vn/procedures/clientGetDebtDiary.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientGetDebtDiary`(vClientFK INT, vCompanyFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientGetDebtDiary`(vClientFK INT, vCompanyFk INT)
BEGIN
/**
* Devuelve el registro de deuda
diff --git a/db/routines/vn/procedures/clientGreugeSpray.sql b/db/routines/vn/procedures/clientGreugeSpray.sql
index c337e2dd3..2007d13a5 100644
--- a/db/routines/vn/procedures/clientGreugeSpray.sql
+++ b/db/routines/vn/procedures/clientGreugeSpray.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientGreugeSpray`(IN vClientFk INT, IN onlyForHisOwner BOOL, IN vWorkerCode VARCHAR(3), IN vWithMana BOOLEAN)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientGreugeSpray`(IN vClientFk INT, IN onlyForHisOwner BOOL, IN vWorkerCode VARCHAR(3), IN vWithMana BOOLEAN)
BEGIN
DECLARE vGreuge DECIMAL(10,2);
diff --git a/db/routines/vn/procedures/clientPackagingOverstock.sql b/db/routines/vn/procedures/clientPackagingOverstock.sql
index fcd34c41b..901236bf8 100644
--- a/db/routines/vn/procedures/clientPackagingOverstock.sql
+++ b/db/routines/vn/procedures/clientPackagingOverstock.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientPackagingOverstock`(vClientFk INT, vGraceDays INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientPackagingOverstock`(vClientFk INT, vGraceDays INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.clientPackagingOverstock;
CREATE TEMPORARY TABLE tmp.clientPackagingOverstock
diff --git a/db/routines/vn/procedures/clientPackagingOverstockReturn.sql b/db/routines/vn/procedures/clientPackagingOverstockReturn.sql
index ac37bbc8d..a05e11d1b 100644
--- a/db/routines/vn/procedures/clientPackagingOverstockReturn.sql
+++ b/db/routines/vn/procedures/clientPackagingOverstockReturn.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientPackagingOverstockReturn`(vClientFk INT, vGraceDays INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientPackagingOverstockReturn`(vClientFk INT, vGraceDays INT)
BEGIN
DECLARE vNewTicket INT DEFAULT 0;
DECLARE vWarehouseFk INT;
diff --git a/db/routines/vn/procedures/clientRemoveWorker.sql b/db/routines/vn/procedures/clientRemoveWorker.sql
index 15d247c67..e2a6b8013 100644
--- a/db/routines/vn/procedures/clientRemoveWorker.sql
+++ b/db/routines/vn/procedures/clientRemoveWorker.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientRemoveWorker`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientRemoveWorker`()
BEGIN
DECLARE vDone BOOL DEFAULT FALSE;
DECLARE vClientFk INT;
diff --git a/db/routines/vn/procedures/clientRisk_update.sql b/db/routines/vn/procedures/clientRisk_update.sql
index 30ab3265f..2a7644b30 100644
--- a/db/routines/vn/procedures/clientRisk_update.sql
+++ b/db/routines/vn/procedures/clientRisk_update.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clientRisk_update`(vClientId INT, vCompanyId INT, vAmount DECIMAL(10,2))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`clientRisk_update`(vClientId INT, vCompanyId INT, vAmount DECIMAL(10,2))
BEGIN
IF vAmount IS NOT NULL
THEN
diff --git a/db/routines/vn/procedures/client_RandomList.sql b/db/routines/vn/procedures/client_RandomList.sql
index 2bd0d609b..92b460522 100644
--- a/db/routines/vn/procedures/client_RandomList.sql
+++ b/db/routines/vn/procedures/client_RandomList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_RandomList`(vNumber INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_RandomList`(vNumber INT)
BEGIN
DECLARE i INT DEFAULT 0;
diff --git a/db/routines/vn/procedures/client_checkBalance.sql b/db/routines/vn/procedures/client_checkBalance.sql
index 210fcc00f..c5ea717a2 100644
--- a/db/routines/vn/procedures/client_checkBalance.sql
+++ b/db/routines/vn/procedures/client_checkBalance.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL)
BEGIN
/**
* Compara los datos de nuestros clientes con
diff --git a/db/routines/vn/procedures/client_create.sql b/db/routines/vn/procedures/client_create.sql
index f2321e129..3df3df905 100644
--- a/db/routines/vn/procedures/client_create.sql
+++ b/db/routines/vn/procedures/client_create.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_create`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_create`(
vFirstname VARCHAR(50),
vSurnames VARCHAR(50),
vFi VARCHAR(9),
diff --git a/db/routines/vn/procedures/client_getDebt.sql b/db/routines/vn/procedures/client_getDebt.sql
index 3eaace4e9..e5726f2c1 100644
--- a/db/routines/vn/procedures/client_getDebt.sql
+++ b/db/routines/vn/procedures/client_getDebt.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_getDebt`(vDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_getDebt`(vDate DATE)
BEGIN
/**
* Calculates the risk for active clients
diff --git a/db/routines/vn/procedures/client_getMana.sql b/db/routines/vn/procedures/client_getMana.sql
index f5bb5747d..7b5e01e38 100644
--- a/db/routines/vn/procedures/client_getMana.sql
+++ b/db/routines/vn/procedures/client_getMana.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_getMana`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_getMana`()
BEGIN
/**
* Devuelve el mana de los clientes de la tabla tmp.client(id)
diff --git a/db/routines/vn/procedures/client_getRisk.sql b/db/routines/vn/procedures/client_getRisk.sql
index 106284c2f..afe34a5e1 100644
--- a/db/routines/vn/procedures/client_getRisk.sql
+++ b/db/routines/vn/procedures/client_getRisk.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_getRisk`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_getRisk`(
vDate DATE
)
BEGIN
diff --git a/db/routines/vn/procedures/client_unassignSalesPerson.sql b/db/routines/vn/procedures/client_unassignSalesPerson.sql
index 8773104ca..720a94722 100644
--- a/db/routines/vn/procedures/client_unassignSalesPerson.sql
+++ b/db/routines/vn/procedures/client_unassignSalesPerson.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_unassignSalesPerson`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_unassignSalesPerson`()
BEGIN
/**
* Elimina la asignación de salesPersonFk de la ficha del clientes
diff --git a/db/routines/vn/procedures/client_userDisable.sql b/db/routines/vn/procedures/client_userDisable.sql
index f2ba65c1c..1a7c9846b 100644
--- a/db/routines/vn/procedures/client_userDisable.sql
+++ b/db/routines/vn/procedures/client_userDisable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_userDisable`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_userDisable`()
BEGIN
/**
* Desactiva los clientes inactivos en los últimos X meses.
@@ -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
diff --git a/db/routines/vn/procedures/cmrPallet_add.sql b/db/routines/vn/procedures/cmrPallet_add.sql
index 2267cd312..befd3d09c 100644
--- a/db/routines/vn/procedures/cmrPallet_add.sql
+++ b/db/routines/vn/procedures/cmrPallet_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`cmrPallet_add`(vExpeditionPalletFk INT, vCmrFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`cmrPallet_add`(vExpeditionPalletFk INT, vCmrFk INT)
BEGIN
/**
* Añade registro a tabla cmrPallet.
diff --git a/db/routines/vn/procedures/collectionPlacement_get.sql b/db/routines/vn/procedures/collectionPlacement_get.sql
index 3fb3339e7..d81847375 100644
--- a/db/routines/vn/procedures/collectionPlacement_get.sql
+++ b/db/routines/vn/procedures/collectionPlacement_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collectionPlacement_get`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collectionPlacement_get`(
vParamFk INT(11),
vIsPicker bool)
BEGIN
diff --git a/db/routines/vn/procedures/collection_addItem.sql b/db/routines/vn/procedures/collection_addItem.sql
index b5bc91c67..7cd374181 100644
--- a/db/routines/vn/procedures/collection_addItem.sql
+++ b/db/routines/vn/procedures/collection_addItem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_addItem`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_addItem`(
vBarccodeFk INT,
vQuantity INT,
vTicketFk INT
diff --git a/db/routines/vn/procedures/collection_addWithReservation.sql b/db/routines/vn/procedures/collection_addWithReservation.sql
index e3f4eb8d2..cc0b7fd9b 100644
--- a/db/routines/vn/procedures/collection_addWithReservation.sql
+++ b/db/routines/vn/procedures/collection_addWithReservation.sql
@@ -1,9 +1,10 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_addWithReservation`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_addWithReservation`(
vItemFk INT,
vQuantity INT,
vTicketFk INT,
- vSaleGroupFk INT
+ vSaleGroupFk INT,
+ vSectorFk INT
)
BEGIN
/**
@@ -67,7 +68,7 @@ BEGIN
SELECT LAST_INSERT_ID() INTO vSaleFk;
CALL sale_calculateComponent(vSaleFk, NULL);
- CALL itemShelvingSale_addBySale(vSaleFk);
+ CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk);
IF NOT EXISTS (SELECT TRUE FROM itemShelvingSale WHERE saleFk = vSaleFk LIMIT 1) THEN
SET vHasThrow = TRUE;
diff --git a/db/routines/vn/procedures/collection_assign.sql b/db/routines/vn/procedures/collection_assign.sql
index f9032a91d..ba83f1fbb 100644
--- a/db/routines/vn/procedures/collection_assign.sql
+++ b/db/routines/vn/procedures/collection_assign.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_assign`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_assign`(
vUserFk INT,
OUT vCollectionFk INT
)
@@ -13,39 +13,42 @@ BEGIN
* @param vCollectionFk Id de colección
*/
DECLARE vHasTooMuchCollections BOOL;
- DECLARE vItemPackingTypeFk VARCHAR(1);
- DECLARE vWarehouseFk INT;
- DECLARE vLockName VARCHAR(215);
- DECLARE vLockTime INT DEFAULT 30;
- DECLARE vErrorNumber INT;
- DECLARE vErrorMsg TEXT;
+ DECLARE vDone BOOL DEFAULT FALSE;
+ DECLARE vCollectionWorker INT;
+ DECLARE vMaxNotAssignedCollectionLifeTime TIME;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- GET DIAGNOSTICS CONDITION 1
- vErrorNumber = MYSQL_ERRNO,
- vErrorMsg = MESSAGE_TEXT;
-
- CALL util.debugAdd('collection_assign', JSON_OBJECT(
- 'errorNumber', vErrorNumber,
- 'errorMsg', vErrorMsg,
- 'lockName', vLockName,
- 'userFk', vUserFk
- )); -- Tmp
-
- IF vLockName IS NOT NULL THEN
- DO RELEASE_LOCK(vLockName);
- END IF;
- RESIGNAL;
- END;
+ DECLARE vCollections CURSOR FOR
+ WITH collections AS (
+ SELECT tc.collectionFk,
+ SUM(sv.volume) volume,
+ c.saleTotalCount,
+ c.itemPackingTypeFk,
+ c.trainFk,
+ c.warehouseFk,
+ c.wagons
+ FROM vn.ticketCollection tc
+ JOIN vn.collection c ON c.id = tc.collectionFk
+ JOIN vn.saleVolume sv ON sv.ticketFk = tc.ticketFk
+ WHERE c.workerFk IS NULL
+ AND sv.shipped >= util.VN_CURDATE()
+ GROUP BY tc.collectionFk
+ ) SELECT c.collectionFk
+ FROM collections c
+ JOIN vn.operator o
+ WHERE o.workerFk = vUserFk
+ AND (c.saleTotalCount <= o.linesLimit OR o.linesLimit IS NULL)
+ AND (c.itemPackingTypeFk = o.itemPackingTypeFk OR o.itemPackingTypeFk IS NULL)
+ AND o.numberOfWagons = c.wagons
+ AND o.trainFk = c.trainFk
+ AND o.warehouseFk = c.warehouseFk;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
-- Si hay colecciones sin terminar, sale del proceso
+
CALL collection_get(vUserFk);
- SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0,
- collection_assign_lockname
- INTO vHasTooMuchCollections,
- vLockName
+ SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, pc.maxNotAssignedCollectionLifeTime
+ INTO vHasTooMuchCollections, vMaxNotAssignedCollectionLifeTime
FROM productionConfig pc
LEFT JOIN tmp.collection ON TRUE;
@@ -55,69 +58,69 @@ BEGIN
CALL util.throw('Hay colecciones pendientes');
END IF;
- SELECT warehouseFk, itemPackingTypeFk
- INTO vWarehouseFk, vItemPackingTypeFk
- FROM operator
- WHERE workerFk = vUserFk;
-
- SET vLockName = CONCAT_WS('/',
- vLockName,
- vWarehouseFk,
- vItemPackingTypeFk
- );
-
- IF NOT GET_LOCK(vLockName, vLockTime) THEN
- CALL util.throw(CONCAT('Cannot get lock: ', vLockName));
- END IF;
-
-- Se eliminan las colecciones sin asignar que estan obsoletas
- INSERT INTO ticketTracking(stateFk, ticketFk)
- SELECT s.id, tc.ticketFk
- FROM `collection` c
- JOIN ticketCollection tc ON tc.collectionFk = c.id
- JOIN `state` s ON s.code = 'PRINTED_AUTO'
- JOIN productionConfig pc
- WHERE c.workerFk IS NULL
- AND TIMEDIFF(util.VN_NOW(), c.created) > pc.maxNotAssignedCollectionLifeTime;
- DELETE c.*
- FROM `collection` c
- JOIN productionConfig pc
- WHERE c.workerFk IS NULL
- AND TIMEDIFF(util.VN_NOW(), c.created) > pc.maxNotAssignedCollectionLifeTime;
+ INSERT INTO ticketTracking(stateFk, ticketFk)
+ SELECT s.id, tc.ticketFk
+ FROM `collection` c
+ JOIN ticketCollection tc ON tc.collectionFk = c.id
+ JOIN `state` s ON s.code = 'PRINTED_AUTO'
+ WHERE c.workerFk IS NULL
+ AND TIMEDIFF(util.VN_NOW(), c.created) > vMaxNotAssignedCollectionLifeTime;
+
+ DELETE FROM `collection`
+ WHERE workerFk IS NULL
+ AND TIMEDIFF(util.VN_NOW(), created) > vMaxNotAssignedCollectionLifeTime;
-- Se añade registro al semillero
- INSERT INTO collectionHotbed(userFk)
- VALUES(vUserFk);
+
+ INSERT INTO collectionHotbed(userFk) VALUES(vUserFk);
-- Comprueba si hay colecciones disponibles que se ajustan a su configuracion
- SELECT MIN(c.id) INTO vCollectionFk
- FROM `collection` c
- JOIN operator o
- ON (o.itemPackingTypeFk = c.itemPackingTypeFk OR c.itemPackingTypeFk IS NULL)
- AND o.numberOfWagons = c.wagons
- AND o.trainFk = c.trainFk
- AND o.warehouseFk = c.warehouseFk
- AND c.workerFk IS NULL
- AND (c.saleTotalCount <= o.linesLimit OR o.linesLimit IS NULL)
- JOIN (
- SELECT tc.collectionFk, SUM(sv.volume) volume
- FROM ticketCollection tc
- JOIN saleVolume sv ON sv.ticketFk = tc.ticketFk
- WHERE sv.shipped >= util.VN_CURDATE()
- GROUP BY tc.collectionFk
- ) sub ON sub.collectionFk = c.id
- AND (volume <= o.volumeLimit OR o.volumeLimit IS NULL)
- WHERE o.workerFk = vUserFk;
+
+ OPEN vCollections;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vCollections INTO vCollectionFk;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ BEGIN
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ SET vCollectionFk = NULL;
+ RESIGNAL;
+ END;
+
+ START TRANSACTION;
+
+ SELECT workerFk INTO vCollectionWorker
+ FROM `collection`
+ WHERE id = vCollectionFk FOR UPDATE;
+
+ IF vCollectionWorker IS NULL THEN
+ UPDATE `collection`
+ SET workerFk = vUserFk
+ WHERE id = vCollectionFk;
+
+ COMMIT;
+ LEAVE l;
+ END IF;
+
+ ROLLBACK;
+ END;
+ END LOOP;
+ CLOSE vCollections;
IF vCollectionFk IS NULL THEN
CALL collection_new(vUserFk, vCollectionFk);
+
+ UPDATE `collection`
+ SET workerFk = vUserFk
+ WHERE id = vCollectionFk;
END IF;
-
- UPDATE `collection`
- SET workerFk = vUserFk
- WHERE id = vCollectionFk;
-
- DO RELEASE_LOCK(vLockName);
END$$
-DELIMITER ;
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/collection_get.sql b/db/routines/vn/procedures/collection_get.sql
index d29f14ca9..7da3d364e 100644
--- a/db/routines/vn/procedures/collection_get.sql
+++ b/db/routines/vn/procedures/collection_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_get`(vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_get`(vWorkerFk INT)
BEGIN
/**
* Obtiene colección del sacador si tiene líneas pendientes.
diff --git a/db/routines/vn/procedures/collection_getAssigned.sql b/db/routines/vn/procedures/collection_getAssigned.sql
index 947b53229..518e2dd7b 100644
--- a/db/routines/vn/procedures/collection_getAssigned.sql
+++ b/db/routines/vn/procedures/collection_getAssigned.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_getAssigned`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_getAssigned`(
vUserFk INT,
OUT vCollectionFk INT
)
diff --git a/db/routines/vn/procedures/collection_getTickets.sql b/db/routines/vn/procedures/collection_getTickets.sql
index 7ecff571a..0f675041a 100644
--- a/db/routines/vn/procedures/collection_getTickets.sql
+++ b/db/routines/vn/procedures/collection_getTickets.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_getTickets`(vParamFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_getTickets`(vParamFk INT)
BEGIN
/**
* Selecciona los tickets de una colección/ticket/sectorCollection
diff --git a/db/routines/vn/procedures/collection_kill.sql b/db/routines/vn/procedures/collection_kill.sql
index f80fea512..298e4a7d1 100644
--- a/db/routines/vn/procedures/collection_kill.sql
+++ b/db/routines/vn/procedures/collection_kill.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_kill`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_kill`(vSelf INT)
BEGIN
/**
* Elimina una coleccion y coloca sus tickets en OK
diff --git a/db/routines/vn/procedures/collection_make.sql b/db/routines/vn/procedures/collection_make.sql
index b5b728000..5deb54f74 100644
--- a/db/routines/vn/procedures/collection_make.sql
+++ b/db/routines/vn/procedures/collection_make.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_make`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_make`()
proc:BEGIN
/**
* Genera colecciones de tickets sin asignar trabajador a partir de la tabla
diff --git a/db/routines/vn/procedures/collection_mergeSales.sql b/db/routines/vn/procedures/collection_mergeSales.sql
new file mode 100644
index 000000000..26444d6f9
--- /dev/null
+++ b/db/routines/vn/procedures/collection_mergeSales.sql
@@ -0,0 +1,29 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_mergeSales`(vCollectionFk INT)
+BEGIN
+ DECLARE vDone BOOL;
+ DECLARE vTicketFk INT;
+
+ DECLARE vTickets CURSOR FOR
+ SELECT ticketFk
+ FROM ticketCollection
+ WHERE collectionFk = vCollectionFk;
+
+ 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 ticket_mergeSales(vTicketFk);
+ END LOOP;
+ CLOSE vTickets;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/collection_new.sql b/db/routines/vn/procedures/collection_new.sql
index 0bd6e1b25..a5a9a61c7 100644
--- a/db/routines/vn/procedures/collection_new.sql
+++ b/db/routines/vn/procedures/collection_new.sql
@@ -1,5 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_new`(vUserFk INT, OUT vCollectionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_new`(
+ vUserFk INT,
+ OUT vCollectionFk INT
+)
BEGIN
/**
* Genera colecciones de tickets sin asignar trabajador.
@@ -9,32 +12,32 @@ 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 vSizeLimit INT;
DECLARE vTicketVolume DECIMAL;
DECLARE vMaxTickets INT;
- DECLARE vStateFk VARCHAR(45);
+ DECLARE vStateCode VARCHAR(45);
DECLARE vFirstTicketFk INT;
- DECLARE vHour INT;
- DECLARE vMinute INT;
DECLARE vWorkerCode VARCHAR(3);
- DECLARE vWagonCounter INT DEFAULT 0;
+ DECLARE vWagonCounter INT DEFAULT 1;
DECLARE vTicketFk INT;
DECLARE vItemPackingTypeFk VARCHAR(1);
- DECLARE vHasAssignedTickets BOOLEAN;
+ DECLARE vHasAssignedTickets BOOL;
DECLARE vHasUniqueCollectionTime BOOL;
- DECLARE vDone INT DEFAULT FALSE;
- DECLARE vLockName VARCHAR(215);
- DECLARE vLockTime INT DEFAULT 30;
+ DECLARE vHeight INT;
+ DECLARE vVolume INT;
+ DECLARE vLiters INT;
+ DECLARE vLines INT;
+ DECLARE vTotalLines INT DEFAULT 0;
+ DECLARE vTotalVolume INT DEFAULT 0;
DECLARE vFreeWagonFk INT;
- DECLARE vErrorNumber INT;
- DECLARE vErrorMsg TEXT;
+ DECLARE vDone INT DEFAULT FALSE;
- DECLARE c1 CURSOR FOR
+ DECLARE vTickets CURSOR FOR
SELECT ticketFk, `lines`, m3
FROM tmp.productionBuffer
- WHERE ticketFk <> vFirstTicketFk
ORDER BY HH,
mm,
productionOrder DESC,
@@ -47,26 +50,6 @@ BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- GET DIAGNOSTICS CONDITION 1
- vErrorNumber = MYSQL_ERRNO,
- vErrorMsg = MESSAGE_TEXT;
-
- CALL util.debugAdd('collection_new', JSON_OBJECT(
- 'errorNumber', vErrorNumber,
- 'errorMsg', vErrorMsg,
- 'lockName', vLockName,
- 'userFk', vUserFk,
- 'ticketFk', vTicketFk
- )); -- Tmp
-
- IF vLockName IS NOT NULL THEN
- DO RELEASE_LOCK(vLockName);
- END IF;
- RESIGNAL;
- END;
-
SELECT pc.ticketTrolleyMax * o.numberOfWagons,
pc.hasUniqueCollectionTime,
w.code,
@@ -77,34 +60,26 @@ BEGIN
o.trainFk,
o.linesLimit,
o.volumeLimit,
- pc.collection_new_lockname
+ o.sizeLimit
INTO vMaxTickets,
- vHasUniqueCollectionTime,
- vWorkerCode,
- vWarehouseFk,
- vItemPackingTypeFk,
- vStateFk,
- vWagons,
- vTrainFk,
- vLinesLimit,
- vVolumeLimit,
- vLockName
- FROM productionConfig pc
- JOIN worker w ON w.id = vUserFk
+ vHasUniqueCollectionTime,
+ vWorkerCode,
+ vWarehouseFk,
+ vItemPackingTypeFk,
+ vStateCode,
+ vWagons,
+ vTrainFk,
+ vLinesLimit,
+ vVolumeLimit,
+ vSizeLimit
+ FROM worker w
+ JOIN operator o ON o.workerFk = w.id
JOIN state st ON st.`code` = 'ON_PREPARATION'
- JOIN operator o ON o.workerFk = vUserFk;
-
- SET vLockName = CONCAT_WS('/',
- vLockName,
- vWarehouseFk,
- vItemPackingTypeFk
- );
-
- IF NOT GET_LOCK(vLockName, vLockTime) THEN
- CALL util.throw(CONCAT('Cannot get lock: ', vLockName));
- END IF;
+ JOIN productionConfig pc
+ WHERE w.id = vUserFk;
-- Se prepara el tren, con tantos vagones como sea necesario.
+
CREATE OR REPLACE TEMPORARY TABLE tTrain
(wagon INT,
shelve INT,
@@ -115,63 +90,70 @@ BEGIN
PRIMARY KEY(wagon, shelve))
ENGINE = MEMORY;
- WHILE vWagons > vWagonCounter DO
- SET vWagonCounter = vWagonCounter + 1;
-
- INSERT INTO tTrain(wagon, shelve, liters, `lines`, height)
- SELECT vWagonCounter, cv.`level` , cv.liters , cv.`lines` , cv.height
- FROM collectionVolumetry cv
- WHERE cv.trainFk = vTrainFk
+ INSERT INTO tTrain (wagon, shelve, liters, `lines`, height)
+ WITH RECURSIVE wagonSequence AS (
+ SELECT vWagonCounter wagon
+ UNION ALL
+ SELECT wagon + 1 wagon
+ FROM wagonSequence
+ WHERE wagon < vWagonCounter + vWagons -1
+ )
+ SELECT ws.wagon, cv.`level`, cv.liters, cv.`lines`, cv.height
+ FROM wagonSequence ws
+ JOIN vn.collectionVolumetry cv ON cv.trainFk = vTrainFk
AND cv.itemPackingTypeFk = vItemPackingTypeFk;
- END WHILE;
-- Esto desaparecerá cuando tengamos la table cache.ticket
+
CALL productionControl(vWarehouseFk, 0);
ALTER TABLE tmp.productionBuffer
ADD COLUMN liters INT,
ADD COLUMN height INT;
- -- Se obtiene nº de colección.
- INSERT INTO collection
- SET itemPackingTypeFk = vItemPackingTypeFk,
- trainFk = vTrainFk,
- wagons = vWagons,
- warehouseFk = vWarehouseFk;
-
- SELECT LAST_INSERT_ID() INTO vCollectionFk;
-
-- Los tickets de recogida en Algemesí sólo se sacan si están asignados.
-- Los pedidos con riesgo no se sacan aunque se asignen.
- DELETE pb.*
+
+ DELETE pb
FROM tmp.productionBuffer pb
JOIN state s ON s.id = pb.state
WHERE (pb.agency = 'REC_ALGEMESI'
AND s.code <> 'PICKER_DESIGNED')
OR pb.problem LIKE '%RIESGO%';
- -- Comprobamos si hay tickets asignados. En ese caso, nos centramos
- -- exclusivamente en esos tickets y los sacamos independientemente
- -- de problemas o tamaños
- SELECT COUNT(*) INTO vHasAssignedTickets
- FROM tmp.productionBuffer pb
- JOIN state s ON s.id = pb.state
- WHERE s.code = 'PICKER_DESIGNED'
- AND pb.workerCode = vWorkerCode;
+ -- Si hay tickets asignados, nos centramos exclusivamente en esos tickets
+ -- y los sacamos independientemente de problemas o tamaños
+
+ SELECT EXISTS (
+ SELECT TRUE
+ FROM tmp.productionBuffer pb
+ JOIN state s ON s.id = pb.state
+ WHERE s.code = 'PICKER_DESIGNED'
+ AND pb.workerCode = vWorkerCode
+ ) INTO vHasAssignedTickets;
-- Se dejan en la tabla tmp.productionBuffer sólo aquellos tickets adecuados
+
IF vHasAssignedTickets THEN
- DELETE pb.*
+ DELETE pb
FROM tmp.productionBuffer pb
JOIN state s ON s.id = pb.state
WHERE s.code <> 'PICKER_DESIGNED'
OR pb.workerCode <> vWorkerCode;
ELSE
- DELETE pb.*
+ DELETE pb
FROM tmp.productionBuffer pb
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)
@@ -182,71 +164,65 @@ BEGIN
OR (NOT pb.H AND pb.V > 0 AND vItemPackingTypeFk = 'H')
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 LENGTH(pb.problem)
+ OR pb.lines > vLinesLimit
+ OR pb.m3 > vVolumeLimit
+ OR sub.maxSize > vSizeLimit;
END IF;
- -- Es importante que el primer ticket se coja en todos los casos
- SELECT ticketFk,
- HH,
- mm,
- `lines`,
- m3
- INTO vFirstTicketFk,
- vHour,
- vMinute,
- vTicketLines,
- vTicketVolume
- FROM tmp.productionBuffer
- ORDER BY HH,
- mm,
- productionOrder DESC,
- m3 DESC,
- agency,
- zona,
- routeFk,
- ticketFk
- LIMIT 1;
-
-- Hay que excluir aquellos que no tengan la misma hora de preparacion, si procede
IF vHasUniqueCollectionTime THEN
- DELETE FROM tmp.productionBuffer
- WHERE HH <> vHour
- OR mm <> vMinute;
+
+ SELECT ticketFk INTO vFirstTicketFk
+ FROM tmp.productionBuffer
+ ORDER BY HH,
+ mm,
+ productionOrder DESC,
+ m3 DESC,
+ agency,
+ zona,
+ routeFk,
+ ticketFk
+ LIMIT 1;
+
+ DELETE pb
+ FROM tmp.productionBuffer pb
+ JOIN tmp.productionBuffer pb2 ON pb2.ticketFk = vFirstTicketFk
+ AND (pb.HH <> pb2.HH OR pb.mm <> pb2.mm);
+
END IF;
- SET vTicketFk = vFirstTicketFk;
- SET @lines = 0;
- SET @volume = 0;
-
- OPEN c1;
- read_loop: LOOP
+ OPEN vTickets;
+ l: LOOP
SET vDone = FALSE;
+ FETCH vTickets INTO vTicketFk, vTicketLines, vTicketVolume;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
-- Buscamos un ticket que cumpla con los requisitos en el listado
- IF ((vTicketLines + @lines) <= vLinesLimit OR vLinesLimit IS NULL)
- AND ((vTicketVolume + @volume) <= vVolumeLimit OR vVolumeLimit IS NULL) THEN
+
+ IF (vLinesLimit IS NULL OR (vTotalLines + vTicketLines) <= vLinesLimit)
+ AND (vVolumeLimit IS NULL OR (vTotalVolume + vTicketVolume) <= vVolumeLimit) THEN
CALL ticket_splitItemPackingType(vTicketFk, vItemPackingTypeFk);
DROP TEMPORARY TABLE tmp.ticketIPT;
+ SELECT COUNT(*), SUM(litros), MAX(i.`size`), SUM(sv.volume)
+ INTO vLines, vLiters, vHeight, vVolume
+ FROM saleVolume sv
+ JOIN sale s ON s.id = sv.saleFk
+ JOIN item i ON i.id = s.itemFk
+ WHERE sv.ticketFk = vTicketFk;
+
+ SET vTotalVolume = vTotalVolume + vVolume,
+ vTotalLines = vTotalLines + vLines;
+
UPDATE tmp.productionBuffer pb
- JOIN (
- SELECT SUM(litros) liters,
- @lines:= COUNT(*) + @lines,
- COUNT(*) `lines`,
- MAX(i.`size`) height,
- @volume := SUM(sv.volume) + @volume,
- SUM(sv.volume) volume
- FROM saleVolume sv
- JOIN sale s ON s.id = sv.saleFk
- JOIN item i ON i.id = s.itemFk
- WHERE sv.ticketFk = vTicketFk
- ) sub
- SET pb.liters = sub.liters,
- pb.`lines` = sub.`lines`,
- pb.height = sub.height
+ SET pb.liters = vLiters,
+ pb.`lines` = vLines,
+ pb.height = vHeight
WHERE pb.ticketFk = vTicketFk;
UPDATE tTrain tt
@@ -263,17 +239,13 @@ BEGIN
tt.height
LIMIT 1;
- -- Si no le encuentra una balda adecuada, intentamos darle un carro entero si queda alguno libre
+ -- Si no le encuentra una balda, intentamos darle un carro entero libre
+
IF NOT (SELECT COUNT(*) FROM tTrain WHERE ticketFk) THEN
- SELECT tt.wagon
- INTO vFreeWagonFk
- FROM tTrain tt
- LEFT JOIN (
- SELECT DISTINCT wagon
- FROM tTrain
- WHERE ticketFk IS NOT NULL
- ) nn ON nn.wagon = tt.wagon
- WHERE nn.wagon IS NULL
+ SELECT wagon INTO vFreeWagonFk
+ FROM tTrain
+ GROUP BY wagon
+ HAVING SUM(IFNULL(ticketFk, 0)) = 0
ORDER BY wagon
LIMIT 1;
@@ -282,38 +254,35 @@ BEGIN
SET ticketFk = vFirstTicketFk
WHERE wagon = vFreeWagonFk;
- -- Se anulan el resto de carros libres para que sólo uno lleve un pedido excesivo
- DELETE tt.*
- FROM tTrain tt
- LEFT JOIN (
- SELECT DISTINCT wagon
- FROM tTrain
- WHERE ticketFk IS NOT NULL
- ) nn ON nn.wagon = tt.wagon
- WHERE nn.wagon IS NULL;
- END IF;
- END IF;
+ -- Se anulan el resto de carros libres,
+ -- máximo un carro con pedido excesivo
- FETCH c1 INTO vTicketFk, vTicketLines, vTicketVolume;
- IF vDone OR NOT (SELECT COUNT(*) FROM tTrain WHERE ticketFk IS NULL) THEN
- LEAVE read_loop;
- END IF;
- ELSE
- FETCH c1 INTO vTicketFk, vTicketLines, vTicketVolume;
- IF vDone THEN
- LEAVE read_loop;
- END IF;
+ DELETE tt
+ FROM tTrain tt
+ JOIN (SELECT wagon
+ FROM tTrain
+ GROUP BY wagon
+ HAVING SUM(IFNULL(ticketFk, 0)) = 0
+ ) sub ON sub.wagon = tt.wagon;
+ END IF;
+ END IF;
END IF;
END LOOP;
- CLOSE c1;
+ CLOSE vTickets;
IF (SELECT COUNT(*) FROM tTrain WHERE ticketFk) THEN
- UPDATE collection c
- JOIN state st ON st.code = 'ON_PREPARATION'
- SET c.stateFk = st.id
- WHERE c.id = vCollectionFk;
+ -- Se obtiene nº de colección
+
+ INSERT INTO collection
+ SET itemPackingTypeFk = vItemPackingTypeFk,
+ trainFk = vTrainFk,
+ wagons = vWagons,
+ warehouseFk = vWarehouseFk;
+
+ SELECT LAST_INSERT_ID() INTO vCollectionFk;
-- Asigna las bandejas
+
INSERT IGNORE INTO ticketCollection(ticketFk, collectionFk, `level`, wagon, liters)
SELECT tt.ticketFk, vCollectionFk, tt.shelve, tt.wagon, tt.liters
FROM tTrain tt
@@ -321,37 +290,34 @@ BEGIN
ORDER BY tt.wagon, tt.shelve;
-- Actualiza el estado de los tickets
- CALL collection_setState(vCollectionFk, vStateFk);
+
+ CALL collection_setState(vCollectionFk, vStateCode);
-- Aviso para la preparacion previa
+
INSERT INTO ticketDown(ticketFk, collectionFk)
SELECT tc.ticketFk, tc.collectionFk
FROM ticketCollection tc
WHERE tc.collectionFk = vCollectionFk;
- CALL sales_mergeByCollection(vCollectionFk);
+ CALL collection_mergeSales(vCollectionFk);
UPDATE `collection` c
- JOIN (
+ JOIN(
SELECT COUNT(*) saleTotalCount,
SUM(s.isPicked <> 0) salePickedCount
FROM ticketCollection tc
JOIN sale s ON s.ticketFk = tc.ticketFk
- WHERE tc.collectionFk = vCollectionFk
- AND s.quantity > 0
- ) sub
+ WHERE tc.collectionFk = vCollectionFk
+ AND s.quantity > 0
+ )sub
SET c.saleTotalCount = sub.saleTotalCount,
c.salePickedCount = sub.salePickedCount
WHERE c.id = vCollectionFk;
-
ELSE
- DELETE FROM `collection`
- WHERE id = vCollectionFk;
- SET vCollectionFk = NULL;
+ SET vCollectionFk = NULL;
END IF;
- DO RELEASE_LOCK(vLockName);
-
DROP TEMPORARY TABLE
tTrain,
tmp.productionBuffer;
diff --git a/db/routines/vn/procedures/collection_printSticker.sql b/db/routines/vn/procedures/collection_printSticker.sql
index 50259152d..a18d4d7d9 100644
--- a/db/routines/vn/procedures/collection_printSticker.sql
+++ b/db/routines/vn/procedures/collection_printSticker.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_printSticker`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_printSticker`(
vSelf INT,
vLabelCount INT
)
diff --git a/db/routines/vn/procedures/collection_setParking.sql b/db/routines/vn/procedures/collection_setParking.sql
index 5f6ca75da..68b81ba30 100644
--- a/db/routines/vn/procedures/collection_setParking.sql
+++ b/db/routines/vn/procedures/collection_setParking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_setParking`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_setParking`(
vSelf INT,
vParkingFk INT
)
diff --git a/db/routines/vn/procedures/collection_setState.sql b/db/routines/vn/procedures/collection_setState.sql
index 2d33c53d6..5f8a7afa2 100644
--- a/db/routines/vn/procedures/collection_setState.sql
+++ b/db/routines/vn/procedures/collection_setState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_setState`(vSelf INT, vStateCode VARCHAR(255) COLLATE utf8_general_ci)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_setState`(vSelf INT, vStateCode VARCHAR(255) COLLATE utf8_general_ci)
BEGIN
/**
* Modifica el estado de los tickets de una colección.
diff --git a/db/routines/vn/procedures/company_getFiscaldata.sql b/db/routines/vn/procedures/company_getFiscaldata.sql
index 7c56382e9..675e19379 100644
--- a/db/routines/vn/procedures/company_getFiscaldata.sql
+++ b/db/routines/vn/procedures/company_getFiscaldata.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`company_getFiscaldata`(workerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`company_getFiscaldata`(workerFk INT)
BEGIN
DECLARE vCompanyFk INT;
@@ -7,7 +7,7 @@ DECLARE vCompanyFk INT;
SELECT IFNULL(uc.companyFk, rc.defaultCompanyFk)
INTO vCompanyFk
FROM vn.routeConfig rc
- LEFT JOIN userConfig uc ON uc.userFk = workerFk;
+ LEFT JOIN userMultiConfig uc ON uc.userFk = workerFk;
SELECT
diff --git a/db/routines/vn/procedures/company_getSuppliersDebt.sql b/db/routines/vn/procedures/company_getSuppliersDebt.sql
index 83043f337..84d931542 100644
--- a/db/routines/vn/procedures/company_getSuppliersDebt.sql
+++ b/db/routines/vn/procedures/company_getSuppliersDebt.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`company_getSuppliersDebt`(vSelf INT, vMonthsAgo INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`company_getSuppliersDebt`(vSelf INT, vMonthsAgo INT)
BEGIN
/**
* Generates a temporary table containing outstanding payments to suppliers.
diff --git a/db/routines/vn/procedures/comparative_add.sql b/db/routines/vn/procedures/comparative_add.sql
index 44f9686aa..5aaa440aa 100644
--- a/db/routines/vn/procedures/comparative_add.sql
+++ b/db/routines/vn/procedures/comparative_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`comparative_add`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`comparative_add`()
BEGIN
/**
* Inserts sales records less than one month old in comparative.
diff --git a/db/routines/vn/procedures/confection_controlSource.sql b/db/routines/vn/procedures/confection_controlSource.sql
index f011a52e9..837916038 100644
--- a/db/routines/vn/procedures/confection_controlSource.sql
+++ b/db/routines/vn/procedures/confection_controlSource.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`confection_controlSource`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`confection_controlSource`(
vDated DATE,
vScopeDays INT,
vMaxAlertLevel INT,
diff --git a/db/routines/vn/procedures/conveyorExpedition_Add.sql b/db/routines/vn/procedures/conveyorExpedition_Add.sql
index 94cbc88e2..a63cd4946 100644
--- a/db/routines/vn/procedures/conveyorExpedition_Add.sql
+++ b/db/routines/vn/procedures/conveyorExpedition_Add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`conveyorExpedition_Add`(vStarted DATETIME, vEnded DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`conveyorExpedition_Add`(vStarted DATETIME, vEnded DATETIME)
BEGIN
diff --git a/db/routines/vn/procedures/copyComponentsFromSaleList.sql b/db/routines/vn/procedures/copyComponentsFromSaleList.sql
index 8db8409f1..24d2705d0 100644
--- a/db/routines/vn/procedures/copyComponentsFromSaleList.sql
+++ b/db/routines/vn/procedures/copyComponentsFromSaleList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`copyComponentsFromSaleList`(vTargetTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`copyComponentsFromSaleList`(vTargetTicketFk INT)
BEGIN
/* Copy sales and components to the target ticket
diff --git a/db/routines/vn/procedures/createPedidoInterno.sql b/db/routines/vn/procedures/createPedidoInterno.sql
index ecc5e57a5..2adf9e9f3 100644
--- a/db/routines/vn/procedures/createPedidoInterno.sql
+++ b/db/routines/vn/procedures/createPedidoInterno.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`createPedidoInterno`(vItemFk INT,vQuantity INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`createPedidoInterno`(vItemFk INT,vQuantity INT)
BEGIN
diff --git a/db/routines/vn/procedures/creditInsurance_getRisk.sql b/db/routines/vn/procedures/creditInsurance_getRisk.sql
index eccc37ca1..ea19f8aef 100644
--- a/db/routines/vn/procedures/creditInsurance_getRisk.sql
+++ b/db/routines/vn/procedures/creditInsurance_getRisk.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`creditInsurance_getRisk`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`creditInsurance_getRisk`()
BEGIN
/**
* Devuelve el riesgo de los clientes que estan asegurados
diff --git a/db/routines/vn/procedures/creditRecovery.sql b/db/routines/vn/procedures/creditRecovery.sql
index 687d652dd..afdb10dc8 100644
--- a/db/routines/vn/procedures/creditRecovery.sql
+++ b/db/routines/vn/procedures/creditRecovery.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`creditRecovery`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`creditRecovery`()
BEGIN
/**
* Actualiza el crédito de los clientes
diff --git a/db/routines/vn/procedures/crypt.sql b/db/routines/vn/procedures/crypt.sql
index b3517b1ad..54a698f66 100644
--- a/db/routines/vn/procedures/crypt.sql
+++ b/db/routines/vn/procedures/crypt.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`crypt`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255) )
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`crypt`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255) )
BEGIN
DECLARE vEncryptedText VARCHAR(255) DEFAULT '';
diff --git a/db/routines/vn/procedures/cryptOff.sql b/db/routines/vn/procedures/cryptOff.sql
index e0677a0e2..1ad33aa6d 100644
--- a/db/routines/vn/procedures/cryptOff.sql
+++ b/db/routines/vn/procedures/cryptOff.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`cryptOff`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`cryptOff`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255))
BEGIN
DECLARE vUncryptedText VARCHAR(255) DEFAULT '';
diff --git a/db/routines/vn/procedures/department_calcTree.sql b/db/routines/vn/procedures/department_calcTree.sql
index 5a265bd41..4f67cda86 100644
--- a/db/routines/vn/procedures/department_calcTree.sql
+++ b/db/routines/vn/procedures/department_calcTree.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`department_calcTree`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`department_calcTree`()
BEGIN
/**
* Calculates the #path, #lft, #rgt, #sons and #depth columns of
diff --git a/db/routines/vn/procedures/department_calcTreeRec.sql b/db/routines/vn/procedures/department_calcTreeRec.sql
index 77054b17f..bae39f4c5 100644
--- a/db/routines/vn/procedures/department_calcTreeRec.sql
+++ b/db/routines/vn/procedures/department_calcTreeRec.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`department_calcTreeRec`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`department_calcTreeRec`(
vSelf INT,
vPath VARCHAR(255),
vDepth INT,
diff --git a/db/routines/vn/procedures/department_doCalc.sql b/db/routines/vn/procedures/department_doCalc.sql
index 915b9f191..11801a8d1 100644
--- a/db/routines/vn/procedures/department_doCalc.sql
+++ b/db/routines/vn/procedures/department_doCalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`department_doCalc`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`department_doCalc`()
proc: BEGIN
/**
* Recalculates the department tree.
diff --git a/db/routines/vn/procedures/department_getHasMistake.sql b/db/routines/vn/procedures/department_getHasMistake.sql
index 394105a16..21a89a21d 100644
--- a/db/routines/vn/procedures/department_getHasMistake.sql
+++ b/db/routines/vn/procedures/department_getHasMistake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`department_getHasMistake`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`department_getHasMistake`()
BEGIN
/**
diff --git a/db/routines/vn/procedures/department_getLeaves.sql b/db/routines/vn/procedures/department_getLeaves.sql
index 7f1e3cc35..ca8641e35 100644
--- a/db/routines/vn/procedures/department_getLeaves.sql
+++ b/db/routines/vn/procedures/department_getLeaves.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`department_getLeaves`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`department_getLeaves`(
vParentFk INT,
vSearch VARCHAR(255)
)
diff --git a/db/routines/vn/procedures/deviceLog_add.sql b/db/routines/vn/procedures/deviceLog_add.sql
index 8d2310633..5743cd4db 100644
--- a/db/routines/vn/procedures/deviceLog_add.sql
+++ b/db/routines/vn/procedures/deviceLog_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`deviceLog_add`(vWorkerFk INT, vAppName VARCHAR(45), vAppVersion VARCHAR(45), vAndroid_id VARCHAR(64))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`deviceLog_add`(vWorkerFk INT, vAppName VARCHAR(45), vAppVersion VARCHAR(45), vAndroid_id VARCHAR(64))
BEGIN
/**
* Inserta registro en tabla devicelog el log del usuario conectado.
diff --git a/db/routines/vn/procedures/deviceProductionUser_exists.sql b/db/routines/vn/procedures/deviceProductionUser_exists.sql
index f5be6e94f..9b2442c4b 100644
--- a/db/routines/vn/procedures/deviceProductionUser_exists.sql
+++ b/db/routines/vn/procedures/deviceProductionUser_exists.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`deviceProductionUser_exists`(vUserFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`deviceProductionUser_exists`(vUserFk INT)
BEGIN
/* SELECT COUNT(*) AS UserExists
diff --git a/db/routines/vn/procedures/deviceProductionUser_getWorker.sql b/db/routines/vn/procedures/deviceProductionUser_getWorker.sql
index b18339108..d603405cf 100644
--- a/db/routines/vn/procedures/deviceProductionUser_getWorker.sql
+++ b/db/routines/vn/procedures/deviceProductionUser_getWorker.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`deviceProductionUser_getWorker`(vAndroid_id VARCHAR(64))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`deviceProductionUser_getWorker`(vAndroid_id VARCHAR(64))
BEGIN
/**
* Selecciona si hay registrado un device con un android_id
diff --git a/db/routines/vn/procedures/deviceProduction_getnameDevice.sql b/db/routines/vn/procedures/deviceProduction_getnameDevice.sql
index c8a5abfaf..748798e82 100644
--- a/db/routines/vn/procedures/deviceProduction_getnameDevice.sql
+++ b/db/routines/vn/procedures/deviceProduction_getnameDevice.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`deviceProduction_getnameDevice`(vAndroid_id VARCHAR(64))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`deviceProduction_getnameDevice`(vAndroid_id VARCHAR(64))
BEGIN
/**
* Selecciona el id del dispositivo que corresponde al vAndroid_id.
diff --git a/db/routines/vn/procedures/device_checkLogin.sql b/db/routines/vn/procedures/device_checkLogin.sql
index db566a068..7094eb84a 100644
--- a/db/routines/vn/procedures/device_checkLogin.sql
+++ b/db/routines/vn/procedures/device_checkLogin.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`device_checkLogin`(vUserFk INT, vAndroidID VARCHAR(50))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`device_checkLogin`(vUserFk INT, vAndroidID VARCHAR(50))
BEGIN
/*
diff --git a/db/routines/vn/procedures/duaEntryValueUpdate.sql b/db/routines/vn/procedures/duaEntryValueUpdate.sql
index f688191de..c3c57dd45 100644
--- a/db/routines/vn/procedures/duaEntryValueUpdate.sql
+++ b/db/routines/vn/procedures/duaEntryValueUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`duaEntryValueUpdate`(vDuaFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`duaEntryValueUpdate`(vDuaFk INT)
BEGIN
UPDATE duaEntry de
diff --git a/db/routines/vn/procedures/duaInvoiceInBooking.sql b/db/routines/vn/procedures/duaInvoiceInBooking.sql
index 10c0714e5..b4329a8bb 100644
--- a/db/routines/vn/procedures/duaInvoiceInBooking.sql
+++ b/db/routines/vn/procedures/duaInvoiceInBooking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`duaInvoiceInBooking`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`duaInvoiceInBooking`(
vDuaFk INT
)
BEGIN
@@ -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
diff --git a/db/routines/vn/procedures/duaParcialMake.sql b/db/routines/vn/procedures/duaParcialMake.sql
index cbb56e16d..063f26468 100644
--- a/db/routines/vn/procedures/duaParcialMake.sql
+++ b/db/routines/vn/procedures/duaParcialMake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`duaParcialMake`(vDuaFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`duaParcialMake`(vDuaFk INT)
BEGIN
DECLARE vNewDuaFk INT;
diff --git a/db/routines/vn/procedures/duaTaxBooking.sql b/db/routines/vn/procedures/duaTaxBooking.sql
index a50a10ca4..2c9201231 100644
--- a/db/routines/vn/procedures/duaTaxBooking.sql
+++ b/db/routines/vn/procedures/duaTaxBooking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`duaTaxBooking`(vDuaFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`duaTaxBooking`(vDuaFk INT)
BEGIN
DECLARE vBookNumber INT;
DECLARE vBookDated DATE;
diff --git a/db/routines/vn/procedures/duaTax_doRecalc.sql b/db/routines/vn/procedures/duaTax_doRecalc.sql
index e2d2b347f..fedc4c56b 100644
--- a/db/routines/vn/procedures/duaTax_doRecalc.sql
+++ b/db/routines/vn/procedures/duaTax_doRecalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`duaTax_doRecalc`(vDuaFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`duaTax_doRecalc`(vDuaFk INT)
BEGIN
/**
* Borra los valores de duaTax y los vuelve a crear en base a la tabla duaEntry
diff --git a/db/routines/vn/procedures/ediTables_Update.sql b/db/routines/vn/procedures/ediTables_Update.sql
index 3f0c6df04..9ae759fbd 100644
--- a/db/routines/vn/procedures/ediTables_Update.sql
+++ b/db/routines/vn/procedures/ediTables_Update.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ediTables_Update`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ediTables_Update`()
BEGIN
INSERT IGNORE INTO vn.genus(name)
diff --git a/db/routines/vn/procedures/ektEntryAssign_setEntry.sql b/db/routines/vn/procedures/ektEntryAssign_setEntry.sql
index d80215e37..eecdb32d4 100644
--- a/db/routines/vn/procedures/ektEntryAssign_setEntry.sql
+++ b/db/routines/vn/procedures/ektEntryAssign_setEntry.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ektEntryAssign_setEntry`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ektEntryAssign_setEntry`()
BEGIN
DECLARE done INT DEFAULT FALSE;
diff --git a/db/routines/vn/procedures/energyMeter_record.sql b/db/routines/vn/procedures/energyMeter_record.sql
index 113f73e19..07fb7afd0 100644
--- a/db/routines/vn/procedures/energyMeter_record.sql
+++ b/db/routines/vn/procedures/energyMeter_record.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`energyMeter_record`(vInput INT, vActiveTime INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`energyMeter_record`(vInput INT, vActiveTime INT)
BEGIN
DECLARE vConsumption INT;
diff --git a/db/routines/vn/procedures/entryDelivered.sql b/db/routines/vn/procedures/entryDelivered.sql
index e948770e8..7a6e22b4b 100644
--- a/db/routines/vn/procedures/entryDelivered.sql
+++ b/db/routines/vn/procedures/entryDelivered.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entryDelivered`(vDated DATE, vEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entryDelivered`(vDated DATE, vEntryFk INT)
BEGIN
DECLARE vTravelFk INT;
diff --git a/db/routines/vn/procedures/entryWithItem.sql b/db/routines/vn/procedures/entryWithItem.sql
index 30dd99fbf..f28a69f61 100644
--- a/db/routines/vn/procedures/entryWithItem.sql
+++ b/db/routines/vn/procedures/entryWithItem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entryWithItem`(vShipmentWarehouse INT, vLandingWarehouse INT,vSale INT, vVolume INT, netCost DECIMAL(10,2), vInOutDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entryWithItem`(vShipmentWarehouse INT, vLandingWarehouse INT,vSale INT, vVolume INT, netCost DECIMAL(10,2), vInOutDate DATE)
BEGIN
DECLARE vTravel INT;
diff --git a/db/routines/vn/procedures/entry_checkPackaging.sql b/db/routines/vn/procedures/entry_checkPackaging.sql
index 7ba47b3d5..f9ed03212 100644
--- a/db/routines/vn/procedures/entry_checkPackaging.sql
+++ b/db/routines/vn/procedures/entry_checkPackaging.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_checkPackaging`(vEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_checkPackaging`(vEntryFk INT)
BEGIN
/**
* Comprueba que los campos package y packaging no sean nulos
diff --git a/db/routines/vn/procedures/entry_clone.sql b/db/routines/vn/procedures/entry_clone.sql
index 4f38447c8..a0ed39c29 100644
--- a/db/routines/vn/procedures/entry_clone.sql
+++ b/db/routines/vn/procedures/entry_clone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_clone`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_clone`(vSelf INT)
BEGIN
/**
* clones an entry.
diff --git a/db/routines/vn/procedures/entry_cloneHeader.sql b/db/routines/vn/procedures/entry_cloneHeader.sql
index 7f9426663..c988cc592 100644
--- a/db/routines/vn/procedures/entry_cloneHeader.sql
+++ b/db/routines/vn/procedures/entry_cloneHeader.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_cloneHeader`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_cloneHeader`(
vSelf INT,
OUT vNewEntryFk INT,
vTravelFk INT
diff --git a/db/routines/vn/procedures/entry_cloneWithoutBuy.sql b/db/routines/vn/procedures/entry_cloneWithoutBuy.sql
index 8d75d8d51..af661ce0a 100644
--- a/db/routines/vn/procedures/entry_cloneWithoutBuy.sql
+++ b/db/routines/vn/procedures/entry_cloneWithoutBuy.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_cloneWithoutBuy`(vSelf INT, OUT vNewEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_cloneWithoutBuy`(vSelf INT, OUT vNewEntryFk INT)
BEGIN
/**
* Clona una entrada sin compras
diff --git a/db/routines/vn/procedures/entry_copyBuys.sql b/db/routines/vn/procedures/entry_copyBuys.sql
index 9bf4a55e4..8446249c7 100644
--- a/db/routines/vn/procedures/entry_copyBuys.sql
+++ b/db/routines/vn/procedures/entry_copyBuys.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vDestinationEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vDestinationEntryFk INT)
BEGIN
/**
* Copies all buys from an entry to an entry.
diff --git a/db/routines/vn/procedures/entry_fixMisfit.sql b/db/routines/vn/procedures/entry_fixMisfit.sql
index 986a0ae9e..c950f9a95 100644
--- a/db/routines/vn/procedures/entry_fixMisfit.sql
+++ b/db/routines/vn/procedures/entry_fixMisfit.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_fixMisfit`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_fixMisfit`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/entry_getRate.sql b/db/routines/vn/procedures/entry_getRate.sql
index 2220ef999..e715fae9b 100644
--- a/db/routines/vn/procedures/entry_getRate.sql
+++ b/db/routines/vn/procedures/entry_getRate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_getRate`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_getRate`(vSelf INT)
BEGIN
/**
* Prepara una tabla con las tarifas aplicables en funcion de la fecha
diff --git a/db/routines/vn/procedures/entry_getTransfer.sql b/db/routines/vn/procedures/entry_getTransfer.sql
index 165c87dc7..c83556408 100644
--- a/db/routines/vn/procedures/entry_getTransfer.sql
+++ b/db/routines/vn/procedures/entry_getTransfer.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_getTransfer`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_getTransfer`(
vSelf INT
)
BEGIN
@@ -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
diff --git a/db/routines/vn/procedures/entry_isEditable.sql b/db/routines/vn/procedures/entry_isEditable.sql
index c279fac65..12b6d0ef6 100644
--- a/db/routines/vn/procedures/entry_isEditable.sql
+++ b/db/routines/vn/procedures/entry_isEditable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_isEditable`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_isEditable`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/entry_lock.sql b/db/routines/vn/procedures/entry_lock.sql
index 8ec50323b..51e0f40b4 100644
--- a/db/routines/vn/procedures/entry_lock.sql
+++ b/db/routines/vn/procedures/entry_lock.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_lock`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_lock`(vSelf INT)
BEGIN
/**
* Lock the indicated entry
diff --git a/db/routines/vn/procedures/entry_moveNotPrinted.sql b/db/routines/vn/procedures/entry_moveNotPrinted.sql
index 3a12007d1..3d15681ee 100644
--- a/db/routines/vn/procedures/entry_moveNotPrinted.sql
+++ b/db/routines/vn/procedures/entry_moveNotPrinted.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_moveNotPrinted`(vSelf INT,
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_moveNotPrinted`(vSelf INT,
vDays INT,
vChangeEntry BOOL,
OUT vNewEntryFk INT)
diff --git a/db/routines/vn/procedures/entry_notifyChanged.sql b/db/routines/vn/procedures/entry_notifyChanged.sql
index 11e6fe4c0..5e48699bf 100644
--- a/db/routines/vn/procedures/entry_notifyChanged.sql
+++ b/db/routines/vn/procedures/entry_notifyChanged.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_notifyChanged`(vSelf INT, vBuyFk INT, vOldValues VARCHAR(512), vNewValues VARCHAR(512))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_notifyChanged`(vSelf INT, vBuyFk INT, vOldValues VARCHAR(512), vNewValues VARCHAR(512))
BEGIN
DECLARE vEmail VARCHAR(255);
DECLARE vFields VARCHAR(100);
diff --git a/db/routines/vn/procedures/entry_recalc.sql b/db/routines/vn/procedures/entry_recalc.sql
index b426a9b5b..516c5c193 100644
--- a/db/routines/vn/procedures/entry_recalc.sql
+++ b/db/routines/vn/procedures/entry_recalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_recalc`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_recalc`()
BEGIN
/**
* Comprueba que las ventas creadas entre un rango de fechas tienen componentes
diff --git a/db/routines/vn/procedures/entry_splitByShelving.sql b/db/routines/vn/procedures/entry_splitByShelving.sql
index eb07c12b7..fbf0cef90 100644
--- a/db/routines/vn/procedures/entry_splitByShelving.sql
+++ b/db/routines/vn/procedures/entry_splitByShelving.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_splitByShelving`(vShelvingFk VARCHAR(3), vFromEntryFk INT, vToEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_splitByShelving`(vShelvingFk VARCHAR(3), vFromEntryFk INT, vToEntryFk INT)
BEGIN
/**
* Divide las compras entre dos entradas de acuerdo con lo ubicado en una matr�cula
@@ -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$$
diff --git a/db/routines/vn/procedures/entry_splitMisfit.sql b/db/routines/vn/procedures/entry_splitMisfit.sql
index 476c52689..a21b2c9c4 100644
--- a/db/routines/vn/procedures/entry_splitMisfit.sql
+++ b/db/routines/vn/procedures/entry_splitMisfit.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_splitMisfit`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_splitMisfit`(vSelf INT)
BEGIN
/* Divide una entrada, pasando los registros que ha insertado vn.entry_fixMisfit de la entrada original
diff --git a/db/routines/vn/procedures/entry_unlock.sql b/db/routines/vn/procedures/entry_unlock.sql
index 1dab48974..4ecdf2797 100644
--- a/db/routines/vn/procedures/entry_unlock.sql
+++ b/db/routines/vn/procedures/entry_unlock.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_unlock`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_unlock`(vSelf INT)
BEGIN
/**
* Unlock the indicated entry
diff --git a/db/routines/vn/procedures/entry_updateComission.sql b/db/routines/vn/procedures/entry_updateComission.sql
index 4ec4f6e58..e2de2a4a5 100644
--- a/db/routines/vn/procedures/entry_updateComission.sql
+++ b/db/routines/vn/procedures/entry_updateComission.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_updateComission`(vCurrency INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`entry_updateComission`(vCurrency INT)
BEGIN
/**
* Actualiza la comision de las entradas de hoy a futuro y las recalcula
diff --git a/db/routines/vn/procedures/expeditionGetFromRoute.sql b/db/routines/vn/procedures/expeditionGetFromRoute.sql
index 46c3c5d70..6191428e6 100644
--- a/db/routines/vn/procedures/expeditionGetFromRoute.sql
+++ b/db/routines/vn/procedures/expeditionGetFromRoute.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionGetFromRoute`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionGetFromRoute`(
vExpeditionFk INT)
BEGIN
/**
diff --git a/db/routines/vn/procedures/expeditionPallet_Del.sql b/db/routines/vn/procedures/expeditionPallet_Del.sql
index 451815ca0..e69992032 100644
--- a/db/routines/vn/procedures/expeditionPallet_Del.sql
+++ b/db/routines/vn/procedures/expeditionPallet_Del.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_Del`(vPalletFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionPallet_Del`(vPalletFk INT)
BEGIN
DELETE FROM vn.expeditionPallet
diff --git a/db/routines/vn/procedures/expeditionPallet_List.sql b/db/routines/vn/procedures/expeditionPallet_List.sql
index db7cd6f0e..e419f8793 100644
--- a/db/routines/vn/procedures/expeditionPallet_List.sql
+++ b/db/routines/vn/procedures/expeditionPallet_List.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_List`(vTruckFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionPallet_List`(vTruckFk INT)
BEGIN
SELECT ep.id Pallet,
diff --git a/db/routines/vn/procedures/expeditionPallet_View.sql b/db/routines/vn/procedures/expeditionPallet_View.sql
index fe410b2fb..31e0d6c96 100644
--- a/db/routines/vn/procedures/expeditionPallet_View.sql
+++ b/db/routines/vn/procedures/expeditionPallet_View.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_View`(vPalletFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionPallet_View`(vPalletFk INT)
BEGIN
SELECT ep.id Pallet,
diff --git a/db/routines/vn/procedures/expeditionPallet_build.sql b/db/routines/vn/procedures/expeditionPallet_build.sql
index bea56eae6..2df73bb85 100644
--- a/db/routines/vn/procedures/expeditionPallet_build.sql
+++ b/db/routines/vn/procedures/expeditionPallet_build.sql
@@ -1,5 +1,10 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_build`(IN vExpeditions JSON, IN vArcId INT, IN vWorkerFk INT, OUT vPalletFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionPallet_build`(
+ vExpeditions JSON,
+ vArcId INT,
+ vWorkerFk INT,
+ OUT vPalletFk INT
+)
BEGIN
/** Construye un pallet de expediciones.
*
@@ -7,28 +12,22 @@ BEGIN
* en cuyo caso actualiza ese pallet.
*
* @param vExpeditions JSON_ARRAY con esta estructura [exp1, exp2, exp3, ...]
- * @param vArcId INT Identificador de vn.arcRead
- * @param vWorkerFk INT Identificador de vn.worker
- * @param out vPalletFk Identificador de vn.expeditionPallet
+ * @param vArcId INT Identificador de arcRead
+ * @param vWorkerFk INT Identificador de worker
+ * @param out vPalletFk Identificador de expeditionPallet
*/
DECLARE vCounter INT;
DECLARE vExpeditionFk INT;
DECLARE vTruckFk INT;
DECLARE vPrinterFk INT;
+ DECLARE vExpeditionStateTypeFk INT;
- DROP TEMPORARY TABLE IF EXISTS tExpedition;
- CREATE TEMPORARY TABLE tExpedition
- SELECT
- e.id expeditionFk,
- r.id routeFk,
- ep.id palletFk
- FROM
- vn.expedition e,
- vn.route r,
- vn.expeditionPallet ep
- LIMIT 0;
-
- ALTER TABLE tExpedition ADD PRIMARY KEY (expeditionFk);
+ CREATE OR REPLACE TEMPORARY TABLE tExpedition (
+ expeditionFk INT,
+ routeFk INT,
+ palletFk INT,
+ PRIMARY KEY (expeditionFk)
+ );
SET vCounter = JSON_LENGTH(vExpeditions);
@@ -39,53 +38,58 @@ BEGIN
INSERT IGNORE INTO tExpedition(expeditionFk, routeFk, palletFk)
SELECT vExpeditionFk, t.routeFk, es.palletFk
- FROM vn.expedition e
- LEFT JOIN vn.ticket t ON t.id = e.ticketFk
- LEFT JOIN vn.expeditionScan es ON es.expeditionFk = e.id
+ FROM expedition e
+ LEFT JOIN ticket t ON t.id = e.ticketFk
+ LEFT JOIN expeditionScan es ON es.expeditionFk = e.id
WHERE e.id = vExpeditionFk;
END WHILE;
SELECT palletFk INTO vPalletFk
FROM (
- SELECT palletFk, count(*) n
- FROM tExpedition
- WHERE palletFk > 0
- GROUP BY palletFk
- ORDER BY n DESC
- LIMIT 100 ) sub
+ SELECT palletFk, count(*) n
+ FROM tExpedition
+ WHERE palletFk > 0
+ GROUP BY palletFk
+ ORDER BY n DESC
+ LIMIT 100
+ ) sub
LIMIT 1;
IF vPalletFk IS NULL THEN
- SELECT roadmapStopFk
- INTO vTruckFk
- FROM (
- SELECT rm.roadmapStopFk, count(*) n
- FROM vn.routesMonitor rm
- JOIN tExpedition e ON e.routeFk = rm.routeFk
- GROUP BY roadmapStopFk
- ORDER BY n DESC
- LIMIT 1) sub;
+ SELECT roadmapStopFk INTO vTruckFk
+ FROM (
+ SELECT rm.roadmapStopFk, count(*) n
+ FROM routesMonitor rm
+ JOIN tExpedition e ON e.routeFk = rm.routeFk
+ GROUP BY roadmapStopFk
+ ORDER BY n DESC
+ LIMIT 1
+ ) sub;
IF vTruckFk IS NULL THEN
CALL util.throw ('TRUCK_NOT_AVAILABLE');
END IF;
- INSERT INTO vn.expeditionPallet(truckFk)
- VALUES(vTruckFk);
+ INSERT INTO expeditionPallet SET truckFk = vTruckFk;
SET vPalletFk = LAST_INSERT_ID();
END IF;
- INSERT INTO vn.expeditionScan(expeditionFk, palletFk, workerFk)
+ INSERT INTO expeditionScan(expeditionFk, palletFk, workerFk)
SELECT expeditionFk, vPalletFk, vWorkerFk
FROM tExpedition
ON DUPLICATE KEY UPDATE palletFk = vPalletFk, workerFk = vWorkerFk;
- SELECT printerFk INTO vPrinterFk
- FROM vn.arcRead
- WHERE id = vArcId;
+ SELECT id INTO vExpeditionStateTypeFk
+ FROM expeditionStateType
+ WHERE code = 'PALLETIZED';
- CALL vn.report_print(
+ INSERT INTO expeditionState(expeditionFk, typeFk)
+ SELECT expeditionFk, vExpeditionStateTypeFk FROM tExpedition;
+
+ SELECT printerFk INTO vPrinterFk FROM arcRead WHERE id = vArcId;
+
+ CALL report_print(
'LabelPalletExpedition',
vPrinterFk,
account.myUser_getId(),
@@ -93,7 +97,7 @@ BEGIN
'high'
);
- UPDATE vn.expeditionPallet SET isPrint = TRUE WHERE id = vPalletFk;
+ UPDATE expeditionPallet SET isPrint = TRUE WHERE id = vPalletFk;
DROP TEMPORARY TABLE tExpedition;
END$$
diff --git a/db/routines/vn/procedures/expeditionPallet_printLabel.sql b/db/routines/vn/procedures/expeditionPallet_printLabel.sql
index 7aaf8cedb..0a35d2a6b 100644
--- a/db/routines/vn/procedures/expeditionPallet_printLabel.sql
+++ b/db/routines/vn/procedures/expeditionPallet_printLabel.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_printLabel`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionPallet_printLabel`(vSelf INT)
BEGIN
/**
* Calls the report_print procedure and passes it
diff --git a/db/routines/vn/procedures/expeditionScan_Add.sql b/db/routines/vn/procedures/expeditionScan_Add.sql
index 6ab19e8d0..98eeb265b 100644
--- a/db/routines/vn/procedures/expeditionScan_Add.sql
+++ b/db/routines/vn/procedures/expeditionScan_Add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionScan_Add`(vPalletFk INT, vTruckFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionScan_Add`(vPalletFk INT, vTruckFk INT)
BEGIN
DECLARE vTotal INT DEFAULT 0;
diff --git a/db/routines/vn/procedures/expeditionScan_Del.sql b/db/routines/vn/procedures/expeditionScan_Del.sql
index ecbfdad4b..8e082d18c 100644
--- a/db/routines/vn/procedures/expeditionScan_Del.sql
+++ b/db/routines/vn/procedures/expeditionScan_Del.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionScan_Del`(vScanFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionScan_Del`(vScanFk INT)
BEGIN
DELETE FROM vn.expeditionScan
diff --git a/db/routines/vn/procedures/expeditionScan_List.sql b/db/routines/vn/procedures/expeditionScan_List.sql
index b0d53053f..7f3ddd3fd 100644
--- a/db/routines/vn/procedures/expeditionScan_List.sql
+++ b/db/routines/vn/procedures/expeditionScan_List.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionScan_List`(vPalletFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionScan_List`(vPalletFk INT)
BEGIN
SELECT es.id,
diff --git a/db/routines/vn/procedures/expeditionScan_Put.sql b/db/routines/vn/procedures/expeditionScan_Put.sql
index 9744a7cd7..fc7d4da23 100644
--- a/db/routines/vn/procedures/expeditionScan_Put.sql
+++ b/db/routines/vn/procedures/expeditionScan_Put.sql
@@ -1,11 +1,18 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionScan_Put`(vPalletFk INT, vExpeditionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionScan_Put`(
+ vPalletFk INT,
+ vExpeditionFk INT
+)
BEGIN
-
- REPLACE vn.expeditionScan(expeditionFk, palletFk)
- VALUES(vExpeditionFk, vPalletFk);
-
- SELECT LAST_INSERT_ID() INTO vPalletFk;
-
+ IF NOT (SELECT TRUE FROM expedition WHERE id = vExpeditionFk LIMIT 1) THEN
+ CALL util.throw('Expedition not exists');
+ END IF;
+
+ 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);
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/expeditionState_add.sql b/db/routines/vn/procedures/expeditionState_add.sql
index 299f11b04..974fc4d3e 100644
--- a/db/routines/vn/procedures/expeditionState_add.sql
+++ b/db/routines/vn/procedures/expeditionState_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionState_add`(vParam INT, vStateCode VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionState_add`(vParam INT, vStateCode VARCHAR(100))
BEGIN
/**
diff --git a/db/routines/vn/procedures/expeditionState_addByAdress.sql b/db/routines/vn/procedures/expeditionState_addByAdress.sql
index 1d8de9745..3925ea000 100644
--- a/db/routines/vn/procedures/expeditionState_addByAdress.sql
+++ b/db/routines/vn/procedures/expeditionState_addByAdress.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionState_addByAdress`(vAdressFk INT, vRouteFk INT, vStateCode VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionState_addByAdress`(vAdressFk INT, vRouteFk INT, vStateCode VARCHAR(100))
BEGIN
/**
diff --git a/db/routines/vn/procedures/expeditionState_addByExpedition.sql b/db/routines/vn/procedures/expeditionState_addByExpedition.sql
index 6fbc205e5..fbc075b88 100644
--- a/db/routines/vn/procedures/expeditionState_addByExpedition.sql
+++ b/db/routines/vn/procedures/expeditionState_addByExpedition.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionState_addByExpedition`(vExpeditionFk INT, vStateCode VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionState_addByExpedition`(vExpeditionFk INT, vStateCode VARCHAR(100))
BEGIN
/**
diff --git a/db/routines/vn/procedures/expeditionState_addByPallet.sql b/db/routines/vn/procedures/expeditionState_addByPallet.sql
index af99b444d..5ebebb748 100644
--- a/db/routines/vn/procedures/expeditionState_addByPallet.sql
+++ b/db/routines/vn/procedures/expeditionState_addByPallet.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionState_addByPallet`(vPalletFk INT, vStateCode VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionState_addByPallet`(vPalletFk INT, vStateCode VARCHAR(100))
BEGIN
/**
* Inserta nuevos registros en la tabla vn.expeditionState
diff --git a/db/routines/vn/procedures/expeditionState_addByRoute.sql b/db/routines/vn/procedures/expeditionState_addByRoute.sql
index 5e438287b..c375f95a8 100644
--- a/db/routines/vn/procedures/expeditionState_addByRoute.sql
+++ b/db/routines/vn/procedures/expeditionState_addByRoute.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionState_addByRoute`(vRouteFk INT, vStateCode VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expeditionState_addByRoute`(vRouteFk INT, vStateCode VARCHAR(100))
BEGIN
/**
diff --git a/db/routines/vn/procedures/expedition_StateGet.sql b/db/routines/vn/procedures/expedition_StateGet.sql
index c709841eb..a871cf3b6 100644
--- a/db/routines/vn/procedures/expedition_StateGet.sql
+++ b/db/routines/vn/procedures/expedition_StateGet.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expedition_StateGet`(vExpeditionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_StateGet`(vExpeditionFk INT)
BEGIN
/* Devuelve una "ficha" con todos los datos relativos a la expedición
diff --git a/db/routines/vn/procedures/expedition_getFromRoute.sql b/db/routines/vn/procedures/expedition_getFromRoute.sql
index 2b726fa7d..f95936413 100644
--- a/db/routines/vn/procedures/expedition_getFromRoute.sql
+++ b/db/routines/vn/procedures/expedition_getFromRoute.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expedition_getFromRoute`(vRouteFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_getFromRoute`(vRouteFk INT)
BEGIN
/**
* Obtiene las expediciones a partir de una ruta
diff --git a/db/routines/vn/procedures/expedition_getState.sql b/db/routines/vn/procedures/expedition_getState.sql
index 61d65f571..f2e873a6b 100644
--- a/db/routines/vn/procedures/expedition_getState.sql
+++ b/db/routines/vn/procedures/expedition_getState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expedition_getState`(vExpeditionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_getState`(vExpeditionFk INT)
BEGIN
DECLARE vTicketsPendientes INT;
diff --git a/db/routines/vn/procedures/freelance_getInfo.sql b/db/routines/vn/procedures/freelance_getInfo.sql
index 0f85ab4bd..64d44c347 100644
--- a/db/routines/vn/procedures/freelance_getInfo.sql
+++ b/db/routines/vn/procedures/freelance_getInfo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`freelance_getInfo`(workerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`freelance_getInfo`(workerFk INT)
BEGIN
SELECT s.name, s.street, s.city, s.nif, s.postCode
FROM route r
diff --git a/db/routines/vn/procedures/getDayExpeditions.sql b/db/routines/vn/procedures/getDayExpeditions.sql
index b708c8b0e..5f83937a7 100644
--- a/db/routines/vn/procedures/getDayExpeditions.sql
+++ b/db/routines/vn/procedures/getDayExpeditions.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`getDayExpeditions`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`getDayExpeditions`()
BEGIN
SELECT
diff --git a/db/routines/vn/procedures/getInfoDelivery.sql b/db/routines/vn/procedures/getInfoDelivery.sql
index c240560e9..0663cbbc3 100644
--- a/db/routines/vn/procedures/getInfoDelivery.sql
+++ b/db/routines/vn/procedures/getInfoDelivery.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`getInfoDelivery`(vRouteFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`getInfoDelivery`(vRouteFk INT)
BEGIN
SELECT s.name, s.street, s.city, s.nif, s.postCode FROM vn.route r
JOIN vn.agencyMode am ON r.agencyModeFk = am.id
diff --git a/db/routines/vn/procedures/getPedidosInternos.sql b/db/routines/vn/procedures/getPedidosInternos.sql
index 973e110ef..d6efdc364 100644
--- a/db/routines/vn/procedures/getPedidosInternos.sql
+++ b/db/routines/vn/procedures/getPedidosInternos.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`getPedidosInternos`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`getPedidosInternos`()
BEGIN
SELECT id,name as description,upToDown as quantity FROM vn.item WHERE upToDown;
diff --git a/db/routines/vn/procedures/getTaxBases.sql b/db/routines/vn/procedures/getTaxBases.sql
index 54932aa4f..15a6ce85b 100644
--- a/db/routines/vn/procedures/getTaxBases.sql
+++ b/db/routines/vn/procedures/getTaxBases.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`getTaxBases`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`getTaxBases`()
BEGIN
/**
* Calcula y devuelve en número de bases imponibles postivas y negativas
diff --git a/db/routines/vn/procedures/greuge_add.sql b/db/routines/vn/procedures/greuge_add.sql
index b2241ab83..f69e97caa 100644
--- a/db/routines/vn/procedures/greuge_add.sql
+++ b/db/routines/vn/procedures/greuge_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`greuge_add`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`greuge_add`()
BEGIN
/**
* Group inserts into vn.greuge and then deletes the records just inserted
diff --git a/db/routines/vn/procedures/greuge_notifyEvents.sql b/db/routines/vn/procedures/greuge_notifyEvents.sql
index ec00c1bde..bf6755c9a 100644
--- a/db/routines/vn/procedures/greuge_notifyEvents.sql
+++ b/db/routines/vn/procedures/greuge_notifyEvents.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`greuge_notifyEvents`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`greuge_notifyEvents`()
BEGIN
/**
* Notify to detect wrong greuges.
diff --git a/db/routines/vn/procedures/inventoryFailureAdd.sql b/db/routines/vn/procedures/inventoryFailureAdd.sql
index 38765cbda..e2b5fa4a0 100644
--- a/db/routines/vn/procedures/inventoryFailureAdd.sql
+++ b/db/routines/vn/procedures/inventoryFailureAdd.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`inventoryFailureAdd`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`inventoryFailureAdd`()
BEGIN
DECLARE done BOOL DEFAULT FALSE;
diff --git a/db/routines/vn/procedures/inventoryMake.sql b/db/routines/vn/procedures/inventoryMake.sql
index 30bea6690..91065771a 100644
--- a/db/routines/vn/procedures/inventoryMake.sql
+++ b/db/routines/vn/procedures/inventoryMake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`inventoryMake`(vInventoryDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`inventoryMake`(vInventoryDate DATE)
BEGIN
/**
* Recalculate the inventories
diff --git a/db/routines/vn/procedures/inventoryMakeLauncher.sql b/db/routines/vn/procedures/inventoryMakeLauncher.sql
index 717e3c163..1822e1d8d 100644
--- a/db/routines/vn/procedures/inventoryMakeLauncher.sql
+++ b/db/routines/vn/procedures/inventoryMakeLauncher.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`inventoryMakeLauncher`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`inventoryMakeLauncher`()
BEGIN
/**
* Recalculate the inventories of all warehouses
diff --git a/db/routines/vn/procedures/inventory_repair.sql b/db/routines/vn/procedures/inventory_repair.sql
index 93527d84b..9c8300321 100644
--- a/db/routines/vn/procedures/inventory_repair.sql
+++ b/db/routines/vn/procedures/inventory_repair.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`inventory_repair`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`inventory_repair`()
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.lastEntry;
diff --git a/db/routines/vn/procedures/invoiceExpenseMake.sql b/db/routines/vn/procedures/invoiceExpenseMake.sql
index a1fe69ff5..ad336e2db 100644
--- a/db/routines/vn/procedures/invoiceExpenseMake.sql
+++ b/db/routines/vn/procedures/invoiceExpenseMake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceExpenseMake`(IN vInvoice INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceExpenseMake`(IN vInvoice INT)
BEGIN
/* Inserta las partidas de gasto correspondientes a la factura
* REQUIERE tabla tmp.ticketToInvoice
diff --git a/db/routines/vn/procedures/invoiceFromAddress.sql b/db/routines/vn/procedures/invoiceFromAddress.sql
index 2879460ce..24b247f5b 100644
--- a/db/routines/vn/procedures/invoiceFromAddress.sql
+++ b/db/routines/vn/procedures/invoiceFromAddress.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceFromAddress`(vMaxTicketDate DATETIME,vAddress INT,vCompany INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceFromAddress`(vMaxTicketDate DATETIME,vAddress INT,vCompany INT)
BEGIN
DECLARE vMinDateTicket DATE DEFAULT TIMESTAMPADD(MONTH, -3, util.VN_CURDATE());
diff --git a/db/routines/vn/procedures/invoiceFromClient.sql b/db/routines/vn/procedures/invoiceFromClient.sql
index 29cee5d4f..1a0dfa4c3 100644
--- a/db/routines/vn/procedures/invoiceFromClient.sql
+++ b/db/routines/vn/procedures/invoiceFromClient.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceFromClient`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceFromClient`(
IN vMaxTicketDate datetime,
IN vClientFk INT,
IN vCompanyFk INT)
diff --git a/db/routines/vn/procedures/invoiceFromTicket.sql b/db/routines/vn/procedures/invoiceFromTicket.sql
index e5ea00e62..c00a9bab4 100644
--- a/db/routines/vn/procedures/invoiceFromTicket.sql
+++ b/db/routines/vn/procedures/invoiceFromTicket.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceFromTicket`(IN vTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceFromTicket`(IN vTicket INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`;
diff --git a/db/routines/vn/procedures/invoiceInDueDay_calculate.sql b/db/routines/vn/procedures/invoiceInDueDay_calculate.sql
index e51b5f64d..d488b79db 100644
--- a/db/routines/vn/procedures/invoiceInDueDay_calculate.sql
+++ b/db/routines/vn/procedures/invoiceInDueDay_calculate.sql
@@ -1,5 +1,7 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInDueDay_calculate`(vInvoiceInFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`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 payDemDetail pdd ON pdd.id = s.payDemFk
+ JOIN invoiceInConfig iic
WHERE ii.id = vInvoiceInFk
GROUP BY ii.id
)sub
diff --git a/db/routines/vn/procedures/invoiceInDueDay_recalc.sql b/db/routines/vn/procedures/invoiceInDueDay_recalc.sql
index 7d2b0a5ed..b3a9f5aef 100644
--- a/db/routines/vn/procedures/invoiceInDueDay_recalc.sql
+++ b/db/routines/vn/procedures/invoiceInDueDay_recalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInDueDay_recalc`(vInvoiceInFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceInDueDay_recalc`(vInvoiceInFk INT)
BEGIN
DELETE FROM invoiceInDueDay
diff --git a/db/routines/vn/procedures/invoiceInTaxMakeByDua.sql b/db/routines/vn/procedures/invoiceInTaxMakeByDua.sql
index 3453516cc..4c16346b2 100644
--- a/db/routines/vn/procedures/invoiceInTaxMakeByDua.sql
+++ b/db/routines/vn/procedures/invoiceInTaxMakeByDua.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTaxMakeByDua`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceInTaxMakeByDua`(
vDuaFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql b/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql
index 962cc5224..da3faefbf 100644
--- a/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql
+++ b/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_afterUpsert`(vInvoiceInFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceInTax_afterUpsert`(vInvoiceInFk INT)
BEGIN
/**
* Triggered actions when a invoiceInTax is updated or inserted.
diff --git a/db/routines/vn/procedures/invoiceInTax_getFromDua.sql b/db/routines/vn/procedures/invoiceInTax_getFromDua.sql
index bf2cbe61e..c3a890ddd 100644
--- a/db/routines/vn/procedures/invoiceInTax_getFromDua.sql
+++ b/db/routines/vn/procedures/invoiceInTax_getFromDua.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromDua`(vDuaFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromDua`(vDuaFk INT)
BEGIN
/**
* Borra los valores de duaTax y sus vctos. y los vuelve a crear en base a la tabla duaEntry
diff --git a/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql b/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql
index 5f2ceeb4f..186104a73 100644
--- a/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql
+++ b/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`(
IN vInvoiceInFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/invoiceInTax_recalc.sql b/db/routines/vn/procedures/invoiceInTax_recalc.sql
index 4e20b01d3..0daf87103 100644
--- a/db/routines/vn/procedures/invoiceInTax_recalc.sql
+++ b/db/routines/vn/procedures/invoiceInTax_recalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_recalc`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceInTax_recalc`(
vInvoiceInFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/invoiceIn_booking.sql b/db/routines/vn/procedures/invoiceIn_booking.sql
index c194a774d..36189afcc 100644
--- a/db/routines/vn/procedures/invoiceIn_booking.sql
+++ b/db/routines/vn/procedures/invoiceIn_booking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`(
vSelf INT,
vBookNumber INT
)
@@ -13,30 +13,18 @@ BEGIN
* @param vBookEntry Id de asiento, si es NULL se genera uno nuevo
*/
DECLARE vFiscalYear INT;
- DECLARE vDistinctTransactions INT;
DECLARE vHasRepeatedTransactions BOOL;
- SELECT COUNT(DISTINCT iit.transactionTypeSageFk) INTO vDistinctTransactions
- FROM invoiceIn ii
- JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id
- JOIN invoiceInSerial iis ON iis.code = ii.serial
- WHERE iit.invoiceInFk = vSelf
- AND iis.taxAreaFk = 'CEE'
- AND iit.transactionTypeSageFk;
-
- IF vDistinctTransactions > 1 THEN
- CALL util.throw ('This invoice does not allow different types of transactions');
- END IF;
-
SELECT TRUE INTO vHasRepeatedTransactions
- FROM invoiceInTax
- WHERE invoiceInFk = vSelf
- GROUP BY transactionTypeSageFk
- HAVING COUNT(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
- CALL util.throw ('This invoice contains repeated types of transactions');
+ CALL util.throw ('This invoice contains different types of transactions');
END IF;
CREATE OR REPLACE TEMPORARY TABLE tInvoiceIn
diff --git a/db/routines/vn/procedures/invoiceIn_checkBooked.sql b/db/routines/vn/procedures/invoiceIn_checkBooked.sql
index 862870eb4..b9966a9b6 100644
--- a/db/routines/vn/procedures/invoiceIn_checkBooked.sql
+++ b/db/routines/vn/procedures/invoiceIn_checkBooked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceIn_checkBooked`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceIn_checkBooked`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/invoiceOutAgain.sql b/db/routines/vn/procedures/invoiceOutAgain.sql
index 82cebc18d..21b43fdf9 100644
--- a/db/routines/vn/procedures/invoiceOutAgain.sql
+++ b/db/routines/vn/procedures/invoiceOutAgain.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOutAgain`(IN vInvoiceRef VARCHAR(15), vTaxArea VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOutAgain`(IN vInvoiceRef VARCHAR(15), vTaxArea VARCHAR(25))
BEGIN
/* Para tickets ya facturados, vuelve a repetir el proceso de facturación.
diff --git a/db/routines/vn/procedures/invoiceOutBooking.sql b/db/routines/vn/procedures/invoiceOutBooking.sql
index 9fc1c92b6..86f64ffcb 100644
--- a/db/routines/vn/procedures/invoiceOutBooking.sql
+++ b/db/routines/vn/procedures/invoiceOutBooking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOutBooking`(IN vInvoice INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOutBooking`(IN vInvoice INT)
BEGIN
/**
* Asienta una factura emitida
diff --git a/db/routines/vn/procedures/invoiceOutBookingRange.sql b/db/routines/vn/procedures/invoiceOutBookingRange.sql
index 57d973f01..e053e51eb 100644
--- a/db/routines/vn/procedures/invoiceOutBookingRange.sql
+++ b/db/routines/vn/procedures/invoiceOutBookingRange.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOutBookingRange`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOutBookingRange`()
BEGIN
/* Reasentar facturas
diff --git a/db/routines/vn/procedures/invoiceOutListByCompany.sql b/db/routines/vn/procedures/invoiceOutListByCompany.sql
index 09ebfc1a4..13145dd6b 100644
--- a/db/routines/vn/procedures/invoiceOutListByCompany.sql
+++ b/db/routines/vn/procedures/invoiceOutListByCompany.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOutListByCompany`(vCompany INT, vStarted DATE, vEnded DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOutListByCompany`(vCompany INT, vStarted DATE, vEnded DATE)
BEGIN
SELECT
diff --git a/db/routines/vn/procedures/invoiceOutTaxAndExpense.sql b/db/routines/vn/procedures/invoiceOutTaxAndExpense.sql
index c263fe8d3..4bae6b245 100644
--- a/db/routines/vn/procedures/invoiceOutTaxAndExpense.sql
+++ b/db/routines/vn/procedures/invoiceOutTaxAndExpense.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOutTaxAndExpense`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOutTaxAndExpense`()
BEGIN
/* Para tickets ya facturados, vuelve a repetir el proceso de facturación.
diff --git a/db/routines/vn/procedures/invoiceOut_exportationFromClient.sql b/db/routines/vn/procedures/invoiceOut_exportationFromClient.sql
index 5fce7c428..1e870ca75 100644
--- a/db/routines/vn/procedures/invoiceOut_exportationFromClient.sql
+++ b/db/routines/vn/procedures/invoiceOut_exportationFromClient.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_exportationFromClient`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOut_exportationFromClient`(
vMaxTicketDate DATETIME,
vClientFk INT,
vCompanyFk INT)
diff --git a/db/routines/vn/procedures/invoiceOut_new.sql b/db/routines/vn/procedures/invoiceOut_new.sql
index 42c3f99da..723f33df5 100644
--- a/db/routines/vn/procedures/invoiceOut_new.sql
+++ b/db/routines/vn/procedures/invoiceOut_new.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_new`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOut_new`(
vSerial VARCHAR(255),
vInvoiceDate DATE,
vTaxArea VARCHAR(25),
@@ -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,
@@ -216,7 +216,7 @@ BEGIN
i.transactionTypeSageFk,
@vTaxCodeGeneral := i.taxClassCodeFk
FROM tmp.ticketServiceTax tst
- JOIN invoiceOutTaxConfig i ON i.taxClassCodeFk = tst.code
+ JOIN invoiceOutTaxMultiConfig i ON i.taxClassCodeFk = tst.code
WHERE i.isService
HAVING taxableBase
) sub;
@@ -229,7 +229,7 @@ BEGIN
i.taxTypeSageFk ,
i.transactionTypeSageFk
FROM tmp.ticketTax tt
- JOIN invoiceOutTaxConfig i ON i.taxClassCodeFk = tt.code
+ JOIN invoiceOutTaxMultiConfig i ON i.taxClassCodeFk = tt.code
WHERE !i.isService
GROUP BY tt.pgcFk
HAVING taxableBase
diff --git a/db/routines/vn/procedures/invoiceOut_newFromClient.sql b/db/routines/vn/procedures/invoiceOut_newFromClient.sql
index e6fc7b78a..74c4aa71d 100644
--- a/db/routines/vn/procedures/invoiceOut_newFromClient.sql
+++ b/db/routines/vn/procedures/invoiceOut_newFromClient.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_newFromClient`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOut_newFromClient`(
IN vClientFk INT,
IN vSerial CHAR(2),
IN vMaxShipped DATE,
diff --git a/db/routines/vn/procedures/invoiceOut_newFromTicket.sql b/db/routines/vn/procedures/invoiceOut_newFromTicket.sql
index 3ee7cd678..41919f6ea 100644
--- a/db/routines/vn/procedures/invoiceOut_newFromTicket.sql
+++ b/db/routines/vn/procedures/invoiceOut_newFromTicket.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_newFromTicket`(IN vTicketFk int, IN vSerial char(2), IN vTaxArea varchar(25),
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceOut_newFromTicket`(IN vTicketFk int, IN vSerial char(2), IN vTaxArea varchar(25),
IN vRef varchar(25), OUT vInvoiceId int)
BEGIN
/**
diff --git a/db/routines/vn/procedures/invoiceTaxMake.sql b/db/routines/vn/procedures/invoiceTaxMake.sql
index 30296dc26..5b1ba6a95 100644
--- a/db/routines/vn/procedures/invoiceTaxMake.sql
+++ b/db/routines/vn/procedures/invoiceTaxMake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceTaxMake`(vInvoice INT, vTaxArea VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceTaxMake`(vInvoice INT, vTaxArea VARCHAR(25))
BEGIN
/**
* Factura un conjunto de tickets.
diff --git a/db/routines/vn/procedures/itemBarcode_update.sql b/db/routines/vn/procedures/itemBarcode_update.sql
index e2f13dc93..6341d8091 100644
--- a/db/routines/vn/procedures/itemBarcode_update.sql
+++ b/db/routines/vn/procedures/itemBarcode_update.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemBarcode_update`(vItemFk INT,vCode VARCHAR(22), vDelete BOOL)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemBarcode_update`(vItemFk INT,vCode VARCHAR(22), vDelete BOOL)
BEGIN
IF vDelete THEN
DELETE FROM vn.itemBarcode WHERE itemFk = vItemFk AND code = vCode;
diff --git a/db/routines/vn/procedures/itemFuentesBalance.sql b/db/routines/vn/procedures/itemFuentesBalance.sql
index e60273340..d6961a05f 100644
--- a/db/routines/vn/procedures/itemFuentesBalance.sql
+++ b/db/routines/vn/procedures/itemFuentesBalance.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemFuentesBalance`(vDaysInFuture INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemFuentesBalance`(vDaysInFuture INT)
BEGIN
/* Se utiliza para calcular la necesidad de mover mercancia entre el almacén de fuentes y el nuestro
diff --git a/db/routines/vn/procedures/itemMinimumQuantity_check.sql b/db/routines/vn/procedures/itemMinimumQuantity_check.sql
new file mode 100644
index 000000000..fef7cdbdb
--- /dev/null
+++ b/db/routines/vn/procedures/itemMinimumQuantity_check.sql
@@ -0,0 +1,28 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemMinimumQuantity_check`(
+ vSelf INT,
+ vItemFk INT,
+ vStarted DATE,
+ vEnded DATE,
+ vWarehouseFk INT
+)
+BEGIN
+ DECLARE vHasCollision BOOL;
+
+ IF vStarted IS NULL THEN
+ CALL util.throw('The field "started" cannot be null');
+ END IF;
+
+ SELECT COUNT(*) INTO vHasCollision
+ FROM itemMinimumQuantity
+ WHERE vItemFk = itemFk
+ AND ((vStarted <= ended OR ended IS NULL)
+ AND (vStarted >= `started` OR vEnded IS NULL))
+ AND (vWarehouseFk <=> warehouseFk)
+ AND vSelf <> id;
+
+ IF vHasCollision THEN
+ CALL util.throw('A line with the same configuration already exists');
+ END IF;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/itemPlacementFromTicket.sql b/db/routines/vn/procedures/itemPlacementFromTicket.sql
index 1a1a735e5..922bde5d4 100644
--- a/db/routines/vn/procedures/itemPlacementFromTicket.sql
+++ b/db/routines/vn/procedures/itemPlacementFromTicket.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemPlacementFromTicket`(vTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemPlacementFromTicket`(vTicket INT)
BEGIN
/**
* Llama a itemPlacementUpdateVisible
diff --git a/db/routines/vn/procedures/itemPlacementSupplyAiming.sql b/db/routines/vn/procedures/itemPlacementSupplyAiming.sql
index ee9125a7b..b96860623 100644
--- a/db/routines/vn/procedures/itemPlacementSupplyAiming.sql
+++ b/db/routines/vn/procedures/itemPlacementSupplyAiming.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyAiming`(vShelvingFk VARCHAR(10), quantity INT, vItemFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyAiming`(vShelvingFk VARCHAR(10), quantity INT, vItemFk INT)
BEGIN
SELECT ish.itemFk,
diff --git a/db/routines/vn/procedures/itemPlacementSupplyCloseOrder.sql b/db/routines/vn/procedures/itemPlacementSupplyCloseOrder.sql
index 9c4457a5e..935d062a1 100644
--- a/db/routines/vn/procedures/itemPlacementSupplyCloseOrder.sql
+++ b/db/routines/vn/procedures/itemPlacementSupplyCloseOrder.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyCloseOrder`(vId INT, vQuantity INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyCloseOrder`(vId INT, vQuantity INT)
BEGIN
UPDATE vn.itemPlacementSupply
diff --git a/db/routines/vn/procedures/itemPlacementSupplyGetOrder.sql b/db/routines/vn/procedures/itemPlacementSupplyGetOrder.sql
index b23f69fe7..958dc7e78 100644
--- a/db/routines/vn/procedures/itemPlacementSupplyGetOrder.sql
+++ b/db/routines/vn/procedures/itemPlacementSupplyGetOrder.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyGetOrder`(vSector INT )
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyGetOrder`(vSector INT )
BEGIN
DECLARE vId INT;
diff --git a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql
index 86d62cad4..cefa64d13 100644
--- a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql
+++ b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyStockGetTargetList`(vItemFk INT,vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemPlacementSupplyStockGetTargetList`(vItemFk INT,vSectorFk INT)
BEGIN
/**
* Devuelve la lista de ubicaciones para itemFk en ese sector. Se utiliza en la preparación previa.
diff --git a/db/routines/vn/procedures/itemRefreshTags.sql b/db/routines/vn/procedures/itemRefreshTags.sql
index 21af20c0f..cec133ad1 100644
--- a/db/routines/vn/procedures/itemRefreshTags.sql
+++ b/db/routines/vn/procedures/itemRefreshTags.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemRefreshTags`(IN vItem INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemRefreshTags`(IN vItem INT)
BEGIN
/**
* Crea la tabla temporal necesaria para el procedimiento item_refreshTags
diff --git a/db/routines/vn/procedures/itemSale_byWeek.sql b/db/routines/vn/procedures/itemSale_byWeek.sql
index bc43b7b16..31235f89a 100644
--- a/db/routines/vn/procedures/itemSale_byWeek.sql
+++ b/db/routines/vn/procedures/itemSale_byWeek.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemSale_byWeek`(vWeek INT, IN vYear INT, vItemFk INT, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemSale_byWeek`(vWeek INT, IN vYear INT, vItemFk INT, vWarehouseFk INT)
BEGIN
DECLARE vStarted DATE;
diff --git a/db/routines/vn/procedures/itemSaveMin.sql b/db/routines/vn/procedures/itemSaveMin.sql
index 510638348..fb7c7d2f8 100644
--- a/db/routines/vn/procedures/itemSaveMin.sql
+++ b/db/routines/vn/procedures/itemSaveMin.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemSaveMin`(min INT,vBarcode VARCHAR(22))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemSaveMin`(min INT,vBarcode VARCHAR(22))
BEGIN
DECLARE vItemFk INT;
diff --git a/db/routines/vn/procedures/itemSearchShelving.sql b/db/routines/vn/procedures/itemSearchShelving.sql
index 8c2c6c7c8..1fef9b2f6 100644
--- a/db/routines/vn/procedures/itemSearchShelving.sql
+++ b/db/routines/vn/procedures/itemSearchShelving.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemSearchShelving`(`vShelvingFk` VARCHAR(3))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemSearchShelving`(`vShelvingFk` VARCHAR(3))
BEGIN
SELECT p.`column` AS col , p.`row`
FROM vn.shelving s
diff --git a/db/routines/vn/procedures/itemShelvingDelete.sql b/db/routines/vn/procedures/itemShelvingDelete.sql
index f895782d3..a8799af11 100644
--- a/db/routines/vn/procedures/itemShelvingDelete.sql
+++ b/db/routines/vn/procedures/itemShelvingDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingDelete`(vId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingDelete`(vId INT)
BEGIN
DELETE FROM vn.itemShelving WHERE id = vId;
diff --git a/db/routines/vn/procedures/itemShelvingLog_get.sql b/db/routines/vn/procedures/itemShelvingLog_get.sql
index ad67ea5cd..52e7a273f 100644
--- a/db/routines/vn/procedures/itemShelvingLog_get.sql
+++ b/db/routines/vn/procedures/itemShelvingLog_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingLog_get`(vShelvingFk VARCHAR(10) )
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingLog_get`(vShelvingFk VARCHAR(10) )
BEGIN
/**
diff --git a/db/routines/vn/procedures/itemShelvingMakeFromDate.sql b/db/routines/vn/procedures/itemShelvingMakeFromDate.sql
index 2dde68829..4918d55e1 100644
--- a/db/routines/vn/procedures/itemShelvingMakeFromDate.sql
+++ b/db/routines/vn/procedures/itemShelvingMakeFromDate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingMakeFromDate`(IN `vShelvingFk` VARCHAR(8), IN `vBarcode` VARCHAR(22), IN `vQuantity` INT, IN `vPackagingFk` VARCHAR(10), IN `vGrouping` INT, IN `vPacking` INT, IN `vWarehouseFk` INT, `vCreated` VARCHAR(22))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingMakeFromDate`(IN `vShelvingFk` VARCHAR(8), IN `vBarcode` VARCHAR(22), IN `vQuantity` INT, IN `vPackagingFk` VARCHAR(10), IN `vGrouping` INT, IN `vPacking` INT, IN `vWarehouseFk` INT, `vCreated` VARCHAR(22))
BEGIN
DECLARE vItemFk INT;
diff --git a/db/routines/vn/procedures/itemShelvingMatch.sql b/db/routines/vn/procedures/itemShelvingMatch.sql
index 9a10c2b87..850c7907b 100644
--- a/db/routines/vn/procedures/itemShelvingMatch.sql
+++ b/db/routines/vn/procedures/itemShelvingMatch.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingMatch`(vEntryFk INT, vAllTravel BOOLEAN, vFromTimed DATETIME, vToTimed DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingMatch`(vEntryFk INT, vAllTravel BOOLEAN, vFromTimed DATETIME, vToTimed DATETIME)
BEGIN
DECLARE vTravelFk INT;
diff --git a/db/routines/vn/procedures/itemShelvingPlacementSupplyAdd.sql b/db/routines/vn/procedures/itemShelvingPlacementSupplyAdd.sql
index c3fc59624..085a3fe4b 100644
--- a/db/routines/vn/procedures/itemShelvingPlacementSupplyAdd.sql
+++ b/db/routines/vn/procedures/itemShelvingPlacementSupplyAdd.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingPlacementSupplyAdd`(vItemShelvingFk INT, vItemPlacementSupplyFk INT, vQuantity INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingPlacementSupplyAdd`(vItemShelvingFk INT, vItemPlacementSupplyFk INT, vQuantity INT)
BEGIN
INSERT INTO vn.itemShelvingPlacementSupply( itemShelvingFk,
diff --git a/db/routines/vn/procedures/itemShelvingProblem.sql b/db/routines/vn/procedures/itemShelvingProblem.sql
index aed7572ee..bb4725434 100644
--- a/db/routines/vn/procedures/itemShelvingProblem.sql
+++ b/db/routines/vn/procedures/itemShelvingProblem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingProblem`(vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingProblem`(vSectorFk INT)
BEGIN
DECLARE vVisibleCache INT;
diff --git a/db/routines/vn/procedures/itemShelvingRadar.sql b/db/routines/vn/procedures/itemShelvingRadar.sql
index aa95d0503..4bdd0873e 100644
--- a/db/routines/vn/procedures/itemShelvingRadar.sql
+++ b/db/routines/vn/procedures/itemShelvingRadar.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingRadar`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingRadar`(
vSectorFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/itemShelvingRadar_Entry.sql b/db/routines/vn/procedures/itemShelvingRadar_Entry.sql
index c0b4fcda2..637b8f77f 100644
--- a/db/routines/vn/procedures/itemShelvingRadar_Entry.sql
+++ b/db/routines/vn/procedures/itemShelvingRadar_Entry.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingRadar_Entry`(vEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingRadar_Entry`(vEntryFk INT)
BEGIN
DECLARE vWarehouseFk INT DEFAULT 1;
diff --git a/db/routines/vn/procedures/itemShelvingRadar_Entry_State_beta.sql b/db/routines/vn/procedures/itemShelvingRadar_Entry_State_beta.sql
index c8b5d4bb4..3a8a3d297 100644
--- a/db/routines/vn/procedures/itemShelvingRadar_Entry_State_beta.sql
+++ b/db/routines/vn/procedures/itemShelvingRadar_Entry_State_beta.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingRadar_Entry_State_beta`(vEntryFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingRadar_Entry_State_beta`(vEntryFk INT)
BEGIN
DECLARE vWarehouseFk INT DEFAULT 1;
diff --git a/db/routines/vn/procedures/itemShelvingSale_Add.sql b/db/routines/vn/procedures/itemShelvingSale_Add.sql
index 80eb4efca..05b6b9d45 100644
--- a/db/routines/vn/procedures/itemShelvingSale_Add.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_Add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_Add`(vItemShelvingFk INT, vSaleFk INT, vQuantity INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_Add`(vItemShelvingFk INT, vSaleFk INT, vQuantity INT)
BEGIN
/**
* Añade línea a itemShelvingSale y regulariza el carro
diff --git a/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql b/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql
index 7f9cc6616..bb915b99a 100644
--- a/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_addByCollection.sql
@@ -1,6 +1,6 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addByCollection`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addByCollection`(
vCollectionFk INT(11)
)
BEGIN
@@ -44,7 +44,7 @@ BEGIN
LEAVE l;
END IF;
- CALL itemShelvingSale_addBySale(vSaleFk);
+ CALL itemShelvingSale_addBySale(vSaleFk, NULL);
END LOOP;
CLOSE vSales;
END$$
diff --git a/db/routines/vn/procedures/itemShelvingSale_addBySale.sql b/db/routines/vn/procedures/itemShelvingSale_addBySale.sql
index 909ce5155..fbb93c524 100644
--- a/db/routines/vn/procedures/itemShelvingSale_addBySale.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_addBySale.sql
@@ -1,6 +1,7 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addBySale`(
- vSaleFk INT
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addBySale`(
+ vSaleFk INT,
+ vSectorFk INT
)
proc: BEGIN
/**
@@ -8,6 +9,7 @@ proc: BEGIN
*
* @param vSaleFk Id de sale
* @param vItemShelvingSaleFk Id de reserva
+ * @param vSectorFk Id del sector del operator
*/
DECLARE vLastPickingOrder INT;
DECLARE vDone INT DEFAULT FALSE;
@@ -30,6 +32,7 @@ proc: BEGIN
JOIN productionConfig pc
WHERE s.id = vSaleFk
AND NOT sc.isHideForPickers
+ AND (sc.id = vSectorFk OR vSectorFk IS NULL)
ORDER BY s.id,
p.pickingOrder >= vLastPickingOrder,
sh.priority DESC,
@@ -95,11 +98,13 @@ proc: BEGIN
itemShelvingFk,
saleFk,
quantity,
- userFk)
+ userFk,
+ isPicked)
SELECT vItemShelvingFk,
vSaleFk,
vReservedQuantity,
- vUserFk;
+ vUserFk,
+ FALSE;
UPDATE itemShelving
SET available = available - vReservedQuantity
diff --git a/db/routines/vn/procedures/itemShelvingSale_addBySaleGroup.sql b/db/routines/vn/procedures/itemShelvingSale_addBySaleGroup.sql
new file mode 100644
index 000000000..285b9f93f
--- /dev/null
+++ b/db/routines/vn/procedures/itemShelvingSale_addBySaleGroup.sql
@@ -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 ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql b/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql
index 442abcf5d..b603041c3 100644
--- a/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_addBySectorCollection.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE
`vn`.`itemShelvingSale_addBySectorCollection`(vSectorCollectionFk INT(11))
BEGIN
/**
@@ -10,8 +10,9 @@ BEGIN
*/
DECLARE vDone BOOL DEFAULT FALSE;
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
@@ -25,6 +26,10 @@ BEGIN
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;
@@ -34,7 +39,7 @@ BEGIN
LEAVE l;
END IF;
- CALL itemShelvingSale_addBySale(vSaleFk);
+ CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk);
END LOOP;
CLOSE vSales;
END$$
diff --git a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql
index 629e303b3..bbb060934 100644
--- a/db/routines/vn/procedures/itemShelvingSale_doReserve.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_doReserve.sql
@@ -1,14 +1,15 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_doReserve`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_doReserve`()
proc: BEGIN
/**
* Genera reservas de la tabla vn.itemShelvingSaleReserve
*/
DECLARE vDone BOOL;
DECLARE vSaleFk INT;
+ DECLARE vSectorFk INT;
DECLARE vSales CURSOR FOR
- SELECT DISTINCT saleFk FROM tSale;
+ SELECT DISTINCT saleFk, sectorFk FROM tSale;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
@@ -26,24 +27,25 @@ proc: BEGIN
CREATE OR REPLACE TEMPORARY TABLE tSale
ENGINE = MEMORY
- SELECT id, saleFk FROM itemShelvingSaleReserve;
+ SELECT id, saleFk, sectorFk FROM itemShelvingSaleReserve;
OPEN vSales;
myLoop: LOOP
SET vDone = FALSE;
- FETCH vSales INTO vSaleFk;
+ FETCH vSales INTO vSaleFk, vSectorFk;
IF vDone THEN
LEAVE myLoop;
END IF;
- CALL itemShelvingSale_addBySale (vSaleFk);
+ CALL itemShelvingSale_addBySale (vSaleFk, vSectorFk);
END LOOP;
CLOSE vSales;
- DELETE iss FROM itemShelvingSaleReserve iss JOIN tSale s ON s.id = iss.id;
+ DELETE iss FROM itemShelvingSaleReserve iss
+ JOIN tSale s ON s.id = iss.id AND s.sectorFk = iss.sectorFk;
DROP TEMPORARY TABLE tSale;
diff --git a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql
index 85230a386..3302b908c 100644
--- a/db/routines/vn/procedures/itemShelvingSale_reallocate.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_reallocate.sql
@@ -1,49 +1,55 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_reallocate`(
- vItemShelvingFk INT(10),
- vItemFk INT(10)
-)
-BEGIN
-/**
- * Elimina reservas de un itemShelving e intenta reservar en otra ubicación
- *
- * @param vItemShelvingFk Id itemShelving
- */
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- START TRANSACTION;
-
- SELECT id INTO vItemShelvingFk
- FROM itemShelving
- WHERE id = vItemShelvingFk
- FOR UPDATE;
-
- UPDATE itemShelving
- SET visible = 0,
- available = 0
- WHERE id = vItemShelvingFk
- AND itemFk = vItemFk;
-
- INSERT INTO itemShelvingSaleReserve (saleFk)
- SELECT DISTINCT iss.saleFk
- FROM itemShelvingSale iss
- JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
- WHERE iss.itemShelvingFk = vItemShelvingFk
- AND ish.itemFk = vItemFk
- AND NOT iss.isPicked;
-
- DELETE iss
- FROM itemShelvingSale iss
- JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
- WHERE iss.itemShelvingFk = vItemShelvingFk
- AND ish.itemFk = vItemFk
- AND NOT iss.isPicked;
- COMMIT;
-
- CALL itemShelvingSale_doReserve();
-END$$
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_reallocate`(
+ vItemShelvingFk INT(10),
+ vItemFk INT(10),
+ vSectorFk INT
+)
+BEGIN
+/**
+ * Elimina reservas de un itemShelving e intenta reservar en otra ubicación
+ *
+ * @param vItemShelvingFk Id itemShelving
+ * @param vItemFk Id del artículo
+ * @param vSectorFk Id del sector
+ */
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ START TRANSACTION;
+
+ UPDATE itemShelving
+ SET visible = 0,
+ available = 0
+ WHERE id = vItemShelvingFk
+ AND itemFk = vItemFk;
+
+ SELECT iss.id
+ FROM itemShelvingSale iss
+ JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
+ WHERE iss.itemShelvingFk = vItemShelvingFk
+ AND ish.itemFk = vItemFk
+ AND NOT iss.isPicked
+ FOR UPDATE;
+
+ 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
+ AND ish.itemFk = vItemFk
+ AND NOT iss.isPicked;
+
+ DELETE iss
+ FROM itemShelvingSale iss
+ JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
+ WHERE iss.itemShelvingFk = vItemShelvingFk
+ AND ish.itemFk = vItemFk
+ AND NOT iss.isPicked;
+ COMMIT;
+
+ CALL itemShelvingSale_doReserve();
+END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/itemShelvingSale_setPicked.sql b/db/routines/vn/procedures/itemShelvingSale_setPicked.sql
index c1e58a9d1..993ff96f0 100644
--- a/db/routines/vn/procedures/itemShelvingSale_setPicked.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_setPicked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setPicked`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setPicked`(
vSaleGroupFk INT(10)
)
BEGIN
diff --git a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql
index 85f56ee68..cde1b6872 100644
--- a/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_setQuantity.sql
@@ -1,8 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setQuantity`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_setQuantity`(
vItemShelvingSaleFk INT(10),
vQuantity DECIMAL(10,0),
- vIsItemShelvingSaleEmpty BOOLEAN
+ vIsItemShelvingSaleEmpty BOOLEAN,
+ vSectorFk INT
)
BEGIN
/**
@@ -14,6 +15,7 @@ BEGIN
* @param vQuantity Cantidad real que se ha cogido de la ubicación
* @param vIsItemShelvingSaleEmpty determina si la ubicación itemShelvingSale se ha
* quedado vacio tras el movimiento
+ * @param vSectorFk Id del sector
*/
DECLARE vSaleFk INT;
DECLARE vItemShelvingFk INT;
@@ -29,6 +31,12 @@ BEGIN
RESIGNAL;
END;
+ IF vQuantity > vReservedQuantity
+ OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
+ OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
+ CALL util.throw('The quantity cannot be different from the reserved');
+ END IF;
+
IF (SELECT isPicked FROM itemShelvingSale WHERE id = vItemShelvingSaleFk) THEN
CALL util.throw('Reservation completed');
END IF;
@@ -50,9 +58,8 @@ BEGIN
AND NOT iss.isPicked;
IF vQuantity > vReservedQuantity
- OR (vQuantity < vReservedQuantity AND
- (NOT vIsItemShelvingSaleEmpty OR vIsItemShelvingSaleEmpty IS NULL))
- OR (vIsItemShelvingSaleEmpty IS NOT NULL AND vQuantity = vReservedQuantity) THEN
+ OR (vQuantity < vReservedQuantity AND NOT vIsItemShelvingSaleEmpty)
+ OR (vQuantity = vReservedQuantity AND vIsItemShelvingSaleEmpty) THEN
CALL util.throw('The quantity cannot be different from the reserved');
END IF;
@@ -72,7 +79,7 @@ BEGIN
SET visible = GREATEST(0, visible - vQuantity)
WHERE id = vItemShelvingFk;
- SELECT SUM(IF(isPicked, 0, quantity)), SUM(quantity)
+ SELECT SUM(IF(isPicked OR id = vItemShelvingSaleFk, 0, quantity)), SUM(quantity)
INTO vRemainingQuantity, vTotalQuantity
FROM itemShelvingSale
WHERE saleFk = vSaleFk;
@@ -96,9 +103,9 @@ BEGIN
COMMIT;
IF vIsItemShelvingSaleEmpty AND vQuantity <> vReservedQuantity THEN
- INSERT INTO itemShelvingSaleReserve (saleFk)
- SELECT vSaleFk;
- CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk);
+ INSERT INTO itemShelvingSaleReserve (saleFk, sectorFk)
+ SELECT vSaleFk, vSectorFk;
+ CALL itemShelvingSale_reallocate(vItemShelvingFk, vItemFk, vSectorFk);
END IF;
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/itemShelvingSale_unpicked.sql b/db/routines/vn/procedures/itemShelvingSale_unpicked.sql
index 889cadfd0..3b636a7b4 100644
--- a/db/routines/vn/procedures/itemShelvingSale_unpicked.sql
+++ b/db/routines/vn/procedures/itemShelvingSale_unpicked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_unpicked`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_unpicked`(
vSelf INT(11)
)
BEGIN
diff --git a/db/routines/vn/procedures/itemShelving_add.sql b/db/routines/vn/procedures/itemShelving_add.sql
index a1bca5b6c..16e7713cd 100644
--- a/db/routines/vn/procedures/itemShelving_add.sql
+++ b/db/routines/vn/procedures/itemShelving_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_add`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_add`(
vShelvingFk VARCHAR(8),
vBarcode VARCHAR(22),
vQuantity INT,
diff --git a/db/routines/vn/procedures/itemShelving_addByClaim.sql b/db/routines/vn/procedures/itemShelving_addByClaim.sql
index 851162952..5e7cdf3fc 100644
--- a/db/routines/vn/procedures/itemShelving_addByClaim.sql
+++ b/db/routines/vn/procedures/itemShelving_addByClaim.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_addByClaim`(vClaimFk INT, vShelvingFk VARCHAR(3))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_addByClaim`(vClaimFk INT, vShelvingFk VARCHAR(3))
BEGIN
/**
* Insert items of claim into itemShelving.
@@ -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
diff --git a/db/routines/vn/procedures/itemShelving_addList.sql b/db/routines/vn/procedures/itemShelving_addList.sql
index 130007de5..05b392485 100644
--- a/db/routines/vn/procedures/itemShelving_addList.sql
+++ b/db/routines/vn/procedures/itemShelving_addList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_addList`(vShelvingFk VARCHAR(3), vList TEXT, vIsChecking BOOL, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_addList`(vShelvingFk VARCHAR(3), vList TEXT, vIsChecking BOOL, vWarehouseFk INT)
BEGIN
/* Recorre cada elemento en la colección vList.
* Si el parámetro isChecking = FALSE, llama a itemShelving_add.
diff --git a/db/routines/vn/procedures/itemShelving_filterBuyer.sql b/db/routines/vn/procedures/itemShelving_filterBuyer.sql
index d4675ea0e..0d67a5f46 100644
--- a/db/routines/vn/procedures/itemShelving_filterBuyer.sql
+++ b/db/routines/vn/procedures/itemShelving_filterBuyer.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_filterBuyer`(vBuyerFk INT, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_filterBuyer`(vBuyerFk INT, vWarehouseFk INT)
proc:BEGIN
/**
* Lista de articulos filtrados por comprador
diff --git a/db/routines/vn/procedures/itemShelving_get.sql b/db/routines/vn/procedures/itemShelving_get.sql
index 1be762f09..606bb8bd9 100644
--- a/db/routines/vn/procedures/itemShelving_get.sql
+++ b/db/routines/vn/procedures/itemShelving_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_get`(IN vSelf VARCHAR(8))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_get`(IN vSelf VARCHAR(8))
BEGIN
/**
* Lista artículos de itemshelving
@@ -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
diff --git a/db/routines/vn/procedures/itemShelving_getAlternatives.sql b/db/routines/vn/procedures/itemShelving_getAlternatives.sql
index de30d46ac..89176c4f5 100644
--- a/db/routines/vn/procedures/itemShelving_getAlternatives.sql
+++ b/db/routines/vn/procedures/itemShelving_getAlternatives.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getAlternatives`(vShelvingFk VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_getAlternatives`(vShelvingFk VARCHAR(10))
BEGIN
/**
* Devuelve un listado de posibles ubicaciones alternativas a ubicar los item de la matricula
diff --git a/db/routines/vn/procedures/itemShelving_getInfo.sql b/db/routines/vn/procedures/itemShelving_getInfo.sql
index a5749bd26..f02100e8b 100644
--- a/db/routines/vn/procedures/itemShelving_getInfo.sql
+++ b/db/routines/vn/procedures/itemShelving_getInfo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getInfo`(vItemFk VARCHAR(22))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_getInfo`(vItemFk VARCHAR(22))
BEGIN
/**
* Muestra información realtiva a la ubicación de un item
diff --git a/db/routines/vn/procedures/itemShelving_getItemDetails.sql b/db/routines/vn/procedures/itemShelving_getItemDetails.sql
index c01bc348c..4e641ca72 100644
--- a/db/routines/vn/procedures/itemShelving_getItemDetails.sql
+++ b/db/routines/vn/procedures/itemShelving_getItemDetails.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getItemDetails`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_getItemDetails`(
vBarcodeItem INT,
vShelvingFK VARCHAR(10)
)
@@ -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
diff --git a/db/routines/vn/procedures/itemShelving_getSaleDate.sql b/db/routines/vn/procedures/itemShelving_getSaleDate.sql
index a9f9466cf..d8ab6ed0c 100644
--- a/db/routines/vn/procedures/itemShelving_getSaleDate.sql
+++ b/db/routines/vn/procedures/itemShelving_getSaleDate.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getSaleDate`(vShelvingFk VARCHAR(3))
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_getSaleDate`(vShelvingFk VARCHAR(3))
BEGIN
/* Devuelve la mínima fecha en que se necesita cada producto en esa matrícula.
@@ -161,5 +161,5 @@ BEGIN
DROP TEMPORARY TABLE tmp.tStockByDay, tmp.tItems;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/itemShelving_inventory.sql b/db/routines/vn/procedures/itemShelving_inventory.sql
index f4b8ae165..b57df02e0 100644
--- a/db/routines/vn/procedures/itemShelving_inventory.sql
+++ b/db/routines/vn/procedures/itemShelving_inventory.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_inventory`(vParkingFromFk VARCHAR(8), vParkingToFk VARCHAR(8))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_inventory`(vParkingFromFk VARCHAR(8), vParkingToFk VARCHAR(8))
BEGIN
/**
* Devuelve un listado de ubicaciones a revisar
diff --git a/db/routines/vn/procedures/itemShelving_selfConsumption.sql b/db/routines/vn/procedures/itemShelving_selfConsumption.sql
index c974d9903..25ff2363c 100644
--- a/db/routines/vn/procedures/itemShelving_selfConsumption.sql
+++ b/db/routines/vn/procedures/itemShelving_selfConsumption.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_selfConsumption`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_selfConsumption`(
vShelvingFk VARCHAR(10) COLLATE utf8_general_ci,
vItemFk INT,
vQuantity INT
diff --git a/db/routines/vn/procedures/itemShelving_transfer.sql b/db/routines/vn/procedures/itemShelving_transfer.sql
index 47a9a7cf0..3597da7e1 100644
--- a/db/routines/vn/procedures/itemShelving_transfer.sql
+++ b/db/routines/vn/procedures/itemShelving_transfer.sql
@@ -1,32 +1,30 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_transfer`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_transfer`(
vItemShelvingFk INT,
vShelvingFk VARCHAR(10)
)
BEGIN
/**
- * Transfiere producto de una ubicación a otra, fusionando si coincide el
- * packing y la fecha.
+ * Transfiere producto de una ubicación a otra
+ * fusionando si coincide el packing y la fecha.
*
* @param vItemShelvingFk Identificador de itemShelving
* @param vShelvingFk Identificador de shelving
*/
- DECLARE vNewItemShelvingFk INT DEFAULT 0;
+ DECLARE vNewItemShelvingFk INT;
- SELECT MAX(ish.id)
- INTO vNewItemShelvingFk
+ SELECT MAX(ish.id) INTO vNewItemShelvingFk
FROM itemShelving ish
JOIN (
- SELECT
- itemFk,
- packing,
- created,
- buyFk
+ SELECT itemFk,
+ packing,
+ created,
+ buyFk
FROM itemShelving
WHERE id = vItemShelvingFk
) ish2 ON ish2.itemFk = ish.itemFk
AND ish2.packing = ish.packing
- AND date(ish2.created) = date(ish.created)
+ AND DATE(ish2.created) = DATE(ish.created)
AND ish2.buyFk = ish.buyFk
WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci;
@@ -39,10 +37,16 @@ BEGIN
DELETE FROM itemShelving
WHERE id = vItemShelvingFk;
ELSE
- UPDATE itemShelving
- SET shelvingFk = vShelvingFk
- WHERE id = vItemShelvingFk;
+ IF (SELECT EXISTS(SELECT id FROM shelving
+ WHERE code = vShelvingFk COLLATE utf8_unicode_ci)) THEN
+
+ UPDATE itemShelving
+ SET shelvingFk = vShelvingFk
+ WHERE id = vItemShelvingFk;
+ ELSE
+ CALL util.throw('The shelving not exists');
+ END IF;
END IF;
- SELECT true;
+ SELECT TRUE;
END$$
-DELIMITER ;
\ No newline at end of file
+DELIMITER ;
diff --git a/db/routines/vn/procedures/itemShelving_update.sql b/db/routines/vn/procedures/itemShelving_update.sql
index 079add704..28dfc7c12 100644
--- a/db/routines/vn/procedures/itemShelving_update.sql
+++ b/db/routines/vn/procedures/itemShelving_update.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_update`(vVisible INT, vPacking INT, vShelf INT ,vGrouping INT )
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelving_update`(vVisible INT, vPacking INT, vShelf INT ,vGrouping INT )
BEGIN
/**
* Actualiza itemShelving.
diff --git a/db/routines/vn/procedures/itemTagMake.sql b/db/routines/vn/procedures/itemTagMake.sql
index 6d34ecb78..79120a6c0 100644
--- a/db/routines/vn/procedures/itemTagMake.sql
+++ b/db/routines/vn/procedures/itemTagMake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemTagMake`(vItemFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemTagMake`(vItemFk INT)
BEGIN
/* * Crea los tags usando la tabla plantilla itemTag
diff --git a/db/routines/vn/procedures/itemTagReorder.sql b/db/routines/vn/procedures/itemTagReorder.sql
index bba3cfe03..6902b1987 100644
--- a/db/routines/vn/procedures/itemTagReorder.sql
+++ b/db/routines/vn/procedures/itemTagReorder.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemTagReorder`(itemTypeFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemTagReorder`(itemTypeFk INT)
BEGIN
SET @isTriggerDisabled = TRUE;
diff --git a/db/routines/vn/procedures/itemTagReorderByName.sql b/db/routines/vn/procedures/itemTagReorderByName.sql
index 89dc92740..743667912 100644
--- a/db/routines/vn/procedures/itemTagReorderByName.sql
+++ b/db/routines/vn/procedures/itemTagReorderByName.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemTagReorderByName`(vName VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemTagReorderByName`(vName VARCHAR(255))
BEGIN
SET @isTriggerDisabled = TRUE;
diff --git a/db/routines/vn/procedures/itemTag_replace.sql b/db/routines/vn/procedures/itemTag_replace.sql
index b32285072..2db6ef524 100644
--- a/db/routines/vn/procedures/itemTag_replace.sql
+++ b/db/routines/vn/procedures/itemTag_replace.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemTag_replace`(vItemFromFk INT, vItemToFk INT, vPicture VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemTag_replace`(vItemFromFk INT, vItemToFk INT, vPicture VARCHAR(100))
BEGIN
/* Reemplaza los tags de un artículo por los de otro, así como su imagen
diff --git a/db/routines/vn/procedures/itemTopSeller.sql b/db/routines/vn/procedures/itemTopSeller.sql
index f42cf67cf..beccc6765 100644
--- a/db/routines/vn/procedures/itemTopSeller.sql
+++ b/db/routines/vn/procedures/itemTopSeller.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemTopSeller`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemTopSeller`()
BEGIN
DECLARE vCategoryFk INTEGER;
DECLARE vDone INT DEFAULT FALSE;
diff --git a/db/routines/vn/procedures/itemUpdateTag.sql b/db/routines/vn/procedures/itemUpdateTag.sql
index 59529e2b0..2c41ff63d 100644
--- a/db/routines/vn/procedures/itemUpdateTag.sql
+++ b/db/routines/vn/procedures/itemUpdateTag.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemUpdateTag`(IN vItem BIGINT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemUpdateTag`(IN vItem BIGINT)
BEGIN
diff --git a/db/routines/vn/procedures/item_calcVisible.sql b/db/routines/vn/procedures/item_calcVisible.sql
index 820e73a7e..814d3add3 100644
--- a/db/routines/vn/procedures/item_calcVisible.sql
+++ b/db/routines/vn/procedures/item_calcVisible.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_calcVisible`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_calcVisible`(
vSelf INT,
vWarehouseFk INT
)
@@ -21,6 +21,7 @@ BEGIN
FROM itemTicketOut i
LEFT JOIN ticketState ts ON ts.ticketFk = i.ticketFk
JOIN `state` s ON s.id = ts.stateFk
+ JOIN warehouse w ON w.id = i.warehouseFk
LEFT JOIN (
SELECT DISTINCT st.saleFk
FROM saleTracking st
@@ -28,26 +29,31 @@ BEGIN
WHERE st.created > vDated
AND (s.isPicked OR st.isChecked)
) stPrevious ON `stPrevious`.`saleFk` = i.saleFk
- WHERE IFNULL(vWarehouseFk, i.warehouseFk) = i.warehouseFk
+ WHERE (vWarehouseFk IS NULL OR i.warehouseFk = vWarehouseFk)
AND (vSelf IS NULL OR i.itemFk = vSelf)
AND (s.isPicked OR i.reserved OR stPrevious.saleFk)
AND i.shipped >= vDated AND i.shipped < vTomorrow
+ AND w.isComparative
UNION ALL
- SELECT itemFk, quantity
- FROM itemEntryIn
- WHERE isReceived
- AND landed >= vDated AND landed < vTomorrow
- AND IFNULL(vWarehouseFk, warehouseInFk) = warehouseInFk
- AND (vSelf IS NULL OR itemFk = vSelf)
- AND NOT isVirtualStock
+ SELECT iei.itemFk, iei.quantity
+ FROM itemEntryIn iei
+ JOIN warehouse w ON w.id = iei.warehouseInFk
+ WHERE iei.isReceived
+ AND iei.landed >= vDated AND iei.landed < vTomorrow
+ AND (vWarehouseFk IS NULL OR iei.warehouseInFk = vWarehouseFk)
+ AND (vSelf IS NULL OR iei.itemFk = vSelf)
+ AND NOT iei.isVirtualStock
+ AND w.isComparative
UNION ALL
- SELECT itemFk, quantity
- FROM itemEntryOut
- WHERE isDelivered
- AND shipped >= vDated
- AND shipped < vTomorrow
- AND IFNULL(vWarehouseFk, warehouseOutFk) = warehouseOutFk
- AND (vSelf IS NULL OR itemFk = vSelf)
+ SELECT ieo.itemFk, ieo.quantity
+ FROM itemEntryOut ieo
+ JOIN warehouse w ON w.id = ieo.warehouseOutFk
+ WHERE ieo.isDelivered
+ AND ieo.shipped >= vDated
+ AND ieo.shipped < vTomorrow
+ AND (vWarehouseFk IS NULL OR ieo.warehouseOutFk = vWarehouseFk)
+ AND (vSelf IS NULL OR ieo.itemFk = vSelf)
+ AND w.isComparative
) t
GROUP BY itemFk
ON DUPLICATE KEY UPDATE
diff --git a/db/routines/vn/procedures/item_cleanFloramondo.sql b/db/routines/vn/procedures/item_cleanFloramondo.sql
index 080c61b5b..849cfe93d 100644
--- a/db/routines/vn/procedures/item_cleanFloramondo.sql
+++ b/db/routines/vn/procedures/item_cleanFloramondo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_cleanFloramondo`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_cleanFloramondo`()
BEGIN
/**
* Elimina todos los items repetidos de floramondo
diff --git a/db/routines/vn/procedures/item_comparative.sql b/db/routines/vn/procedures/item_comparative.sql
index 2625a87a5..298272708 100644
--- a/db/routines/vn/procedures/item_comparative.sql
+++ b/db/routines/vn/procedures/item_comparative.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_comparative`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_comparative`(
vDate DATETIME,
vDayRange TINYINT,
vWarehouseFk TINYINT,
diff --git a/db/routines/vn/procedures/item_deactivateUnused.sql b/db/routines/vn/procedures/item_deactivateUnused.sql
index 68a6b4978..cf8f22500 100644
--- a/db/routines/vn/procedures/item_deactivateUnused.sql
+++ b/db/routines/vn/procedures/item_deactivateUnused.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_deactivateUnused`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_deactivateUnused`()
BEGIN
/**
* Cambia a false el campo isActive de la tabla vn.item para todos aquellos
diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql
index c9f716d8f..44ae306ec 100644
--- a/db/routines/vn/procedures/item_devalueA2.sql
+++ b/db/routines/vn/procedures/item_devalueA2.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_devalueA2`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_devalueA2`(
vSelf INT,
vShelvingFK VARCHAR(10),
vBuyingValue DECIMAL(10,4),
@@ -42,7 +42,7 @@ BEGIN
END IF;
SELECT warehouseFk INTO vWarehouseFk
- FROM userConfig
+ FROM userMultiConfig
WHERE userFk = account.myUser_getId();
IF NOT vWarehouseFk OR vWarehouseFk IS NULL THEN
@@ -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
diff --git a/db/routines/vn/procedures/item_getAtp.sql b/db/routines/vn/procedures/item_getAtp.sql
index 255e38867..3e90a7f58 100644
--- a/db/routines/vn/procedures/item_getAtp.sql
+++ b/db/routines/vn/procedures/item_getAtp.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getAtp`(vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getAtp`(vDated DATE)
BEGIN
/**
* Calcula el valor mínimo acumulado para cada artículo ordenado por fecha y
diff --git a/db/routines/vn/procedures/item_getBalance.sql b/db/routines/vn/procedures/item_getBalance.sql
index 0de59b478..4aa589d19 100644
--- a/db/routines/vn/procedures/item_getBalance.sql
+++ b/db/routines/vn/procedures/item_getBalance.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getBalance`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getBalance`(
vItemFk INT,
vWarehouseFk INT,
vDated DATETIME
@@ -240,7 +240,7 @@ BEGIN
NULL reference,
NULL entityType,
NULL entityId,
- 'Inventario calculado',
+ 'Inventario calculado' entityName,
@a invalue,
NULL `out`,
@a balance,
diff --git a/db/routines/vn/procedures/item_getInfo.sql b/db/routines/vn/procedures/item_getInfo.sql
index 50ab880a0..341142892 100644
--- a/db/routines/vn/procedures/item_getInfo.sql
+++ b/db/routines/vn/procedures/item_getInfo.sql
@@ -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=`vn`@`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());
-
- SELECT barcodeToItem(vBarcode) INTO vItemFk;
+ CALL cache.available_refresh(vCacheAvailableFk, FALSE, vWarehouseFk, vDated);
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vDated);
+
SELECT SUM(visible) INTO vVisibleItemShelving
FROM itemShelvingStock
WHERE itemFk = vItemFk
diff --git a/db/routines/vn/procedures/item_getLack.sql b/db/routines/vn/procedures/item_getLack.sql
index e0531e2ac..45a6a6260 100644
--- a/db/routines/vn/procedures/item_getLack.sql
+++ b/db/routines/vn/procedures/item_getLack.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(IN vForce BOOLEAN, IN vDays INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getLack`(IN vForce BOOLEAN, IN vDays INT)
BEGIN
/**
* Calcula una tabla con el máximo negativo visible para cada producto y almacen
diff --git a/db/routines/vn/procedures/item_getMinETD.sql b/db/routines/vn/procedures/item_getMinETD.sql
index 3876587fe..62710231b 100644
--- a/db/routines/vn/procedures/item_getMinETD.sql
+++ b/db/routines/vn/procedures/item_getMinETD.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getMinETD`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getMinETD`()
BEGIN
/* Devuelve una tabla temporal con la primera ETD, para todos los artículos con salida hoy.
diff --git a/db/routines/vn/procedures/item_getMinacum.sql b/db/routines/vn/procedures/item_getMinacum.sql
index a3ebedb12..85474fc3f 100644
--- a/db/routines/vn/procedures/item_getMinacum.sql
+++ b/db/routines/vn/procedures/item_getMinacum.sql
@@ -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=`vn`@`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 ;
diff --git a/db/routines/vn/procedures/item_getSimilar.sql b/db/routines/vn/procedures/item_getSimilar.sql
index 72c543b40..823625b97 100644
--- a/db/routines/vn/procedures/item_getSimilar.sql
+++ b/db/routines/vn/procedures/item_getSimilar.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getSimilar`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getSimilar`(
vSelf INT,
vWarehouseFk INT,
vDated DATE,
diff --git a/db/routines/vn/procedures/item_getStock.sql b/db/routines/vn/procedures/item_getStock.sql
index c7df75ef2..8c0eea251 100644
--- a/db/routines/vn/procedures/item_getStock.sql
+++ b/db/routines/vn/procedures/item_getStock.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getStock`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getStock`(
vWarehouseFk SMALLINT,
vDated DATE,
vItemFk INT
diff --git a/db/routines/vn/procedures/item_multipleBuy.sql b/db/routines/vn/procedures/item_multipleBuy.sql
index ba49f8d36..50a535620 100644
--- a/db/routines/vn/procedures/item_multipleBuy.sql
+++ b/db/routines/vn/procedures/item_multipleBuy.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_multipleBuy`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_multipleBuy`(
vDate DATETIME,
vWarehouseFk INT
)
@@ -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))
diff --git a/db/routines/vn/procedures/item_multipleBuyByDate.sql b/db/routines/vn/procedures/item_multipleBuyByDate.sql
index d508afca4..115202895 100644
--- a/db/routines/vn/procedures/item_multipleBuyByDate.sql
+++ b/db/routines/vn/procedures/item_multipleBuyByDate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_multipleBuyByDate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_multipleBuyByDate`(
vDated DATETIME,
vWarehouseFk TINYINT(3)
)
diff --git a/db/routines/vn/procedures/item_refreshFromTags.sql b/db/routines/vn/procedures/item_refreshFromTags.sql
index 35f7c74e7..704224993 100644
--- a/db/routines/vn/procedures/item_refreshFromTags.sql
+++ b/db/routines/vn/procedures/item_refreshFromTags.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_refreshFromTags`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_refreshFromTags`(vSelf INT)
BEGIN
/**
* Updates item attributes with its corresponding tags.
diff --git a/db/routines/vn/procedures/item_refreshTags.sql b/db/routines/vn/procedures/item_refreshTags.sql
index 84ace0883..188242866 100644
--- a/db/routines/vn/procedures/item_refreshTags.sql
+++ b/db/routines/vn/procedures/item_refreshTags.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_refreshTags`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_refreshTags`()
BEGIN
/**
* Update item table, tag "cache" fields
diff --git a/db/routines/vn/procedures/item_saveReference.sql b/db/routines/vn/procedures/item_saveReference.sql
index 52416b637..4a4a5d1d7 100644
--- a/db/routines/vn/procedures/item_saveReference.sql
+++ b/db/routines/vn/procedures/item_saveReference.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_saveReference`(vBarcode VARCHAR(22), vReference VARCHAR(150))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_saveReference`(vBarcode VARCHAR(22), vReference VARCHAR(150))
BEGIN
/**
diff --git a/db/routines/vn/procedures/item_setGeneric.sql b/db/routines/vn/procedures/item_setGeneric.sql
index 9a78b1349..6f6600759 100644
--- a/db/routines/vn/procedures/item_setGeneric.sql
+++ b/db/routines/vn/procedures/item_setGeneric.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_setGeneric`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_setGeneric`(vSelf INT)
BEGIN
/**
* Asigna el código genérico a un item, salvo que sea un código de item genérico.
diff --git a/db/routines/vn/procedures/item_setVisibleDiscard.sql b/db/routines/vn/procedures/item_setVisibleDiscard.sql
index a44d87333..976cb5014 100644
--- a/db/routines/vn/procedures/item_setVisibleDiscard.sql
+++ b/db/routines/vn/procedures/item_setVisibleDiscard.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_setVisibleDiscard`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_setVisibleDiscard`(
vItemFk INT,
vWarehouseFk INT,
vQuantity INT,
diff --git a/db/routines/vn/procedures/item_updatePackingType.sql b/db/routines/vn/procedures/item_updatePackingType.sql
index 12a5e687b..021bab11c 100644
--- a/db/routines/vn/procedures/item_updatePackingType.sql
+++ b/db/routines/vn/procedures/item_updatePackingType.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_updatePackingType`(vItem INT, vItemPackingTypeFk VARCHAR(1))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_updatePackingType`(vItem INT, vItemPackingTypeFk VARCHAR(1))
BEGIN
/**
* Update the packing type of an item
diff --git a/db/routines/vn/procedures/item_valuateInventory.sql b/db/routines/vn/procedures/item_valuateInventory.sql
index 18aefdf7b..5642ba812 100644
--- a/db/routines/vn/procedures/item_valuateInventory.sql
+++ b/db/routines/vn/procedures/item_valuateInventory.sql
@@ -1,6 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_valuateInventory`(
- vDated DATE
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_valuateInventory`(
+ vDated DATE,
+ vItemTypeFk INT,
+ vItemCategoryFk INT
)
BEGIN
DECLARE vInventoried DATE;
@@ -61,11 +63,14 @@ BEGIN
JOIN `entry` e ON e.id = b.entryFk
JOIN travel tr ON tr.id = e.travelFk
JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
JOIN warehouse w ON w.id = tr.warehouseInFk
WHERE tr.landed = vDateDayEnd
AND e.supplierFk = vInventorySupplierFk
AND w.valuatedInventory
AND t.isInventory
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
GROUP BY tr.warehouseInFk, b.itemFk;
ELSE
INSERT INTO tInventory(warehouseFk, itemFk, quantity, warehouseInventory)
@@ -78,11 +83,14 @@ BEGIN
JOIN `entry` e ON e.id = b.entryFk
JOIN travel tr ON tr.id = e.travelFk
JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
JOIN warehouse w ON w.id = tr.warehouseInFk
WHERE tr.landed = vInventoried
AND e.supplierFk = vInventorySupplierFk
AND w.valuatedInventory
AND t.isInventory
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
GROUP BY tr.warehouseInFk, b.itemFk;
END IF;
@@ -97,6 +105,7 @@ BEGIN
JOIN `entry` e ON e.id = b.entryFk
JOIN travel tr ON tr.id = e.travelFk
JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
JOIN warehouse w ON w.id = tr.warehouseInFk
WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd
AND IF(tr.landed = util.VN_CURDATE(), tr.isReceived, TRUE)
@@ -104,6 +113,8 @@ BEGIN
AND w.valuatedInventory
AND t.isInventory
AND e.supplierFk <> vInventorySupplierFk
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity * IF(vHasNotInventory, -1, 1));
-- Descontamos las salidas
@@ -117,11 +128,14 @@ BEGIN
JOIN `entry` e ON e.id = b.entryFk
JOIN travel tr ON tr.id = e.travelFk
JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
JOIN warehouse w ON w.id = tr.warehouseOutFk
WHERE tr.shipped BETWEEN vInventoried AND vDateDayEnd
AND NOT e.isRaid
AND w.valuatedInventory
AND t.isInventory
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity * IF(vHasNotInventory,1,-1));
-- Descontamos las lineas de venta
@@ -135,10 +149,13 @@ BEGIN
JOIN `client` c ON c.id = t.clientFk
JOIN item i ON i.id = s.itemFk
JOIN itemType it ON it.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = it.categoryFk
JOIN warehouse w ON w.id = t.warehouseFk
WHERE t.shipped BETWEEN vInventoried AND vDateDayEnd
AND w.valuatedInventory
AND it.isInventory
+ AND (it.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + s.quantity * IF(vHasNotInventory, 1, -1);
-- Volver a poner lo que esta aun en las estanterias
@@ -153,11 +170,14 @@ BEGIN
JOIN `client` c ON c.id = t.clientFk
JOIN item i ON i.id = s.itemFk
JOIN itemType it ON it.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = it.categoryFk
JOIN warehouse w ON w.id = t.warehouseFk
WHERE t.shipped BETWEEN vDated AND vDateDayEnd
AND NOT (s.isPicked OR t.isLabeled)
AND w.valuatedInventory
AND it.isInventory
+ AND (it.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + s.quantity * IF(vHasNotInventory, 0, 1);
END IF;
@@ -172,6 +192,7 @@ BEGIN
JOIN `entry` e ON e.id = b.entryFk
JOIN travel tr ON tr.id = e.travelFk
JOIN itemType t ON t.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = t.categoryFk
JOIN warehouse wIn ON wIn.id = tr.warehouseInFk
JOIN warehouse wOut ON wOut.id = tr.warehouseOutFk
WHERE vDated >= tr.shipped AND vDated < tr.landed
@@ -179,9 +200,11 @@ BEGIN
AND wIn.valuatedInventory
AND t.isInventory
AND e.isConfirmed
+ AND (t.id = vItemTypeFk OR vItemTypeFk IS NULL)
+ AND (ic.id = vItemCategoryFk OR vItemCategoryFk IS NULL)
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity);
- CALL buyUltimate(NULL, vDateDayEnd);
+ CALL buy_getUltimate (NULL, NULL, vDateDayEnd);
DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity;
@@ -204,7 +227,8 @@ BEGIN
ic.name itemCategoryName,
ti.cost,
ti.total,
- ti.warehouseInventory
+ ti.warehouseInventory,
+ ic.display
FROM tInventory ti
JOIN warehouse w ON w.id = warehouseFk
JOIN item i ON i.id = ti.itemFk
diff --git a/db/routines/vn/procedures/item_zoneClosure.sql b/db/routines/vn/procedures/item_zoneClosure.sql
index c555e5df2..6b33f1b0a 100644
--- a/db/routines/vn/procedures/item_zoneClosure.sql
+++ b/db/routines/vn/procedures/item_zoneClosure.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_zoneClosure`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_zoneClosure`()
BEGIN
/* Devuelve una tabla temporal con la hora minima de un ticket sino tiene el de la zoneClosure y
diff --git a/db/routines/vn/procedures/ledger_doCompensation.sql b/db/routines/vn/procedures/ledger_doCompensation.sql
index 391575bac..c2149a1f1 100644
--- a/db/routines/vn/procedures/ledger_doCompensation.sql
+++ b/db/routines/vn/procedures/ledger_doCompensation.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_doCompensation`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ledger_doCompensation`(
vDated DATE,
vCompensationAccount VARCHAR(10),
vBankFk VARCHAR(10),
diff --git a/db/routines/vn/procedures/ledger_next.sql b/db/routines/vn/procedures/ledger_next.sql
index 0a390ab16..34fbb1cdc 100644
--- a/db/routines/vn/procedures/ledger_next.sql
+++ b/db/routines/vn/procedures/ledger_next.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_next`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ledger_next`(
IN vFiscalYear INT,
OUT vLastBookEntry INT
)
diff --git a/db/routines/vn/procedures/ledger_nextTx.sql b/db/routines/vn/procedures/ledger_nextTx.sql
index 98c157676..0a32861a3 100644
--- a/db/routines/vn/procedures/ledger_nextTx.sql
+++ b/db/routines/vn/procedures/ledger_nextTx.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_nextTx`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ledger_nextTx`(
IN vFiscalYear INT,
OUT vLastBookEntry INT
)
diff --git a/db/routines/vn/procedures/logShow.sql b/db/routines/vn/procedures/logShow.sql
index 836d3b0c4..0aad86095 100644
--- a/db/routines/vn/procedures/logShow.sql
+++ b/db/routines/vn/procedures/logShow.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`logShow`(vOriginFk INT, vEntity VARCHAR(45))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`logShow`(vOriginFk INT, vEntity VARCHAR(45))
BEGIN
/**
* Muestra las acciones realizadas por el usuario
diff --git a/db/routines/vn/procedures/lungSize_generator.sql b/db/routines/vn/procedures/lungSize_generator.sql
index e13e83650..e3f2009e1 100644
--- a/db/routines/vn/procedures/lungSize_generator.sql
+++ b/db/routines/vn/procedures/lungSize_generator.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`lungSize_generator`(vDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`lungSize_generator`(vDate DATE)
BEGIN
SET @buildingOrder := 0;
diff --git a/db/routines/vn/procedures/machineWorker_add.sql b/db/routines/vn/procedures/machineWorker_add.sql
index b2a7c7e19..41000f556 100644
--- a/db/routines/vn/procedures/machineWorker_add.sql
+++ b/db/routines/vn/procedures/machineWorker_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`machineWorker_add`(vPlate VARCHAR(10), vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`machineWorker_add`(vPlate VARCHAR(10), vWorkerFk INT)
BEGIN
/**
diff --git a/db/routines/vn/procedures/machineWorker_getHistorical.sql b/db/routines/vn/procedures/machineWorker_getHistorical.sql
index 47fcec5b6..67b1971a2 100644
--- a/db/routines/vn/procedures/machineWorker_getHistorical.sql
+++ b/db/routines/vn/procedures/machineWorker_getHistorical.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`machineWorker_getHistorical`(vPlate VARCHAR(20), vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`machineWorker_getHistorical`(vPlate VARCHAR(20), vWorkerFk INT)
BEGIN
/**
* Obtiene historial de la matrícula vPlate que el trabajador vWorkerFk escanea,
diff --git a/db/routines/vn/procedures/machineWorker_update.sql b/db/routines/vn/procedures/machineWorker_update.sql
index 064aa8931..f1a6e40b5 100644
--- a/db/routines/vn/procedures/machineWorker_update.sql
+++ b/db/routines/vn/procedures/machineWorker_update.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`machineWorker_update`(vPlate VARCHAR(10), vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`machineWorker_update`(vPlate VARCHAR(10), vWorkerFk INT)
BEGIN
/**
diff --git a/db/routines/vn/procedures/machine_getWorkerPlate.sql b/db/routines/vn/procedures/machine_getWorkerPlate.sql
index 4a50e0334..cbb71c4cf 100644
--- a/db/routines/vn/procedures/machine_getWorkerPlate.sql
+++ b/db/routines/vn/procedures/machine_getWorkerPlate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`machine_getWorkerPlate`(vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`machine_getWorkerPlate`(vWorkerFk INT)
BEGIN
/**
* Selecciona la matrícula del vehículo del workerfk
diff --git a/db/routines/vn/procedures/mail_insert.sql b/db/routines/vn/procedures/mail_insert.sql
index 5c5c2e9fd..8af84e145 100644
--- a/db/routines/vn/procedures/mail_insert.sql
+++ b/db/routines/vn/procedures/mail_insert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`mail_insert`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`mail_insert`(
vReceiver VARCHAR(255),
vReplyTo VARCHAR(50),
vSubject VARCHAR(100),
diff --git a/db/routines/vn/procedures/makeNewItem.sql b/db/routines/vn/procedures/makeNewItem.sql
index 5995f43b7..6e5c5b244 100644
--- a/db/routines/vn/procedures/makeNewItem.sql
+++ b/db/routines/vn/procedures/makeNewItem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`makeNewItem`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`makeNewItem`()
BEGIN
DECLARE newItemFk INT;
diff --git a/db/routines/vn/procedures/makePCSGraf.sql b/db/routines/vn/procedures/makePCSGraf.sql
index 31b4a42e7..7fbef5ec0 100644
--- a/db/routines/vn/procedures/makePCSGraf.sql
+++ b/db/routines/vn/procedures/makePCSGraf.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`makePCSGraf`(vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`makePCSGraf`(vDated DATE)
BEGIN
diff --git a/db/routines/vn/procedures/manaSpellersRequery.sql b/db/routines/vn/procedures/manaSpellersRequery.sql
index 30b91b4f1..4bb64d454 100644
--- a/db/routines/vn/procedures/manaSpellersRequery.sql
+++ b/db/routines/vn/procedures/manaSpellersRequery.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`manaSpellersRequery`(vWorkerFk INTEGER)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`manaSpellersRequery`(vWorkerFk INTEGER)
`whole_proc`:
BEGIN
/**
diff --git a/db/routines/vn/procedures/multipleInventory.sql b/db/routines/vn/procedures/multipleInventory.sql
index 6cd584c6e..c051706b7 100644
--- a/db/routines/vn/procedures/multipleInventory.sql
+++ b/db/routines/vn/procedures/multipleInventory.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`multipleInventory`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`multipleInventory`(
vDate DATE,
vWarehouseFk TINYINT,
vMaxDays TINYINT
@@ -75,13 +75,6 @@ proc: BEGIN
) sub
GROUP BY itemFk;
- UPDATE tmp.itemInventory ai
- JOIN tItemInventoryCalc iic ON iic.itemFk = ai.id
- SET ai.inventory = iic.quantity,
- ai.visible = iic.quantity,
- ai.avalaible = iic.quantity,
- ai.sd = iic.quantity;
-
-- Cálculo del visible
CALL cache.visible_refresh(vCalcFk, FALSE, vWarehouseFk);
@@ -93,8 +86,12 @@ proc: BEGIN
WHERE calc_id = vCalcFk;
UPDATE tmp.itemInventory it
- JOIN tItemVisibleCalc ivc ON ivc.item_id = it.id
- SET it.visible = it.visible + ivc.visible;
+ 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,
+ it.sd = iic.quantity;
-- Calculo del disponible
CREATE OR REPLACE TEMPORARY TABLE tmp.itemCalc
@@ -142,31 +139,35 @@ proc: BEGIN
CALL item_getAtp(vDate);
CALL travel_upcomingArrivals(vWarehouseFk, vDate);
- UPDATE tmp.itemInventory ai
- JOIN (
- SELECT it.itemFk,
- SUM(it.quantity) quantity,
- im.quantity minQuantity
- FROM tmp.itemCalc it
- JOIN tmp.itemAtp im ON im.itemFk = it.itemFk
- JOIN item i ON i.id = it.itemFk
- LEFT JOIN origin o ON o.id = i.originFk
- LEFT JOIN tmp.itemTravel t ON t.wh = o.warehouseFk
- WHERE it.dated < IF(vMaxDays < 0 AND t.landing IS NOT NULL,
- t.landing,
- vDateToTomorrow)
- GROUP BY it.itemFk
- ) sub ON sub.itemFk = ai.id
- SET ai.avalaible = IF(sub.minQuantity > 0,
- ai.avalaible,
- ai.avalaible + sub.minQuantity),
- ai.sd = ai.inventory + sub.quantity;
+ CREATE OR REPLACE TEMPORARY TABLE tItemAvailableCalc
+ (PRIMARY KEY (itemFk))
+ ENGINE = MEMORY
+ SELECT it.itemFk,
+ SUM(it.quantity) quantity,
+ im.quantity minQuantity
+ FROM tmp.itemCalc it
+ JOIN tmp.itemAtp im ON im.itemFk = it.itemFk
+ JOIN item i ON i.id = it.itemFk
+ LEFT JOIN origin o ON o.id = i.originFk
+ LEFT JOIN tmp.itemTravel t ON t.wh = o.warehouseFk
+ WHERE it.dated < IF(vMaxDays < 0 AND t.landing IS NOT NULL,
+ t.landing,
+ vDateToTomorrow)
+ GROUP BY it.itemFk;
+
+ UPDATE tmp.itemInventory it
+ JOIN tItemAvailableCalc iac ON iac.itemFk = it.id
+ SET it.avalaible = IF(iac.minQuantity > 0,
+ it.avalaible,
+ it.avalaible + iac.minQuantity),
+ it.sd = it.inventory + iac.quantity;
DROP TEMPORARY TABLE
tmp.itemTravel,
tmp.itemCalc,
tmp.itemAtp,
tItemInventoryCalc,
- tItemVisibleCalc;
+ tItemVisibleCalc,
+ tItemAvailableCalc;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/mysqlConnectionsSorter_kill.sql b/db/routines/vn/procedures/mysqlConnectionsSorter_kill.sql
index 129b356f2..0dbe34bdd 100644
--- a/db/routines/vn/procedures/mysqlConnectionsSorter_kill.sql
+++ b/db/routines/vn/procedures/mysqlConnectionsSorter_kill.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`mysqlConnectionsSorter_kill`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`mysqlConnectionsSorter_kill`()
BEGIN
/**
diff --git a/db/routines/vn/procedures/mysqlPreparedCount_check.sql b/db/routines/vn/procedures/mysqlPreparedCount_check.sql
index b0c78946d..c388036a5 100644
--- a/db/routines/vn/procedures/mysqlPreparedCount_check.sql
+++ b/db/routines/vn/procedures/mysqlPreparedCount_check.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`mysqlPreparedCount_check`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`mysqlPreparedCount_check`()
BEGIN
DECLARE vPreparedCount INTEGER;
diff --git a/db/routines/vn/procedures/nextShelvingCodeMake.sql b/db/routines/vn/procedures/nextShelvingCodeMake.sql
index d76d6276b..5fc90beac 100644
--- a/db/routines/vn/procedures/nextShelvingCodeMake.sql
+++ b/db/routines/vn/procedures/nextShelvingCodeMake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`nextShelvingCodeMake`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`nextShelvingCodeMake`()
BEGIN
DECLARE newShelving VARCHAR(3);
diff --git a/db/routines/vn/procedures/observationAdd.sql b/db/routines/vn/procedures/observationAdd.sql
index 960cf0bfe..98935436c 100644
--- a/db/routines/vn/procedures/observationAdd.sql
+++ b/db/routines/vn/procedures/observationAdd.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`observationAdd`(vOriginFk INT, vTableCode VARCHAR(45), vDescription TEXT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`observationAdd`(vOriginFk INT, vTableCode VARCHAR(45), vDescription TEXT)
BEGIN
/**
* Guarda las observaciones realizadas por el usuario
diff --git a/db/routines/vn/procedures/orderCreate.sql b/db/routines/vn/procedures/orderCreate.sql
index 8f732dad6..87f98673b 100644
--- a/db/routines/vn/procedures/orderCreate.sql
+++ b/db/routines/vn/procedures/orderCreate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`orderCreate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`orderCreate`(
vLanded DATE,
vAgencyMode INT,
vAddress INT,
diff --git a/db/routines/vn/procedures/orderDelete.sql b/db/routines/vn/procedures/orderDelete.sql
index 4264191da..95f800395 100644
--- a/db/routines/vn/procedures/orderDelete.sql
+++ b/db/routines/vn/procedures/orderDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`orderDelete`(IN vId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`orderDelete`(IN vId INT)
BEGIN
DELETE FROM hedera.`order` where id = vId;
diff --git a/db/routines/vn/procedures/orderListCreate.sql b/db/routines/vn/procedures/orderListCreate.sql
index 12396ea90..aa7d1284d 100644
--- a/db/routines/vn/procedures/orderListCreate.sql
+++ b/db/routines/vn/procedures/orderListCreate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`orderListCreate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`orderListCreate`(
vLanded DATE,
vAgencyMode INT,
vAddress INT,
diff --git a/db/routines/vn/procedures/orderListVolume.sql b/db/routines/vn/procedures/orderListVolume.sql
index 6eb641f83..946f20d95 100644
--- a/db/routines/vn/procedures/orderListVolume.sql
+++ b/db/routines/vn/procedures/orderListVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`orderListVolume`(IN vOrderId INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`orderListVolume`(IN vOrderId INT)
BEGIN
SELECT
diff --git a/db/routines/vn/procedures/packingListSwitch.sql b/db/routines/vn/procedures/packingListSwitch.sql
index 0883a7b6d..47009b007 100644
--- a/db/routines/vn/procedures/packingListSwitch.sql
+++ b/db/routines/vn/procedures/packingListSwitch.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`packingListSwitch`(saleFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`packingListSwitch`(saleFk INT)
BEGIN
DECLARE valueFk INT;
diff --git a/db/routines/vn/procedures/packingSite_startCollection.sql b/db/routines/vn/procedures/packingSite_startCollection.sql
index 53edd89f1..6c613f5db 100644
--- a/db/routines/vn/procedures/packingSite_startCollection.sql
+++ b/db/routines/vn/procedures/packingSite_startCollection.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`packingSite_startCollection`(vSelf INT, vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`packingSite_startCollection`(vSelf INT, vTicketFk INT)
proc: BEGIN
/**
* @param vSelf packingSite id
diff --git a/db/routines/vn/procedures/parking_add.sql b/db/routines/vn/procedures/parking_add.sql
index 17772424e..38d974eb0 100644
--- a/db/routines/vn/procedures/parking_add.sql
+++ b/db/routines/vn/procedures/parking_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`parking_add`(vFromColumn INT, vToColumn INT, vFromRow INT, vToRow INT, vSectorFk INT, vIsLetterMode BOOLEAN)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`parking_add`(vFromColumn INT, vToColumn INT, vFromRow INT, vToRow INT, vSectorFk INT, vIsLetterMode BOOLEAN)
BEGIN
DECLARE vColumn INT;
diff --git a/db/routines/vn/procedures/parking_algemesi.sql b/db/routines/vn/procedures/parking_algemesi.sql
index 6ea13193d..b9087f57a 100644
--- a/db/routines/vn/procedures/parking_algemesi.sql
+++ b/db/routines/vn/procedures/parking_algemesi.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`parking_algemesi`(vFromRow INT, vToRow INT, vSectorFk INT, vLetter VARCHAR(1), vPickingOrder INT, vTrolleysByLine INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`parking_algemesi`(vFromRow INT, vToRow INT, vSectorFk INT, vLetter VARCHAR(1), vPickingOrder INT, vTrolleysByLine INT)
BEGIN
DECLARE vRow INT;
diff --git a/db/routines/vn/procedures/parking_new.sql b/db/routines/vn/procedures/parking_new.sql
index 327e3a4b0..ba7101828 100644
--- a/db/routines/vn/procedures/parking_new.sql
+++ b/db/routines/vn/procedures/parking_new.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`parking_new`(vStart INT, vEnd INT, vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`parking_new`(vStart INT, vEnd INT, vSectorFk INT)
BEGIN
DECLARE vRow INT;
diff --git a/db/routines/vn/procedures/parking_setOrder.sql b/db/routines/vn/procedures/parking_setOrder.sql
index 241f855f7..26c601abd 100644
--- a/db/routines/vn/procedures/parking_setOrder.sql
+++ b/db/routines/vn/procedures/parking_setOrder.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`parking_setOrder`(vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`parking_setOrder`(vWarehouseFk INT)
BEGIN
/*
diff --git a/db/routines/vn/procedures/payment_add.sql b/db/routines/vn/procedures/payment_add.sql
index 061a75848..769b72241 100644
--- a/db/routines/vn/procedures/payment_add.sql
+++ b/db/routines/vn/procedures/payment_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`payment_add`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`payment_add`(
vDated DATE,
vSupplierFk INT,
vAmount DOUBLE,
diff --git a/db/routines/vn/procedures/prepareClientList.sql b/db/routines/vn/procedures/prepareClientList.sql
index 486152fd6..d4576999c 100644
--- a/db/routines/vn/procedures/prepareClientList.sql
+++ b/db/routines/vn/procedures/prepareClientList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`prepareClientList`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`prepareClientList`()
BEGIN
/*
diff --git a/db/routines/vn/procedures/prepareTicketList.sql b/db/routines/vn/procedures/prepareTicketList.sql
index 29c95cc9f..7c44bb994 100644
--- a/db/routines/vn/procedures/prepareTicketList.sql
+++ b/db/routines/vn/procedures/prepareTicketList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`prepareTicketList`(vStartingDate DATETIME, vEndingDate DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`prepareTicketList`(vStartingDate DATETIME, vEndingDate DATETIME)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.productionTicket;
CREATE TEMPORARY TABLE tmp.productionTicket
diff --git a/db/routines/vn/procedures/previousSticker_get.sql b/db/routines/vn/procedures/previousSticker_get.sql
index 05f7de250..90f2bec37 100644
--- a/db/routines/vn/procedures/previousSticker_get.sql
+++ b/db/routines/vn/procedures/previousSticker_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`previousSticker_get`(vSaleGroupFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`previousSticker_get`(vSaleGroupFk INT)
BEGIN
/**
* Devuelve los campos a imprimir en una etiqueta de preparación previa.
diff --git a/db/routines/vn/procedures/printer_checkSector.sql b/db/routines/vn/procedures/printer_checkSector.sql
index 40728a81a..bb8ad9d85 100644
--- a/db/routines/vn/procedures/printer_checkSector.sql
+++ b/db/routines/vn/procedures/printer_checkSector.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`printer_checkSector`(vLabelerFk tinyint(3) unsigned, vSector INT(11))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`printer_checkSector`(vLabelerFk tinyint(3) unsigned, vSector INT(11))
BEGIN
/**
* Comprueba si la impresora pertenece al sector
diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql
index dad46393d..e5323e84e 100644
--- a/db/routines/vn/procedures/productionControl.sql
+++ b/db/routines/vn/procedures/productionControl.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`productionControl`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`productionControl`(
vWarehouseFk INT,
vScopeDays INT
)
@@ -15,11 +15,6 @@ proc: BEGIN
DECLARE vEndingDate DATETIME;
DECLARE vIsTodayRelative BOOLEAN;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- RESIGNAL;
- END;
-
SELECT util.dayEnd(util.VN_CURDATE()) + INTERVAL LEAST(vScopeDays, maxProductionScopeDays) DAY
INTO vEndingDate
FROM productionConfig;
@@ -174,27 +169,30 @@ proc: BEGIN
WHERE NOT `lines`;
-- Lineas por linea de encajado
+ CREATE OR REPLACE TEMPORARY TABLE tItemPackingType
+ (PRIMARY KEY(ticketFk))
+ ENGINE = MEMORY
+ SELECT ticketFk,
+ SUM(sub.H) H,
+ SUM(sub.V) V,
+ SUM(sub.N) N
+ FROM (
+ SELECT t.ticketFk,
+ SUM(i.itemPackingTypeFk = 'H') H,
+ SUM(i.itemPackingTypeFk = 'V') V,
+ SUM(i.itemPackingTypeFk IS NULL) N
+ FROM tmp.productionTicket t
+ JOIN sale s ON s.ticketFk = t.ticketFk
+ JOIN item i ON i.id = s.itemFk
+ GROUP BY t.ticketFk, i.itemPackingTypeFk
+ ) sub
+ GROUP BY ticketFk;
+
UPDATE tmp.productionBuffer pb
- JOIN (
- SELECT ticketFk,
- SUM(sub.H) H,
- SUM(sub.V) V,
- SUM(sub.N) N
- FROM (
- SELECT t.ticketFk,
- SUM(i.itemPackingTypeFk = 'H') H,
- SUM(i.itemPackingTypeFk = 'V') V,
- SUM(i.itemPackingTypeFk IS NULL) N
- FROM tmp.productionTicket t
- JOIN sale s ON s.ticketFk = t.ticketFk
- 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;
+ 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
@@ -270,9 +268,9 @@ proc: BEGIN
DROP TEMPORARY TABLE
tmp.productionTicket,
tmp.ticket,
- tmp.risk,
tmp.ticket_problems,
tmp.ticketWithPrevia,
- tItemShelvingStock;
+ tItemShelvingStock,
+ tItemPackingType;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/productionError_add.sql b/db/routines/vn/procedures/productionError_add.sql
index e29accac9..e86b5ff0d 100644
--- a/db/routines/vn/procedures/productionError_add.sql
+++ b/db/routines/vn/procedures/productionError_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`productionError_add`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`productionError_add`()
BEGIN
DECLARE vDatedFrom DATETIME;
DECLARE vDatedTo DATETIME;
diff --git a/db/routines/vn/procedures/productionError_addCheckerPackager.sql b/db/routines/vn/procedures/productionError_addCheckerPackager.sql
index dd75f797b..7968aec38 100644
--- a/db/routines/vn/procedures/productionError_addCheckerPackager.sql
+++ b/db/routines/vn/procedures/productionError_addCheckerPackager.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`productionError_addCheckerPackager`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`productionError_addCheckerPackager`(
vDatedFrom DATETIME,
vDatedTo DATETIME,
vRol VARCHAR(50))
diff --git a/db/routines/vn/procedures/productionSectorList.sql b/db/routines/vn/procedures/productionSectorList.sql
index e1445ca52..f61ec7ec9 100644
--- a/db/routines/vn/procedures/productionSectorList.sql
+++ b/db/routines/vn/procedures/productionSectorList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`productionSectorList`(vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`productionSectorList`(vSectorFk INT)
BEGIN
/**
* Devuelve el listado de sale que se puede preparar en previa para ese sector
diff --git a/db/routines/vn/procedures/raidUpdate.sql b/db/routines/vn/procedures/raidUpdate.sql
index 703c14e5c..71352868e 100644
--- a/db/routines/vn/procedures/raidUpdate.sql
+++ b/db/routines/vn/procedures/raidUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`raidUpdate`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`raidUpdate`()
BEGIN
/**
* Actualiza el travel de las entradas de redadas
diff --git a/db/routines/vn/procedures/rangeDateInfo.sql b/db/routines/vn/procedures/rangeDateInfo.sql
index 502248686..a748680b0 100644
--- a/db/routines/vn/procedures/rangeDateInfo.sql
+++ b/db/routines/vn/procedures/rangeDateInfo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`rangeDateInfo`(vStarted DATE, vEnded DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`rangeDateInfo`(vStarted DATE, vEnded DATE)
BEGIN
/**
* Crea una tabla temporal con las fechas
diff --git a/db/routines/vn/procedures/rateView.sql b/db/routines/vn/procedures/rateView.sql
index d840aa9d5..a92c2bd5b 100644
--- a/db/routines/vn/procedures/rateView.sql
+++ b/db/routines/vn/procedures/rateView.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`rateView`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`rateView`()
BEGIN
/**
* Muestra información sobre tasas de cambio de Dolares
diff --git a/db/routines/vn/procedures/rate_getPrices.sql b/db/routines/vn/procedures/rate_getPrices.sql
index c82ad918e..9674dbacf 100644
--- a/db/routines/vn/procedures/rate_getPrices.sql
+++ b/db/routines/vn/procedures/rate_getPrices.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`rate_getPrices`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`rate_getPrices`(
vDated DATE,
vWarehouseFk INT
)
diff --git a/db/routines/vn/procedures/recipe_Plaster.sql b/db/routines/vn/procedures/recipe_Plaster.sql
index 18fdf55c8..c77c03ef2 100644
--- a/db/routines/vn/procedures/recipe_Plaster.sql
+++ b/db/routines/vn/procedures/recipe_Plaster.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`recipe_Plaster`(vItemFk INT, vTicketFk INT, vQuantity INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`recipe_Plaster`(vItemFk INT, vTicketFk INT, vQuantity INT)
BEGIN
DECLARE vLastCost DECIMAL(10,2);
diff --git a/db/routines/vn/procedures/remittance_calc.sql b/db/routines/vn/procedures/remittance_calc.sql
index ed0a18662..ee0a65fcd 100644
--- a/db/routines/vn/procedures/remittance_calc.sql
+++ b/db/routines/vn/procedures/remittance_calc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`remittance_calc`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`remittance_calc`(
vDated DATE
)
BEGIN
diff --git a/db/routines/vn/procedures/reportLabelCollection_get.sql b/db/routines/vn/procedures/reportLabelCollection_get.sql
index f3bcbfa28..fc6faf471 100644
--- a/db/routines/vn/procedures/reportLabelCollection_get.sql
+++ b/db/routines/vn/procedures/reportLabelCollection_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`reportLabelCollection_get`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`reportLabelCollection_get`(
vParam INT,
vLabelCount INT
)
diff --git a/db/routines/vn/procedures/report_print.sql b/db/routines/vn/procedures/report_print.sql
index 5d399dedf..a5e08538e 100644
--- a/db/routines/vn/procedures/report_print.sql
+++ b/db/routines/vn/procedures/report_print.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`report_print`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`report_print`(
vReportName VARCHAR(100),
vPrinterFk INT,
vUserFk INT,
diff --git a/db/routines/vn/procedures/routeGuessPriority.sql b/db/routines/vn/procedures/routeGuessPriority.sql
index 7208fcbcf..b5445bc50 100644
--- a/db/routines/vn/procedures/routeGuessPriority.sql
+++ b/db/routines/vn/procedures/routeGuessPriority.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`routeGuessPriority`(IN vRuta INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`routeGuessPriority`(IN vRuta INT)
BEGIN
/* Usa los valores del ultimo año para adivinar el orden de los tickets en la ruta
* vRuta id ruta
diff --git a/db/routines/vn/procedures/routeInfo.sql b/db/routines/vn/procedures/routeInfo.sql
index 1f25b1429..bcfba3f51 100644
--- a/db/routines/vn/procedures/routeInfo.sql
+++ b/db/routines/vn/procedures/routeInfo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`routeInfo`(vRouteFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`routeInfo`(vRouteFk INT)
BEGIN
DECLARE vPackages INT;
diff --git a/db/routines/vn/procedures/routeMonitor_calculate.sql b/db/routines/vn/procedures/routeMonitor_calculate.sql
index 463c176ff..c9a7a9ccf 100644
--- a/db/routines/vn/procedures/routeMonitor_calculate.sql
+++ b/db/routines/vn/procedures/routeMonitor_calculate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`routeMonitor_calculate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`routeMonitor_calculate`(
vDate DATE,
vDaysAgo INT
)
diff --git a/db/routines/vn/procedures/routeSetOk.sql b/db/routines/vn/procedures/routeSetOk.sql
index 86b32fe7b..bd77c7c14 100644
--- a/db/routines/vn/procedures/routeSetOk.sql
+++ b/db/routines/vn/procedures/routeSetOk.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`routeSetOk`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`routeSetOk`(
vRouteFk INT)
BEGIN
diff --git a/db/routines/vn/procedures/routeUpdateM3.sql b/db/routines/vn/procedures/routeUpdateM3.sql
index 7dbf5a194..a3f78bfa3 100644
--- a/db/routines/vn/procedures/routeUpdateM3.sql
+++ b/db/routines/vn/procedures/routeUpdateM3.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`routeUpdateM3`(vRoute INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`routeUpdateM3`(vRoute INT)
BEGIN
/**
* @deprecated Use vn.route_updateM3()
diff --git a/db/routines/vn/procedures/route_calcCommission.sql b/db/routines/vn/procedures/route_calcCommission.sql
index 63f702bee..7c911a5e2 100644
--- a/db/routines/vn/procedures/route_calcCommission.sql
+++ b/db/routines/vn/procedures/route_calcCommission.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`route_calcCommission`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`route_calcCommission`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/route_doRecalc.sql b/db/routines/vn/procedures/route_doRecalc.sql
index 365796f7e..03faa8df1 100644
--- a/db/routines/vn/procedures/route_doRecalc.sql
+++ b/db/routines/vn/procedures/route_doRecalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`route_doRecalc`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`route_doRecalc`()
proc: BEGIN
/**
* Recalculates modified route.
diff --git a/db/routines/vn/procedures/route_getTickets.sql b/db/routines/vn/procedures/route_getTickets.sql
index 55b08208f..136c8f520 100644
--- a/db/routines/vn/procedures/route_getTickets.sql
+++ b/db/routines/vn/procedures/route_getTickets.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`route_getTickets`(vRouteFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`route_getTickets`(vRouteFk INT)
BEGIN
/**
* Pasado un RouteFk devuelve la información
diff --git a/db/routines/vn/procedures/route_updateM3.sql b/db/routines/vn/procedures/route_updateM3.sql
index 92d26b753..f6842bf1d 100644
--- a/db/routines/vn/procedures/route_updateM3.sql
+++ b/db/routines/vn/procedures/route_updateM3.sql
@@ -1,14 +1,18 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`route_updateM3`(vRoute INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`route_updateM3`(
+ vSelf INT
+)
BEGIN
+/**
+ * Actualiza el volumen de la ruta.
+ *
+ * @param vSelf Id ruta
+ */
+ DECLARE vVolume DECIMAL(10,1)
+ DEFAULT (SELECT SUM(volume) FROM saleVolume WHERE routeFk = vSelf);
- UPDATE vn.route r
- LEFT JOIN (
- SELECT routeFk, SUM(volume) AS m3
- FROM saleVolume
- WHERE routeFk = vRoute
- ) v ON v.routeFk = r.id
- SET r.m3 = IFNULL(v.m3,0)
- WHERE r.id =vRoute;
+ UPDATE `route`
+ SET m3 = IFNULL(vVolume, 0)
+ WHERE id = vSelf;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/saleBuy_Add.sql b/db/routines/vn/procedures/saleBuy_Add.sql
index 2f689ad2a..7ad1f051d 100644
--- a/db/routines/vn/procedures/saleBuy_Add.sql
+++ b/db/routines/vn/procedures/saleBuy_Add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleBuy_Add`(vSaleFk INT, vBuyFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleBuy_Add`(vSaleFk INT, vBuyFk INT)
BEGIN
/* Añade un registro a la tabla saleBuy en el caso de que sea posible mantener la trazabilidad
diff --git a/db/routines/vn/procedures/saleGroup_add.sql b/db/routines/vn/procedures/saleGroup_add.sql
index 63e3bdedd..2057c4ac8 100644
--- a/db/routines/vn/procedures/saleGroup_add.sql
+++ b/db/routines/vn/procedures/saleGroup_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleGroup_add`(vSectorFk INT,vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleGroup_add`(vSectorFk INT,vTicketFk INT)
BEGIN
/**
* Añade un nuevo registro a la tabla y devuelve su id.
diff --git a/db/routines/vn/procedures/saleGroup_setParking.sql b/db/routines/vn/procedures/saleGroup_setParking.sql
index 551ca6386..889583c82 100644
--- a/db/routines/vn/procedures/saleGroup_setParking.sql
+++ b/db/routines/vn/procedures/saleGroup_setParking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleGroup_setParking`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleGroup_setParking`(
vSaleGroupFk VARCHAR(8),
vParkingFk INT
)
@@ -10,15 +10,10 @@ 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
- AND sg.created >= util.VN_CURDATE() - INTERVAL 1 WEEK;
+ WHERE sg.id = vSaleGroupFk
+ AND sg.created >= util.VN_CURDATE() - INTERVAL 1 WEEK;
CALL ticket_setNextState(ticket_get(vSaleGroupFk));
END$$
diff --git a/db/routines/vn/procedures/saleMistake_Add.sql b/db/routines/vn/procedures/saleMistake_Add.sql
index cc174993e..93db28bb9 100644
--- a/db/routines/vn/procedures/saleMistake_Add.sql
+++ b/db/routines/vn/procedures/saleMistake_Add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleMistake_Add`(vSaleFk INT, vUserFk INT, vTypeFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleMistake_Add`(vSaleFk INT, vUserFk INT, vTypeFk INT)
BEGIN
INSERT INTO vn.saleMistake(saleFk, userFk, typeFk)
diff --git a/db/routines/vn/procedures/salePreparingList.sql b/db/routines/vn/procedures/salePreparingList.sql
index ae3a267f3..9964c3e87 100644
--- a/db/routines/vn/procedures/salePreparingList.sql
+++ b/db/routines/vn/procedures/salePreparingList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`salePreparingList`(IN vTicketFk BIGINT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`salePreparingList`(IN vTicketFk BIGINT)
BEGIN
/**
* Devuelve un listado con las lineas de vn.sale y los distintos estados de prepacion
diff --git a/db/routines/vn/procedures/saleSplit.sql b/db/routines/vn/procedures/saleSplit.sql
index dab78d811..6fa4d48b3 100644
--- a/db/routines/vn/procedures/saleSplit.sql
+++ b/db/routines/vn/procedures/saleSplit.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleSplit`(vSaleFk INT, vQuantity INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleSplit`(vSaleFk INT, vQuantity INT)
BEGIN
diff --git a/db/routines/vn/procedures/saleTracking_add.sql b/db/routines/vn/procedures/saleTracking_add.sql
index dc347b0e3..6b7fa5ed3 100644
--- a/db/routines/vn/procedures/saleTracking_add.sql
+++ b/db/routines/vn/procedures/saleTracking_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleTracking_add`(vSaleGroupFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleTracking_add`(vSaleGroupFk INT)
BEGIN
/** Inserta en vn.saleTracking las lineas de una previa
*
diff --git a/db/routines/vn/procedures/saleTracking_addPreparedSaleGroup.sql b/db/routines/vn/procedures/saleTracking_addPreparedSaleGroup.sql
index b9475433c..8c5d336ab 100644
--- a/db/routines/vn/procedures/saleTracking_addPreparedSaleGroup.sql
+++ b/db/routines/vn/procedures/saleTracking_addPreparedSaleGroup.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleTracking_addPreparedSaleGroup`(vSaleGroupFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleTracking_addPreparedSaleGroup`(vSaleGroupFk INT)
BEGIN
/**
* Inserta lineas de vn.saleTracking para un saleGroup (previa) que escanea un sacador
diff --git a/db/routines/vn/procedures/saleTracking_addPrevOK.sql b/db/routines/vn/procedures/saleTracking_addPrevOK.sql
index 84cea965f..34d1cfac8 100644
--- a/db/routines/vn/procedures/saleTracking_addPrevOK.sql
+++ b/db/routines/vn/procedures/saleTracking_addPrevOK.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleTracking_addPrevOK`(vSectorCollectionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleTracking_addPrevOK`(vSectorCollectionFk INT)
BEGIN
/**
* Inserta los registros de la colección de sector con el estado PREVIA OK
diff --git a/db/routines/vn/procedures/saleTracking_del.sql b/db/routines/vn/procedures/saleTracking_del.sql
index 263bd68a1..3c8282b1e 100644
--- a/db/routines/vn/procedures/saleTracking_del.sql
+++ b/db/routines/vn/procedures/saleTracking_del.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleTracking_del`(vSaleFk INT, vState VARCHAR(50))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleTracking_del`(vSaleFk INT, vState VARCHAR(50))
BEGIN
DELETE FROM itemShelvingSale
diff --git a/db/routines/vn/procedures/saleTracking_new.sql b/db/routines/vn/procedures/saleTracking_new.sql
index 5982f8df0..f43ba53fa 100644
--- a/db/routines/vn/procedures/saleTracking_new.sql
+++ b/db/routines/vn/procedures/saleTracking_new.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleTracking_new`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleTracking_new`(
vSaleFK INT,
vIsChecked BOOLEAN,
vOriginalQuantity INT,
diff --git a/db/routines/vn/procedures/saleTracking_updateIsChecked.sql b/db/routines/vn/procedures/saleTracking_updateIsChecked.sql
index 57d8df701..0d4d27f73 100644
--- a/db/routines/vn/procedures/saleTracking_updateIsChecked.sql
+++ b/db/routines/vn/procedures/saleTracking_updateIsChecked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleTracking_updateIsChecked`(vSaleFK INT, vIsChecked BOOL, vIsScanned BOOL)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`saleTracking_updateIsChecked`(vSaleFK INT, vIsChecked BOOL, vIsScanned BOOL)
BEGIN
/**
diff --git a/db/routines/vn/procedures/sale_PriceFix.sql b/db/routines/vn/procedures/sale_PriceFix.sql
index 5f956cba8..bdd7ad77f 100644
--- a/db/routines/vn/procedures/sale_PriceFix.sql
+++ b/db/routines/vn/procedures/sale_PriceFix.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_PriceFix`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_PriceFix`(vTicketFk INT)
BEGIN
DELETE sc.*
diff --git a/db/routines/vn/procedures/sale_boxPickingPrint.sql b/db/routines/vn/procedures/sale_boxPickingPrint.sql
index dbb3b6c14..acb60ed31 100644
--- a/db/routines/vn/procedures/sale_boxPickingPrint.sql
+++ b/db/routines/vn/procedures/sale_boxPickingPrint.sql
@@ -1,6 +1,6 @@
DELIMITER $$
$$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE vn.sale_boxPickingPrint(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE vn.sale_boxPickingPrint(
IN vPrinterFk INT,
IN vSaleFk INT,
IN vPacking INT,
diff --git a/db/routines/vn/procedures/sale_calculateComponent.sql b/db/routines/vn/procedures/sale_calculateComponent.sql
index 63786c75c..4264603cd 100644
--- a/db/routines/vn/procedures/sale_calculateComponent.sql
+++ b/db/routines/vn/procedures/sale_calculateComponent.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_calculateComponent`(vSelf INT, vOption VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_calculateComponent`(vSelf INT, vOption VARCHAR(25))
proc: BEGIN
/**
* Crea tabla temporal para vn.sale_recalcComponent() para recalcular los componentes
diff --git a/db/routines/vn/procedures/sale_getBoxPickingList.sql b/db/routines/vn/procedures/sale_getBoxPickingList.sql
index a95ed5b0c..f343ab375 100644
--- a/db/routines/vn/procedures/sale_getBoxPickingList.sql
+++ b/db/routines/vn/procedures/sale_getBoxPickingList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_getBoxPickingList`(vSectorFk INT, vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getBoxPickingList`(vSectorFk INT, vDated DATE)
BEGIN
/**
* Returns a suitable boxPicking sales list
diff --git a/db/routines/vn/procedures/sale_getFromTicketOrCollection.sql b/db/routines/vn/procedures/sale_getFromTicketOrCollection.sql
index 5308bdd28..b395d5bc4 100644
--- a/db/routines/vn/procedures/sale_getFromTicketOrCollection.sql
+++ b/db/routines/vn/procedures/sale_getFromTicketOrCollection.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_getFromTicketOrCollection`(vParam INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getFromTicketOrCollection`(vParam INT)
BEGIN
/**
* Visualizar lineas de la tabla sale a través del parámetro vParam que puede
diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql
index ba4ff5857..3f2c76251 100644
--- a/db/routines/vn/procedures/sale_getProblems.sql
+++ b/db/routines/vn/procedures/sale_getProblems.sql
@@ -1,40 +1,34 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_getProblems`(IN vIsTodayRelative tinyint(1))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getProblems`(
+ vIsTodayRelative tinyint(1)
+)
BEGIN
/**
* Calcula los problemas de cada venta para un conjunto de tickets.
*
* @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy
- * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular
+ * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Tickets a calcular
* @return tmp.sale_problems
*/
- DECLARE vWarehouseFk INT;
+ DECLARE vWarehouseFk INT;
DECLARE vDate DATE;
- DECLARE vAvailableCache INT;
+ DECLARE vAvailableCache INT;
DECLARE vVisibleCache INT;
DECLARE vDone BOOL;
- DECLARE vComponentCount INT;
-
- DECLARE vCursor CURSOR FOR
- SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(tt.shipped))
- FROM tmp.sale_getProblems tt
- WHERE DATE(tt.shipped) BETWEEN util.VN_CURDATE()
- AND util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY;
+ DECLARE vCursor CURSOR FOR
+ SELECT DISTINCT warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(shipped))
+ FROM tmp.sale_getProblems
+ WHERE shipped BETWEEN util.VN_CURDATE()
+ AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- DELETE tt.*
- FROM tmp.sale_getProblems tt
- JOIN ticketObservation tto ON tto.ticketFk = tt.ticketFk
- JOIN observationType ot ON ot.id = tto.observationTypeFk
- WHERE ot.code = 'administrative'
- AND tto.description = 'Miriam';
-
CREATE OR REPLACE TEMPORARY TABLE tmp.sale_problems (
ticketFk INT(11),
saleFk INT(11),
isFreezed INTEGER(1) DEFAULT 0,
risk DECIMAL(10,1) DEFAULT 0,
+ hasRisk TINYINT(1) DEFAULT 0,
hasHighRisk TINYINT(1) DEFAULT 0,
hasTicketRequest INTEGER(1) DEFAULT 0,
itemShortage VARCHAR(255),
@@ -48,107 +42,48 @@ BEGIN
PRIMARY KEY (ticketFk, saleFk)
) ENGINE = MEMORY;
- CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_list
- (PRIMARY KEY (ticketFk))
- ENGINE = MEMORY
- SELECT ticketFk, clientFk
- FROM tmp.sale_getProblems;
+ INSERT INTO tmp.sale_problems(ticketFk,
+ saleFk,
+ isFreezed,
+ risk,
+ hasRisk,
+ hasHighRisk,
+ hasTicketRequest,
+ isTaxDataChecked,
+ hasComponentLack,
+ hasRounding,
+ isTooLittle)
+ SELECT sgp.ticketFk,
+ s.id,
+ IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed,
+ t.risk,
+ IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk,
+ IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk,
+ IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest,
+ IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked,
+ IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack,
+ IF(FIND_IN_SET('hasRounding', s.problem),
+ LEFT(GROUP_CONCAT('RE: ', i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250),
+ NULL
+ ) hasRounding,
+ IF(FIND_IN_SET('isTooLittle', t.problem)
+ AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE,
+ TRUE, FALSE) isTooLittle
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
+ LEFT JOIN sale s ON s.ticketFk = t.id
+ LEFT JOIN item i ON i.id = s.itemFk
+ LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
+ AND zc.dated = util.VN_CURDATE()
+ WHERE s.problem <> '' OR t.problem <> '' OR t.risk
+ GROUP BY t.id, s.id;
- SELECT COUNT(*) INTO vComponentCount
- FROM component
- WHERE isRequired;
-
- -- Too Little
- INSERT INTO tmp.sale_problems(ticketFk, isTooLittle)
- SELECT tp.ticketFk, TRUE
- FROM tmp.sale_getProblems tp
- JOIN ticket t ON t.id = tp.ticketFk
- JOIN (
- SELECT t.addressFk,
- SUM(ROUND(`ic`.`cm3delivery` * `s`.`quantity` / 1000, 0)) litros,
- t.totalWithoutVat
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- JOIN sale s ON s.ticketFk = t.id
- AND s.quantity > 0
- JOIN itemCost ic ON ic.itemFk = s.itemFk
- AND ic.warehouseFk = t.warehouseFk
- JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
- AND zc.dated = util.VN_CURDATE()
- JOIN agencyMode am ON am.id = t.agencyModeFk
- JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- WHERE util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE
- AND dm.code IN ('AGENCY','DELIVERY','PICKUP')
- AND t.shipped BETWEEN util.VN_CURDATE() AND util.midnight()
- GROUP BY t.addressFk
- ) sub ON sub.addressFk = t.addressFk
- JOIN volumeConfig vc
- WHERE sub.litros < vc.minTicketVolume
- AND sub.totalWithoutVat < vc.minTicketValue;
-
- -- VIP
INSERT INTO tmp.sale_problems(ticketFk, isVip)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
+ SELECT sgp.ticketFk, TRUE
+ FROM tmp.sale_getProblems sgp
+ JOIN client c ON c.id = sgp.clientFk
WHERE c.businessTypeFk = 'VIP'
- ON DUPLICATE KEY UPDATE isVip = TRUE;
-
- -- 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
- 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 agencyMode am ON am.id = t.agencyModeFk
- JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- WHERE dm.code IN ('AGENCY','DELIVERY','PICKUP')
- AND s.quantity > 0
- GROUP BY s.id
- ) sub
- HAVING hasComponentLack;
-
- -- Cliente congelado
- INSERT INTO tmp.sale_problems(ticketFk, isFreezed)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
- WHERE c.isFreezed
- ON DUPLICATE KEY UPDATE isFreezed = c.isFreezed;
-
- -- Credit exceeded
- CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt
- (PRIMARY KEY (clientFk))
- ENGINE = MEMORY
- SELECT DISTINCT clientFk
- FROM tmp.ticket_list;
-
- CALL client_getDebt(util.VN_CURDATE());
-
- INSERT INTO tmp.sale_problems(ticketFk, risk, hasHighRisk)
- SELECT DISTINCT tl.ticketFk, r.risk, ((r.risk - cc.riskTolerance) > c.credit + 10)
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- JOIN agencyMode a ON t.agencyModeFk = a.id
- JOIN tmp.risk r ON r.clientFk = t.clientFk
- JOIN client c ON c.id = t.clientFk
- JOIN clientConfig cc
- WHERE r.risk > c.credit + 10
- AND NOT a.isRiskFree
- ON DUPLICATE KEY UPDATE
- risk = r.risk, hasHighRisk = ((r.risk - cc.riskTolerance) > c.credit + 10);
-
- -- Antiguo COD 100, son peticiones de compra sin terminar
- INSERT INTO tmp.sale_problems(ticketFk, hasTicketRequest)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN ticketRequest tr ON tr.ticketFk = tl.ticketFk
- WHERE tr.isOK IS NULL
- ON DUPLICATE KEY UPDATE hasTicketRequest = TRUE;
+ ON DUPLICATE KEY UPDATE isVIP = TRUE;
CREATE OR REPLACE TEMPORARY TABLE tItemShelvingStock_byWarehouse
(INDEX (itemFk, warehouseFk))
@@ -160,10 +95,9 @@ BEGIN
JOIN shelving sh ON sh.code = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector s ON s.id = p.sectorFk
- GROUP BY ish.itemFk,
- s.warehouseFk;
+ GROUP BY ish.itemFk, s.warehouseFk;
- -- Disponible, Faltas, Inventario y Retrasos
+ -- Disponible, faltas, inventario y retrasos
OPEN vCursor;
l: LOOP
SET vDone = FALSE;
@@ -182,14 +116,14 @@ BEGIN
INSERT INTO tmp.sale_problems(ticketFk, itemShortage, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
- LEFT(CONCAT('F: ',GROUP_CONCAT(i.id, ' ', i.longName, ' ')),250) problem,
- s.id AS saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ SELECT sgp.ticketFk,
+ LEFT(CONCAT('F: ', GROUP_CONCAT(i.id, ' ', i.longName, ' ')), 250) problem,
+ s.id saleFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = i.id
AND v.calc_id = vVisibleCache
@@ -197,8 +131,8 @@ BEGIN
AND av.calc_id = vAvailableCache
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
- WHERE IFNULL(v.visible,0) < s.quantity
- AND IFNULL(av.available ,0) < s.quantity
+ WHERE IFNULL(v.visible, 0) < s.quantity
+ AND IFNULL(av.available, 0) < s.quantity
AND IFNULL(issw.visible, 0) < s.quantity
AND NOT s.isPicked
AND NOT s.reserved
@@ -207,27 +141,27 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk) sub
+ GROUP BY sgp.ticketFk) sub
ON DUPLICATE KEY UPDATE itemShortage = sub.problem, saleFk = sub.saleFk;
-- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida
INSERT INTO tmp.sale_problems(ticketFk, itemLost, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
+ SELECT sgp.ticketFk,
LEFT(GROUP_CONCAT('I: ', i.id, ' ', i.longName, ' '), 250) problem,
s.id saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = s.itemFk
AND v.calc_id = vVisibleCache
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
- WHERE IFNULL(v.visible,0) >= s.quantity
+ WHERE IFNULL(v.visible, 0) >= s.quantity
AND IFNULL(issw.visible, 0) < s.quantity
AND s.quantity > 0
AND NOT s.isPicked
@@ -237,22 +171,22 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk
+ GROUP BY sgp.ticketFk
) sub
- ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk;
+ ON DUPLICATE KEY UPDATE itemLost = sub.problem, saleFk = sub.saleFk;
-- Retraso: Disponible suficiente, pero no visible ni ubicado
INSERT INTO tmp.sale_problems(ticketFk, itemDelay, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
+ SELECT sgp.ticketFk,
LEFT(GROUP_CONCAT('R: ', i.id, ' ', i.longName, ' '), 250) problem,
s.id saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = s.itemFk
AND v.calc_id = vVisibleCache
@@ -271,42 +205,27 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk
+ GROUP BY sgp.ticketFk
) sub
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);
- INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk)
- SELECT ticketFk, problem ,saleFk
- FROM (
- SELECT tl.ticketFk,
- s.id saleFk,
- LEFT(GROUP_CONCAT('RE: ',i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- AND t.warehouseFk = vWarehouseFk
- JOIN sale s ON s.ticketFk = tl.ticketFk
- JOIN item i ON i.id = s.itemFk
- JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
- JOIN buy b ON b.id = bu.buyFk
- WHERE MOD(s.quantity, b.`grouping`)
- GROUP BY tl.ticketFk
- )sub
- ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk;
END LOOP;
CLOSE vCursor;
-
- INSERT INTO tmp.sale_problems(ticketFk, isTaxDataChecked)
- SELECT DISTINCT tl.ticketFk, FALSE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
- WHERE NOT c.isTaxDataChecked
- ON DUPLICATE KEY UPDATE isTaxDataChecked = FALSE;
- DROP TEMPORARY TABLE
- tmp.clientGetDebt,
- tmp.ticket_list,
- tItemShelvingStock_byWarehouse;
+ INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk)
+ SELECT ticketFk, problem, saleFk
+ FROM (
+ SELECT sgp.ticketFk,
+ s.id saleFk,
+ LEFT(GROUP_CONCAT('RE: ', i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
+ JOIN sale s ON s.ticketFk = sgp.ticketFk
+ JOIN item i ON i.id = s.itemFk
+ WHERE FIND_IN_SET('hasRounding', s.problem)
+ GROUP BY sgp.ticketFk
+ ) sub
+ ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk;
+
+ DROP TEMPORARY TABLE tItemShelvingStock_byWarehouse;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/sale_getProblemsByTicket.sql b/db/routines/vn/procedures/sale_getProblemsByTicket.sql
index b4aaad7de..ff419989d 100644
--- a/db/routines/vn/procedures/sale_getProblemsByTicket.sql
+++ b/db/routines/vn/procedures/sale_getProblemsByTicket.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_getProblemsByTicket`(IN vTicketFk INT, IN vIsTodayRelative TINYINT(1))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getProblemsByTicket`(IN vTicketFk INT, IN vIsTodayRelative TINYINT(1))
BEGIN
/**
* Calcula los problemas de cada venta
@@ -7,8 +7,7 @@ BEGIN
*
* @return Problems result
*/
- DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems;
- CREATE TEMPORARY TABLE tmp.sale_getProblems
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
(INDEX (ticketFk))
ENGINE = MEMORY
SELECT t.id ticketFk, t.clientFk, t.warehouseFk, t.shipped
diff --git a/db/routines/vn/procedures/sale_recalcComponent.sql b/db/routines/vn/procedures/sale_recalcComponent.sql
index 54297571a..19fadd0b9 100644
--- a/db/routines/vn/procedures/sale_recalcComponent.sql
+++ b/db/routines/vn/procedures/sale_recalcComponent.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_recalcComponent`(vOption VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_recalcComponent`(vOption VARCHAR(25))
proc: BEGIN
/**
* Este procedimiento recalcula los componentes de un conjunto de sales,
@@ -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
diff --git a/db/routines/vn/procedures/sale_replaceItem.sql b/db/routines/vn/procedures/sale_replaceItem.sql
index a4aefc088..a61d260cc 100644
--- a/db/routines/vn/procedures/sale_replaceItem.sql
+++ b/db/routines/vn/procedures/sale_replaceItem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_replaceItem`(vSaleFk INT, vNewItemFk INT, vQuantity INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_replaceItem`(vSaleFk INT, vNewItemFk INT, vQuantity INT)
BEGIN
/**
* Añade un nuevo articulo para sustituir a otro, y actualiza la memoria de sustituciones.
@@ -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;
diff --git a/db/routines/vn/procedures/sale_setProblem.sql b/db/routines/vn/procedures/sale_setProblem.sql
index b0870089f..333590658 100644
--- a/db/routines/vn/procedures/sale_setProblem.sql
+++ b/db/routines/vn/procedures/sale_setProblem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblem`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_setProblem`(
vProblemCode VARCHAR(25)
)
BEGIN
@@ -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(
- IF(vHasProblem,
- CONCAT(problem, ',', vProblemCode),
- REPLACE(problem, vProblemCode , '')))
+ SET problem = IF (vIsProblemCalcNeeded,
+ CONCAT(
+ IF(vHasProblem,
+ CONCAT(problem, ',', vProblemCode),
+ REPLACE(problem, vProblemCode , ''))),
+ NULL)
WHERE id = vSaleFk;
END LOOP;
CLOSE vSaleList;
diff --git a/db/routines/vn/procedures/sale_setProblemComponentLack.sql b/db/routines/vn/procedures/sale_setProblemComponentLack.sql
index aa5f5f1be..ad14d97d4 100644
--- a/db/routines/vn/procedures/sale_setProblemComponentLack.sql
+++ b/db/routines/vn/procedures/sale_setProblemComponentLack.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemComponentLack`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_setProblemComponentLack`(
vSelf INT
)
BEGIN
@@ -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;
diff --git a/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
index 2ee49b656..fc432f8b3 100644
--- a/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
+++ b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemComponentLackByComponent`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_setProblemComponentLackByComponent`(
vComponentFk INT
)
BEGIN
@@ -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
diff --git a/db/routines/vn/procedures/sale_setProblemRounding.sql b/db/routines/vn/procedures/sale_setProblemRounding.sql
index f58d00799..38f598140 100644
--- a/db/routines/vn/procedures/sale_setProblemRounding.sql
+++ b/db/routines/vn/procedures/sale_setProblemRounding.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemRounding`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_setProblemRounding`(
vSelf INT
)
BEGIN
@@ -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,
diff --git a/db/routines/vn/procedures/sale_setProblemRoundingByBuy.sql b/db/routines/vn/procedures/sale_setProblemRoundingByBuy.sql
new file mode 100644
index 000000000..b0e286d25
--- /dev/null
+++ b/db/routines/vn/procedures/sale_setProblemRoundingByBuy.sql
@@ -0,0 +1,75 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemRoundingByBuy`(
+ vBuyFk INT
+)
+BEGIN
+/**
+ * Update rounding problem for all sales related to a buy.
+ *
+ * @param vBuyFk Buy id
+ */
+ DECLARE vItemFk INT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vMaxDated DATE;
+ DECLARE vMinDated DATE;
+ DECLARE vLanding DATE;
+ DECLARE vLastBuy INT;
+ DECLARE vCurrentBuy INT;
+ DECLARE vGrouping INT;
+
+ SELECT b.itemFk, t.warehouseInFk
+ INTO vItemFk, vWarehouseFk
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE b.id = vBuyFk;
+
+ IF vItemFk AND vWarehouseFk THEN
+ SELECT DATE(MAX(t.shipped)) + INTERVAL 1 DAY, DATE(MIN(t.shipped))
+ INTO vMaxDated, vMinDated
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE t.shipped >= util.VN_CURDATE()
+ AND s.itemFk = vItemFk
+ AND s.quantity > 0;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMinDated);
+
+ SELECT bu.buyFk, b.grouping INTO vLastBuy, vGrouping
+ FROM tmp.buyUltimate bu
+ JOIN buy b ON b.id = bu.buyFk;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+
+ SET vLanding = vMaxDated;
+
+ WHILE vCurrentBuy <> vLastBuy OR vLanding > vMinDated DO
+ SET vMaxDated = vLanding - INTERVAL 1 DAY;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMaxDated);
+
+ SELECT buyFk, landing
+ INTO vCurrentBuy, vLanding
+ FROM tmp.buyUltimate;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+ END WHILE;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk, isProblemCalcNeeded))
+ ENGINE = MEMORY
+ SELECT s.id saleFk,
+ MOD(s.quantity, vGrouping) hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE s.itemFk = vItemFk
+ AND s.quantity > 0
+ AND t.shipped BETWEEN vMinDated AND util.dayEnd(vMaxDated);
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ END IF;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/sales_merge.sql b/db/routines/vn/procedures/sales_merge.sql
deleted file mode 100644
index 3dd01f9bc..000000000
--- a/db/routines/vn/procedures/sales_merge.sql
+++ /dev/null
@@ -1,41 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sales_merge`(vTicketFk INT)
-BEGIN
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- ROLLBACK;
- RESIGNAL;
- END;
-
- CREATE OR REPLACE TEMPORARY TABLE tSalesToPreserve
- (PRIMARY KEY (id))
- ENGINE = MEMORY
- SELECT s.id, s.itemFk, SUM(s.quantity) newQuantity
- FROM sale s
- JOIN item i ON i.id = s.itemFk
- JOIN itemType it ON it.id = i.typeFk
- WHERE s.ticketFk = vTicketFk
- AND it.isMergeable
- GROUP BY s.itemFk, s.price, s.discount;
-
- START TRANSACTION;
-
- UPDATE sale s
- JOIN tSalesToPreserve stp ON stp.id = s.id
- SET s.quantity = newQuantity
- WHERE s.ticketFk = vTicketFk;
-
- DELETE s.*
- FROM sale s
- LEFT JOIN tSalesToPreserve stp ON stp.id = s.id
- JOIN item i ON i.id = s.itemFk
- JOIN itemType it ON it.id = i.typeFk
- WHERE s.ticketFk = vTicketFk
- AND stp.id IS NULL
- AND it.isMergeable;
-
- COMMIT;
-
- DROP TEMPORARY TABLE tSalesToPreserve;
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/sales_mergeByCollection.sql b/db/routines/vn/procedures/sales_mergeByCollection.sql
index 4c0693753..279f9593f 100644
--- a/db/routines/vn/procedures/sales_mergeByCollection.sql
+++ b/db/routines/vn/procedures/sales_mergeByCollection.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sales_mergeByCollection`(vCollectionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sales_mergeByCollection`(vCollectionFk INT)
BEGIN
DECLARE vDone BOOL;
@@ -26,7 +26,7 @@ BEGIN
LEAVE myLoop;
END IF;
- CALL vn.sales_merge(vTicketFk);
+ CALL ticket_mergeSales(vTicketFk);
END LOOP;
diff --git a/db/routines/vn/procedures/sectorCollectionSaleGroup_add.sql b/db/routines/vn/procedures/sectorCollectionSaleGroup_add.sql
index 5ffb30635..9ca1227c1 100644
--- a/db/routines/vn/procedures/sectorCollectionSaleGroup_add.sql
+++ b/db/routines/vn/procedures/sectorCollectionSaleGroup_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorCollectionSaleGroup_add`(vSaleGroupFk INT, vSectorCollectionFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sectorCollectionSaleGroup_add`(vSaleGroupFk INT, vSectorCollectionFk INT)
BEGIN
/**
* Inserta un nuevo registro en vn.sectorCollectionSaleGroup
diff --git a/db/routines/vn/procedures/sectorCollection_get.sql b/db/routines/vn/procedures/sectorCollection_get.sql
index e518e05f8..97a44b150 100644
--- a/db/routines/vn/procedures/sectorCollection_get.sql
+++ b/db/routines/vn/procedures/sectorCollection_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorCollection_get`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sectorCollection_get`()
BEGIN
/**
* Devuelve las colecciones del sector que corresponden al usuario conectado, y que estan incompletas
diff --git a/db/routines/vn/procedures/sectorCollection_getMyPartial.sql b/db/routines/vn/procedures/sectorCollection_getMyPartial.sql
index 21f26770a..e02455235 100644
--- a/db/routines/vn/procedures/sectorCollection_getMyPartial.sql
+++ b/db/routines/vn/procedures/sectorCollection_getMyPartial.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorCollection_getMyPartial`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sectorCollection_getMyPartial`()
BEGIN
/**
* Devuelve las colecciones del sector que corresponden al usuario conectado, y que estan incompletas
diff --git a/db/routines/vn/procedures/sectorCollection_getSale.sql b/db/routines/vn/procedures/sectorCollection_getSale.sql
index e1636895b..b3b1f0f3f 100644
--- a/db/routines/vn/procedures/sectorCollection_getSale.sql
+++ b/db/routines/vn/procedures/sectorCollection_getSale.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorCollection_getSale`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sectorCollection_getSale`(vSelf INT)
BEGIN
/**
* Devuelve las lineas de venta correspondientes a esa coleccion de sector
diff --git a/db/routines/vn/procedures/sectorCollection_hasSalesReserved.sql b/db/routines/vn/procedures/sectorCollection_hasSalesReserved.sql
index acb460190..6d0fb8f23 100644
--- a/db/routines/vn/procedures/sectorCollection_hasSalesReserved.sql
+++ b/db/routines/vn/procedures/sectorCollection_hasSalesReserved.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION vn.sectorCollection_hasSalesReserved(vSelf INT) RETURNS tinyint(1)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION vn.sectorCollection_hasSalesReserved(vSelf INT) RETURNS tinyint(1)
DETERMINISTIC
BEGIN
/**
diff --git a/db/routines/vn/procedures/sectorCollection_new.sql b/db/routines/vn/procedures/sectorCollection_new.sql
index fae8eba31..3f0112015 100644
--- a/db/routines/vn/procedures/sectorCollection_new.sql
+++ b/db/routines/vn/procedures/sectorCollection_new.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorCollection_new`(vSectorFk INT)
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sectorCollection_new`(vSectorFk INT)
BEGIN
/**
* Inserta una nueva colección, si el usuario no tiene ninguna vacia.
@@ -24,5 +24,5 @@ BEGIN
INSERT INTO vn.sectorCollection(userFk, sectorFk)
VALUES(vUserFk, vSectorFk);
END IF;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/sectorProductivity_add.sql b/db/routines/vn/procedures/sectorProductivity_add.sql
index be75c842d..8b520e692 100644
--- a/db/routines/vn/procedures/sectorProductivity_add.sql
+++ b/db/routines/vn/procedures/sectorProductivity_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sectorProductivity_add`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sectorProductivity_add`()
BEGIN
DECLARE vDatedFrom DATETIME;
DECLARE vDatedTo DATETIME;
diff --git a/db/routines/vn/procedures/sector_getWarehouse.sql b/db/routines/vn/procedures/sector_getWarehouse.sql
index fe363f39f..5a9f1ee5f 100644
--- a/db/routines/vn/procedures/sector_getWarehouse.sql
+++ b/db/routines/vn/procedures/sector_getWarehouse.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sector_getWarehouse`(vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sector_getWarehouse`(vSectorFk INT)
BEGIN
SELECT s.warehouseFk
diff --git a/db/routines/vn/procedures/setParking.sql b/db/routines/vn/procedures/setParking.sql
index 1aa4f920a..96b459031 100644
--- a/db/routines/vn/procedures/setParking.sql
+++ b/db/routines/vn/procedures/setParking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`setParking`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`setParking`(
vParam VARCHAR(8),
vParkingCode VARCHAR(8)
)
@@ -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 ;
diff --git a/db/routines/vn/procedures/shelvingChange.sql b/db/routines/vn/procedures/shelvingChange.sql
index fde38212c..2e7e92082 100644
--- a/db/routines/vn/procedures/shelvingChange.sql
+++ b/db/routines/vn/procedures/shelvingChange.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelvingChange`(IN `vShelvingO` VARCHAR(8), IN `vShelvingD` VARCHAR(8))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`shelvingChange`(IN `vShelvingO` VARCHAR(8), IN `vShelvingD` VARCHAR(8))
BEGIN
UPDATE vn.itemShelving
diff --git a/db/routines/vn/procedures/shelvingLog_get.sql b/db/routines/vn/procedures/shelvingLog_get.sql
index d48e38d03..d72d6cf8b 100644
--- a/db/routines/vn/procedures/shelvingLog_get.sql
+++ b/db/routines/vn/procedures/shelvingLog_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelvingLog_get`(shelvingFk VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`shelvingLog_get`(shelvingFk VARCHAR(10))
BEGIN
/* Lista el log de un carro
diff --git a/db/routines/vn/procedures/shelvingParking_get.sql b/db/routines/vn/procedures/shelvingParking_get.sql
index 0131db7d2..a9ed9f74a 100644
--- a/db/routines/vn/procedures/shelvingParking_get.sql
+++ b/db/routines/vn/procedures/shelvingParking_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelvingParking_get`(vShelvingFk VARCHAR(10), vWarehouseFk INT, vDayRange INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`shelvingParking_get`(vShelvingFk VARCHAR(10), vWarehouseFk INT, vDayRange INT)
BEGIN
diff --git a/db/routines/vn/procedures/shelvingPriority_update.sql b/db/routines/vn/procedures/shelvingPriority_update.sql
index 317f17333..87019e9cf 100644
--- a/db/routines/vn/procedures/shelvingPriority_update.sql
+++ b/db/routines/vn/procedures/shelvingPriority_update.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelvingPriority_update`(priority INT,vShelvingFk VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`shelvingPriority_update`(priority INT,vShelvingFk VARCHAR(10))
BEGIN
UPDATE vn.shelving SET priority = priority WHERE code=vShelvingFk COLLATE utf8_unicode_ci;
diff --git a/db/routines/vn/procedures/shelving_clean.sql b/db/routines/vn/procedures/shelving_clean.sql
index f9248a0d7..d2cb7caad 100644
--- a/db/routines/vn/procedures/shelving_clean.sql
+++ b/db/routines/vn/procedures/shelving_clean.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelving_clean`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`shelving_clean`()
BEGIN
DELETE FROM shelving
diff --git a/db/routines/vn/procedures/shelving_getSpam.sql b/db/routines/vn/procedures/shelving_getSpam.sql
index 2895470ad..cef407285 100644
--- a/db/routines/vn/procedures/shelving_getSpam.sql
+++ b/db/routines/vn/procedures/shelving_getSpam.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelving_getSpam`(vDated DATE, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`shelving_getSpam`(vDated DATE, vWarehouseFk INT)
BEGIN
/**
* Devuelve las matrículas con productos que no son necesarios para la venta
diff --git a/db/routines/vn/procedures/shelving_setParking.sql b/db/routines/vn/procedures/shelving_setParking.sql
index 0ff07ef5d..f9acad74d 100644
--- a/db/routines/vn/procedures/shelving_setParking.sql
+++ b/db/routines/vn/procedures/shelving_setParking.sql
@@ -1,20 +1,23 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`shelving_setParking`(IN `vShelvingCode` VARCHAR(8), IN `vParkingFk` INT)
-proc: BEGIN
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`shelving_setParking`(
+ `vShelvingCode` VARCHAR(8),
+ `vParkingFk` INT
+)
+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
diff --git a/db/routines/vn/procedures/sleep_X_min.sql b/db/routines/vn/procedures/sleep_X_min.sql
index 39102b57d..507432390 100644
--- a/db/routines/vn/procedures/sleep_X_min.sql
+++ b/db/routines/vn/procedures/sleep_X_min.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sleep_X_min`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sleep_X_min`()
BEGIN
# Ernesto. 4.8.2020
# Para su uso en las tareas ejecutadas a las 2AM (visibles con: SELECT * FROM bs.nightTask order by started asc;)
diff --git a/db/routines/vn/procedures/stockBuyedByWorker.sql b/db/routines/vn/procedures/stockBuyedByWorker.sql
index 730612db8..a0bad78d4 100644
--- a/db/routines/vn/procedures/stockBuyedByWorker.sql
+++ b/db/routines/vn/procedures/stockBuyedByWorker.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`stockBuyedByWorker`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`stockBuyedByWorker`(
vDated DATE,
vWorker INT
)
diff --git a/db/routines/vn/procedures/stockBuyed_add.sql b/db/routines/vn/procedures/stockBuyed_add.sql
index 1fff1484c..104a2d34d 100644
--- a/db/routines/vn/procedures/stockBuyed_add.sql
+++ b/db/routines/vn/procedures/stockBuyed_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`stockBuyed_add`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`stockBuyed_add`(
vDated DATE
)
BEGIN
diff --git a/db/routines/vn/procedures/stockTraslation.sql b/db/routines/vn/procedures/stockTraslation.sql
index c681112f1..4cc64fe3b 100644
--- a/db/routines/vn/procedures/stockTraslation.sql
+++ b/db/routines/vn/procedures/stockTraslation.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`stockTraslation`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`stockTraslation`(
vDated DATE
)
BEGIN
@@ -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 ;
diff --git a/db/routines/vn/procedures/subordinateGetList.sql b/db/routines/vn/procedures/subordinateGetList.sql
index 0431afaa4..9eeddef94 100644
--- a/db/routines/vn/procedures/subordinateGetList.sql
+++ b/db/routines/vn/procedures/subordinateGetList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`subordinateGetList`(vBossFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`subordinateGetList`(vBossFk INT)
BEGIN
-- deprecated usar vn.worker_GetHierarch
diff --git a/db/routines/vn/procedures/supplierExpenses.sql b/db/routines/vn/procedures/supplierExpenses.sql
index 11ebbd603..a219ee9e9 100644
--- a/db/routines/vn/procedures/supplierExpenses.sql
+++ b/db/routines/vn/procedures/supplierExpenses.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplierExpenses`(vEnded DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`supplierExpenses`(vEnded DATE)
BEGIN
DROP TEMPORARY TABLE IF EXISTS openingBalance;
diff --git a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
index 63285203b..6700a4932 100644
--- a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
+++ b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplierPackaging_ReportSource`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`supplierPackaging_ReportSource`(
vFromDated DATE,
vSupplierFk INT
)
diff --git a/db/routines/vn/procedures/supplier_checkBalance.sql b/db/routines/vn/procedures/supplier_checkBalance.sql
index 04c513927..5e5cd5aed 100644
--- a/db/routines/vn/procedures/supplier_checkBalance.sql
+++ b/db/routines/vn/procedures/supplier_checkBalance.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`supplier_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL)
BEGIN
/**
* Compara los datos de nuestros proveedores con
diff --git a/db/routines/vn/procedures/supplier_checkIsActive.sql b/db/routines/vn/procedures/supplier_checkIsActive.sql
index 9dcb6452a..75118d03a 100644
--- a/db/routines/vn/procedures/supplier_checkIsActive.sql
+++ b/db/routines/vn/procedures/supplier_checkIsActive.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_checkIsActive`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`supplier_checkIsActive`(vSelf INT)
BEGIN
/**
* Comprueba si un proveedor esta activo.
diff --git a/db/routines/vn/procedures/supplier_disablePayMethodChecked.sql b/db/routines/vn/procedures/supplier_disablePayMethodChecked.sql
index d486f6e86..02cbbcb8f 100644
--- a/db/routines/vn/procedures/supplier_disablePayMethodChecked.sql
+++ b/db/routines/vn/procedures/supplier_disablePayMethodChecked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_disablePayMethodChecked`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`supplier_disablePayMethodChecked`()
BEGIN
/*
diff --git a/db/routines/vn/procedures/supplier_statement.sql b/db/routines/vn/procedures/supplier_statement.sql
deleted file mode 100644
index a03a7770c..000000000
--- a/db/routines/vn/procedures/supplier_statement.sql
+++ /dev/null
@@ -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 ;
diff --git a/db/routines/vn/procedures/supplier_statementWithEntries.sql b/db/routines/vn/procedures/supplier_statementWithEntries.sql
new file mode 100644
index 000000000..df3b918a7
--- /dev/null
+++ b/db/routines/vn/procedures/supplier_statementWithEntries.sql
@@ -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 ;
diff --git a/db/routines/vn/procedures/ticketBoxesView.sql b/db/routines/vn/procedures/ticketBoxesView.sql
index d5fcef226..4f62a3d6c 100644
--- a/db/routines/vn/procedures/ticketBoxesView.sql
+++ b/db/routines/vn/procedures/ticketBoxesView.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketBoxesView`(IN vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketBoxesView`(IN vTicketFk INT)
BEGIN
SELECT s.id,
diff --git a/db/routines/vn/procedures/ticketBuiltTime.sql b/db/routines/vn/procedures/ticketBuiltTime.sql
index 936e872ab..0e1938681 100644
--- a/db/routines/vn/procedures/ticketBuiltTime.sql
+++ b/db/routines/vn/procedures/ticketBuiltTime.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketBuiltTime`(vDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketBuiltTime`(vDate DATE)
BEGIN
DECLARE vDateStart DATETIME DEFAULT DATE(vDate);
diff --git a/db/routines/vn/procedures/ticketCalculateClon.sql b/db/routines/vn/procedures/ticketCalculateClon.sql
index a56491590..872efee10 100644
--- a/db/routines/vn/procedures/ticketCalculateClon.sql
+++ b/db/routines/vn/procedures/ticketCalculateClon.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketCalculateClon`(IN vTicketNew INT, vTicketOld INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketCalculateClon`(IN vTicketNew INT, vTicketOld INT)
BEGIN
/*
* Recalcula los componentes un ticket clonado,
diff --git a/db/routines/vn/procedures/ticketCalculateFromType.sql b/db/routines/vn/procedures/ticketCalculateFromType.sql
index 63f4b8941..54d180abd 100644
--- a/db/routines/vn/procedures/ticketCalculateFromType.sql
+++ b/db/routines/vn/procedures/ticketCalculateFromType.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketCalculateFromType`( vLanded DATE,
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketCalculateFromType`( vLanded DATE,
vAddressFk INT,
vAgencyModeFk INT,
vTypeFk INT)
diff --git a/db/routines/vn/procedures/ticketCalculatePurge.sql b/db/routines/vn/procedures/ticketCalculatePurge.sql
index 86e3b0d1b..da126281f 100644
--- a/db/routines/vn/procedures/ticketCalculatePurge.sql
+++ b/db/routines/vn/procedures/ticketCalculatePurge.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketCalculatePurge`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketCalculatePurge`()
BEGIN
DROP TEMPORARY TABLE
tmp.ticketCalculateItem,
diff --git a/db/routines/vn/procedures/ticketClon.sql b/db/routines/vn/procedures/ticketClon.sql
index 9144ac709..9d7d1c5b3 100644
--- a/db/routines/vn/procedures/ticketClon.sql
+++ b/db/routines/vn/procedures/ticketClon.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketClon`(vTicketFk INT, vNewShipped DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketClon`(vTicketFk INT, vNewShipped DATE)
BEGIN
DECLARE vNewTicketFk INT;
diff --git a/db/routines/vn/procedures/ticketClon_OneYear.sql b/db/routines/vn/procedures/ticketClon_OneYear.sql
index b0c08dec8..31f896a22 100644
--- a/db/routines/vn/procedures/ticketClon_OneYear.sql
+++ b/db/routines/vn/procedures/ticketClon_OneYear.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketClon_OneYear`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketClon_OneYear`(vTicketFk INT)
BEGIN
DECLARE vShipped DATE;
diff --git a/db/routines/vn/procedures/ticketCollection_get.sql b/db/routines/vn/procedures/ticketCollection_get.sql
index 357471fee..6af94fbf2 100644
--- a/db/routines/vn/procedures/ticketCollection_get.sql
+++ b/db/routines/vn/procedures/ticketCollection_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketCollection_get`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketCollection_get`(vTicketFk INT)
BEGIN
SELECT tc.collectionFk
diff --git a/db/routines/vn/procedures/ticketCollection_setUsedShelves.sql b/db/routines/vn/procedures/ticketCollection_setUsedShelves.sql
index c69575ba7..8851fcafb 100644
--- a/db/routines/vn/procedures/ticketCollection_setUsedShelves.sql
+++ b/db/routines/vn/procedures/ticketCollection_setUsedShelves.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketCollection_setUsedShelves`(vTicketFk INT, vUsedShelves INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketCollection_setUsedShelves`(vTicketFk INT, vUsedShelves INT)
BEGIN
/*
diff --git a/db/routines/vn/procedures/ticketComponentUpdate.sql b/db/routines/vn/procedures/ticketComponentUpdate.sql
index bdb3bf6cb..373bf8fbc 100644
--- a/db/routines/vn/procedures/ticketComponentUpdate.sql
+++ b/db/routines/vn/procedures/ticketComponentUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketComponentUpdate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketComponentUpdate`(
vTicketFk INT,
vClientFk INT,
vAgencyModeFk INT,
diff --git a/db/routines/vn/procedures/ticketComponentUpdateSale.sql b/db/routines/vn/procedures/ticketComponentUpdateSale.sql
index d002655d1..26ede95c2 100644
--- a/db/routines/vn/procedures/ticketComponentUpdateSale.sql
+++ b/db/routines/vn/procedures/ticketComponentUpdateSale.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketComponentUpdateSale`(vCode VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketComponentUpdateSale`(vCode VARCHAR(25))
BEGIN
/**
* A partir de la tabla tmp.sale, crea los Movimientos_componentes
diff --git a/db/routines/vn/procedures/ticketDown_PrintableSelection.sql b/db/routines/vn/procedures/ticketDown_PrintableSelection.sql
index 45002dd1f..082a890a6 100644
--- a/db/routines/vn/procedures/ticketDown_PrintableSelection.sql
+++ b/db/routines/vn/procedures/ticketDown_PrintableSelection.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketDown_PrintableSelection`(vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketDown_PrintableSelection`(vSectorFk INT)
BEGIN
UPDATE vn.ticketDown td
diff --git a/db/routines/vn/procedures/ticketGetTaxAdd.sql b/db/routines/vn/procedures/ticketGetTaxAdd.sql
index 55f587d9d..b977ae042 100644
--- a/db/routines/vn/procedures/ticketGetTaxAdd.sql
+++ b/db/routines/vn/procedures/ticketGetTaxAdd.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketGetTaxAdd`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketGetTaxAdd`(vTicketFk INT)
BEGIN
/**
* Añade un ticket a la tabla tmp.ticket para calcular
diff --git a/db/routines/vn/procedures/ticketGetTax_new.sql b/db/routines/vn/procedures/ticketGetTax_new.sql
index f7c5891cc..b7df8a766 100644
--- a/db/routines/vn/procedures/ticketGetTax_new.sql
+++ b/db/routines/vn/procedures/ticketGetTax_new.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketGetTax_new`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketGetTax_new`()
READS SQL DATA
BEGIN
/**
diff --git a/db/routines/vn/procedures/ticketGetTotal.sql b/db/routines/vn/procedures/ticketGetTotal.sql
index b77f261b0..02c824009 100644
--- a/db/routines/vn/procedures/ticketGetTotal.sql
+++ b/db/routines/vn/procedures/ticketGetTotal.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketGetTotal`(vTaxArea VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketGetTotal`(vTaxArea VARCHAR(25))
BEGIN
/**
* Calcula el total con IVA para un conjunto de tickets.
diff --git a/db/routines/vn/procedures/ticketGetVisibleAvailable.sql b/db/routines/vn/procedures/ticketGetVisibleAvailable.sql
index 3717d57e3..01010f548 100644
--- a/db/routines/vn/procedures/ticketGetVisibleAvailable.sql
+++ b/db/routines/vn/procedures/ticketGetVisibleAvailable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketGetVisibleAvailable`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketGetVisibleAvailable`(
vTicket INT)
BEGIN
DECLARE vVisibleCalc INT;
diff --git a/db/routines/vn/procedures/ticketNotInvoicedByClient.sql b/db/routines/vn/procedures/ticketNotInvoicedByClient.sql
index cb177b6d0..7933fda80 100644
--- a/db/routines/vn/procedures/ticketNotInvoicedByClient.sql
+++ b/db/routines/vn/procedures/ticketNotInvoicedByClient.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketNotInvoicedByClient`(vClientFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketNotInvoicedByClient`(vClientFk INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.ticket;
diff --git a/db/routines/vn/procedures/ticketObservation_addNewBorn.sql b/db/routines/vn/procedures/ticketObservation_addNewBorn.sql
index f70a11a48..3e04c8c4e 100644
--- a/db/routines/vn/procedures/ticketObservation_addNewBorn.sql
+++ b/db/routines/vn/procedures/ticketObservation_addNewBorn.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketObservation_addNewBorn`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketObservation_addNewBorn`(vTicketFk INT)
BEGIN
/**
diff --git a/db/routines/vn/procedures/ticketPackaging_add.sql b/db/routines/vn/procedures/ticketPackaging_add.sql
index f96068b56..ed791a5f2 100644
--- a/db/routines/vn/procedures/ticketPackaging_add.sql
+++ b/db/routines/vn/procedures/ticketPackaging_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketPackaging_add`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketPackaging_add`(
vClientFk INT,
vDated DATE,
vCompanyFk INT,
diff --git a/db/routines/vn/procedures/ticketParking_findSkipped.sql b/db/routines/vn/procedures/ticketParking_findSkipped.sql
index 7713d5b50..14ab28a15 100644
--- a/db/routines/vn/procedures/ticketParking_findSkipped.sql
+++ b/db/routines/vn/procedures/ticketParking_findSkipped.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketParking_findSkipped`(vTicketFk INT, vItemPackingTypeFk VARCHAR(1))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketParking_findSkipped`(vTicketFk INT, vItemPackingTypeFk VARCHAR(1))
BEGIN
/**
diff --git a/db/routines/vn/procedures/ticketStateToday_setState.sql b/db/routines/vn/procedures/ticketStateToday_setState.sql
index bd79043b4..8802c3d08 100644
--- a/db/routines/vn/procedures/ticketStateToday_setState.sql
+++ b/db/routines/vn/procedures/ticketStateToday_setState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketStateToday_setState`(vTicketFk INT, vStateCode VARCHAR(45))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketStateToday_setState`(vTicketFk INT, vStateCode VARCHAR(45))
BEGIN
/* Modifica el estado de un ticket de hoy
diff --git a/db/routines/vn/procedures/ticketToInvoiceByAddress.sql b/db/routines/vn/procedures/ticketToInvoiceByAddress.sql
index ad51c761a..5e554d358 100644
--- a/db/routines/vn/procedures/ticketToInvoiceByAddress.sql
+++ b/db/routines/vn/procedures/ticketToInvoiceByAddress.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketToInvoiceByAddress`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketToInvoiceByAddress`(
vStarted DATE,
vEnded DATETIME,
vAddress INT,
diff --git a/db/routines/vn/procedures/ticketToInvoiceByDate.sql b/db/routines/vn/procedures/ticketToInvoiceByDate.sql
index 8937ab7ae..52e418ee3 100644
--- a/db/routines/vn/procedures/ticketToInvoiceByDate.sql
+++ b/db/routines/vn/procedures/ticketToInvoiceByDate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketToInvoiceByDate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketToInvoiceByDate`(
vStarted DATE,
vEnded DATETIME,
vClient INT,
diff --git a/db/routines/vn/procedures/ticketToInvoiceByRef.sql b/db/routines/vn/procedures/ticketToInvoiceByRef.sql
index 4f5c23ba2..390340143 100644
--- a/db/routines/vn/procedures/ticketToInvoiceByRef.sql
+++ b/db/routines/vn/procedures/ticketToInvoiceByRef.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketToInvoiceByRef`(IN vInvoiceRef VARCHAR(15))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticketToInvoiceByRef`(IN vInvoiceRef VARCHAR(15))
BEGIN
/* Para tickets ya facturados, vuelve a repetir el proceso de facturación.
diff --git a/db/routines/vn/procedures/ticket_Clone.sql b/db/routines/vn/procedures/ticket_Clone.sql
index d22d3c7ff..f97655007 100644
--- a/db/routines/vn/procedures/ticket_Clone.sql
+++ b/db/routines/vn/procedures/ticket_Clone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_Clone`(vOriginalTicket INT, OUT vNewTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_Clone`(vOriginalTicket INT, OUT vNewTicket INT)
BEGIN
/**
* Clona el contenido de un ticket en otro
diff --git a/db/routines/vn/procedures/ticket_DelayTruck.sql b/db/routines/vn/procedures/ticket_DelayTruck.sql
index 81896dd8e..ebd0e5baf 100644
--- a/db/routines/vn/procedures/ticket_DelayTruck.sql
+++ b/db/routines/vn/procedures/ticket_DelayTruck.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_DelayTruck`(vWarehouserFk INT, vHour INT, vMinute INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_DelayTruck`(vWarehouserFk INT, vHour INT, vMinute INT)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE vTicketFk INT;
diff --git a/db/routines/vn/procedures/ticket_DelayTruckSplit.sql b/db/routines/vn/procedures/ticket_DelayTruckSplit.sql
index 3e5195d9c..1dc45d065 100644
--- a/db/routines/vn/procedures/ticket_DelayTruckSplit.sql
+++ b/db/routines/vn/procedures/ticket_DelayTruckSplit.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_DelayTruckSplit`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_DelayTruckSplit`(
vTicketFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/ticket_WeightDeclaration.sql b/db/routines/vn/procedures/ticket_WeightDeclaration.sql
index e50290dd8..9105cfc61 100644
--- a/db/routines/vn/procedures/ticket_WeightDeclaration.sql
+++ b/db/routines/vn/procedures/ticket_WeightDeclaration.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_WeightDeclaration`(vClientFk INT, vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_WeightDeclaration`(vClientFk INT, vDated DATE)
BEGIN
DECLARE vTheorycalWeight DECIMAL(10,2);
diff --git a/db/routines/vn/procedures/ticket_add.sql b/db/routines/vn/procedures/ticket_add.sql
index d9b68997c..03ad7246b 100644
--- a/db/routines/vn/procedures/ticket_add.sql
+++ b/db/routines/vn/procedures/ticket_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_add`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_add`(
vClientId INT
,vShipped DATE
,vWarehouseFk INT
diff --git a/db/routines/vn/procedures/ticket_administrativeCopy.sql b/db/routines/vn/procedures/ticket_administrativeCopy.sql
index f240a5fe0..7e8c436a8 100644
--- a/db/routines/vn/procedures/ticket_administrativeCopy.sql
+++ b/db/routines/vn/procedures/ticket_administrativeCopy.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_administrativeCopy`(vOriginalTicket INT, OUT vNewTicket INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_administrativeCopy`(vOriginalTicket INT, OUT vNewTicket INT)
BEGIN
INSERT INTO vn.ticket(clientFk, addressFk, shipped, warehouseFk, companyFk, landed)
diff --git a/db/routines/vn/procedures/ticket_canAdvance.sql b/db/routines/vn/procedures/ticket_canAdvance.sql
index d1ca7b5e2..44149126a 100644
--- a/db/routines/vn/procedures/ticket_canAdvance.sql
+++ b/db/routines/vn/procedures/ticket_canAdvance.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_canAdvance`(vDateFuture DATE, vDateToAdvance DATE, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_canAdvance`(vDateFuture DATE, vDateToAdvance DATE, vWarehouseFk INT)
BEGIN
/**
* Devuelve los tickets y la cantidad de lineas de venta que se pueden adelantar.
diff --git a/db/routines/vn/procedures/ticket_canMerge.sql b/db/routines/vn/procedures/ticket_canMerge.sql
index c3f211027..ce90551db 100644
--- a/db/routines/vn/procedures/ticket_canMerge.sql
+++ b/db/routines/vn/procedures/ticket_canMerge.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_canMerge`(vDated DATE, vScopeDays INT, vLitersMax INT, vLinesMax INT, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_canMerge`(vDated DATE, vScopeDays INT, vLitersMax INT, vLinesMax INT, vWarehouseFk INT)
BEGIN
/**
* Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro
diff --git a/db/routines/vn/procedures/ticket_canbePostponed.sql b/db/routines/vn/procedures/ticket_canbePostponed.sql
index 442059b99..871cafddc 100644
--- a/db/routines/vn/procedures/ticket_canbePostponed.sql
+++ b/db/routines/vn/procedures/ticket_canbePostponed.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_canbePostponed`(vOriginDated DATE, vFutureDated DATE, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_canbePostponed`(vOriginDated DATE, vFutureDated DATE, vWarehouseFk INT)
BEGIN
/**
* Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro
diff --git a/db/routines/vn/procedures/ticket_checkNoComponents.sql b/db/routines/vn/procedures/ticket_checkNoComponents.sql
index b03427192..aa2947763 100644
--- a/db/routines/vn/procedures/ticket_checkNoComponents.sql
+++ b/db/routines/vn/procedures/ticket_checkNoComponents.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_checkNoComponents`(vShippedFrom DATETIME, vShippedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_checkNoComponents`(vShippedFrom DATETIME, vShippedTo DATETIME)
BEGIN
/**
diff --git a/db/routines/vn/procedures/ticket_cloneAll.sql b/db/routines/vn/procedures/ticket_cloneAll.sql
index 4b3401ed7..30f0431f7 100644
--- a/db/routines/vn/procedures/ticket_cloneAll.sql
+++ b/db/routines/vn/procedures/ticket_cloneAll.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_cloneAll`(vTicketFk INT, vNewShipped DATE, vWithWarehouse BOOLEAN, OUT vNewTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_cloneAll`(vTicketFk INT, vNewShipped DATE, vWithWarehouse BOOLEAN, OUT vNewTicketFk INT)
BEGIN
DECLARE vDone BOOLEAN DEFAULT FALSE;
diff --git a/db/routines/vn/procedures/ticket_cloneWeekly.sql b/db/routines/vn/procedures/ticket_cloneWeekly.sql
index fd45dc9fa..bfea00f31 100644
--- a/db/routines/vn/procedures/ticket_cloneWeekly.sql
+++ b/db/routines/vn/procedures/ticket_cloneWeekly.sql
@@ -1,10 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_cloneWeekly`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_cloneWeekly`(
vDateFrom DATE,
vDateTo DATE
)
BEGIN
- DECLARE vIsDone BOOL;
DECLARE vLanding DATE;
DECLARE vShipment DATE;
DECLARE vWarehouseFk INT;
@@ -15,36 +14,37 @@ 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
- SELECT tt.ticketFk,
- t.clientFk,
- t.warehouseFk,
- t.companyFk,
- t.addressFk,
- tt.agencyModeFk,
- ti.dated
- FROM ticketWeekly tt
- JOIN ticket t ON tt.ticketFk = t.id
- JOIN tmp.time ti
- WHERE WEEKDAY(ti.dated) = tt.weekDay;
+ DECLARE vTickets CURSOR FOR
+ SELECT tt.ticketFk,
+ t.clientFk,
+ t.warehouseFk,
+ t.companyFk,
+ t.addressFk,
+ tt.agencyModeFk,
+ ti.dated
+ FROM ticketWeekly tt
+ JOIN ticket t ON tt.ticketFk = t.id
+ JOIN tmp.time ti
+ WHERE WEEKDAY(ti.dated) = tt.weekDay;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = 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;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- SET vIsDone = FALSE;
- FETCH rsTicket INTO
+ CALL `util`.`time_generate`(vDateFrom, vDateTo);
+
+ 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
@@ -152,15 +152,7 @@ BEGIN
attenderFk,
vNewTicket
FROM ticketRequest
- WHERE ticketFk =vTicketFk;
-
- SELECT id INTO vSalesPersonFK
- FROM observationType
- WHERE code = 'salesPerson';
-
- SELECT id INTO vItemPicker
- FROM observationType
- WHERE code = 'itemPicker';
+ WHERE ticketFk = vTicketFk;
INSERT INTO ticketObservation(
ticketFk,
@@ -168,7 +160,7 @@ BEGIN
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 ;
diff --git a/db/routines/vn/procedures/ticket_close.sql b/db/routines/vn/procedures/ticket_close.sql
index 7f52e81a7..5db8afb23 100644
--- a/db/routines/vn/procedures/ticket_close.sql
+++ b/db/routines/vn/procedures/ticket_close.sql
@@ -1,8 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_close`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_close`()
BEGIN
/**
- * Realiza el cierre de todos los
+ * Realiza el cierre de todos los
* tickets de la tabla tmp.ticket_close.
*
* @table tmp.ticket_close(ticketFk) Identificadores de los tickets a cerrar
@@ -17,10 +17,11 @@ BEGIN
DECLARE vHasDailyInvoice BOOL;
DECLARE vWithPackage BOOL;
DECLARE vHasToInvoice BOOL;
+ DECLARE vSerial VARCHAR(2);
DECLARE cur CURSOR FOR
SELECT ticketFk FROM tmp.ticket_close;
-
+
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN
RESIGNAL;
@@ -30,7 +31,7 @@ BEGIN
proc: LOOP
SET vDone = FALSE;
-
+
FETCH cur INTO vCurTicketFk;
IF vDone THEN
@@ -47,12 +48,12 @@ BEGIN
c.hasToInvoice
INTO vClientFk,
vIsTaxDataChecked,
- vCompanyFk,
+ vCompanyFk,
vShipped,
vHasDailyInvoice,
vWithPackage,
vHasToInvoice
- FROM ticket t
+ FROM ticket t
JOIN `client` c ON c.id = t.clientFk
JOIN province p ON p.id = c.provinceFk
LEFT JOIN autonomy a ON a.id = p.autonomyFk
@@ -62,7 +63,7 @@ BEGIN
INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity)
(SELECT vCurTicketFk, p.id, COUNT(*)
- FROM expedition e
+ FROM expedition e
JOIN packaging p ON p.id = e.packagingFk
JOIN ticket t ON t.id = e.ticketFk
LEFT JOIN agencyMode am ON am.id = t.agencyModeFk
@@ -73,26 +74,29 @@ BEGIN
GROUP BY p.itemFk);
-- No retornables o no catalogados
- INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed)
+ INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed)
(SELECT e.freightItemFk, vCurTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.freightItemFk, vClientFk), 1
- FROM expedition e
+ FROM expedition e
JOIN item i ON i.id = e.freightItemFk
LEFT JOIN packaging p ON p.itemFk = i.id
WHERE e.ticketFk = vCurTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0
AND getSpecialPrice(e.freightItemFk, vClientFk) > 0
GROUP BY e.freightItemFk);
-
- IF(vHasDailyInvoice) AND vHasToInvoice THEN
- -- Facturacion rapida
+ IF(vHasDailyInvoice) AND vHasToInvoice THEN
+ SELECT invoiceSerial(vClientFk, vCompanyFk, 'quick') INTO vSerial;
+ IF NOT vSerial THEN
+ CALL util.throw('Cannot booking without a serial');
+ END IF;
+
CALL ticket_setState(vCurTicketFk, 'DELIVERED');
- -- Facturar si está contabilizado
+
IF vIsTaxDataChecked THEN
CALL invoiceOut_newFromClient(
- vClientFk,
- (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')),
- vShipped,
- vCompanyFk,
+ vClientFk,
+ vSerial,
+ vShipped,
+ vCompanyFk,
NULL,
NULL,
vNewInvoiceId);
diff --git a/db/routines/vn/procedures/ticket_closeByTicket.sql b/db/routines/vn/procedures/ticket_closeByTicket.sql
index 837b809a2..bd0b5b102 100644
--- a/db/routines/vn/procedures/ticket_closeByTicket.sql
+++ b/db/routines/vn/procedures/ticket_closeByTicket.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_closeByTicket`(IN vTicketFk int)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_closeByTicket`(IN vTicketFk int)
BEGIN
/**
* Inserta el ticket en la tabla temporal
diff --git a/db/routines/vn/procedures/ticket_componentMakeUpdate.sql b/db/routines/vn/procedures/ticket_componentMakeUpdate.sql
index 4b0a5bdbc..fa6b79068 100644
--- a/db/routines/vn/procedures/ticket_componentMakeUpdate.sql
+++ b/db/routines/vn/procedures/ticket_componentMakeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_componentMakeUpdate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_componentMakeUpdate`(
vTicketFk INT,
vClientFk INT,
vNickname VARCHAR(50),
diff --git a/db/routines/vn/procedures/ticket_componentPreview.sql b/db/routines/vn/procedures/ticket_componentPreview.sql
index 729e3a743..25bdd5ded 100644
--- a/db/routines/vn/procedures/ticket_componentPreview.sql
+++ b/db/routines/vn/procedures/ticket_componentPreview.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_componentPreview`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_componentPreview`(
vTicketFk INT,
vLanded DATE,
vAddressFk INT,
@@ -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
diff --git a/db/routines/vn/procedures/ticket_doCmr.sql b/db/routines/vn/procedures/ticket_doCmr.sql
index e9cd1d659..ba64944f8 100644
--- a/db/routines/vn/procedures/ticket_doCmr.sql
+++ b/db/routines/vn/procedures/ticket_doCmr.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doCmr`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_doCmr`(vSelf INT)
BEGIN
/**
* Crea u actualiza la información del CMR asociado con
diff --git a/db/routines/vn/procedures/ticket_getFromFloramondo.sql b/db/routines/vn/procedures/ticket_getFromFloramondo.sql
index 5f2bedbb1..05c625653 100644
--- a/db/routines/vn/procedures/ticket_getFromFloramondo.sql
+++ b/db/routines/vn/procedures/ticket_getFromFloramondo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getFromFloramondo`(vDateFrom DATE, vDateTo DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getFromFloramondo`(vDateFrom DATE, vDateTo DATE)
BEGIN
/**
* Genera una tabla con la lista de tickets de Floramondo
diff --git a/db/routines/vn/procedures/ticket_getMovable.sql b/db/routines/vn/procedures/ticket_getMovable.sql
index 512151bd4..cf56316f1 100644
--- a/db/routines/vn/procedures/ticket_getMovable.sql
+++ b/db/routines/vn/procedures/ticket_getMovable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getMovable`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getMovable`(
vTicketFk INT,
vNewShipped DATETIME,
vWarehouseFk INT
diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql
index 521e4cf2f..8bf2c4d80 100644
--- a/db/routines/vn/procedures/ticket_getProblems.sql
+++ b/db/routines/vn/procedures/ticket_getProblems.sql
@@ -1,5 +1,7 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getProblems`(IN vIsTodayRelative tinyint(1))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getProblems`(
+ vIsTodayRelative tinyint(1)
+)
BEGIN
/**
* Calcula los problemas para un conjunto de tickets.
@@ -16,6 +18,7 @@ BEGIN
SELECT ticketFk,
MAX(isFreezed) isFreezed,
MAX(risk) risk,
+ MAX(hasRisk) hasRisk,
MAX(hasHighRisk) hasHighRisk,
MAX(hasTicketRequest) hasTicketRequest,
MAX(itemShortage) itemShortage,
@@ -30,19 +33,19 @@ BEGIN
FROM tmp.sale_problems
GROUP BY ticketFk;
- UPDATE tmp.ticket_problems tp
- SET tp.totalProblems = (
- (tp.isFreezed) +
- IF(tp.risk,TRUE, FALSE) +
- (tp.hasTicketRequest) +
- (tp.isTaxDataChecked = 0) +
- (tp.hasComponentLack) +
- (tp.itemDelay) +
- (tp.isTooLittle) +
- (tp.itemLost) +
- (tp.hasRounding) +
- (tp.itemShortage) +
- (tp.isVip)
+ UPDATE tmp.ticket_problems
+ SET totalProblems = (
+ (isFreezed) +
+ (hasRisk) +
+ (hasTicketRequest) +
+ (!isTaxDataChecked) +
+ (hasComponentLack) +
+ (itemDelay IS NOT NULL) +
+ (isTooLittle) +
+ (itemLost IS NOT NULL) +
+ (hasRounding IS NOT NULL) +
+ (itemShortage IS NOT NULL) +
+ (isVip)
);
DROP TEMPORARY TABLE tmp.sale_problems;
diff --git a/db/routines/vn/procedures/ticket_getSplitList.sql b/db/routines/vn/procedures/ticket_getSplitList.sql
index 10488d596..988bc2931 100644
--- a/db/routines/vn/procedures/ticket_getSplitList.sql
+++ b/db/routines/vn/procedures/ticket_getSplitList.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getSplitList`(vDated DATE, vHour TIME, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getSplitList`(vDated DATE, vHour TIME, vWarehouseFk INT)
BEGIN
/**
* Devuelve un listado con los tickets posibles para splitar HOY.
diff --git a/db/routines/vn/procedures/ticket_getTax.sql b/db/routines/vn/procedures/ticket_getTax.sql
index b9f5c14e3..947c45806 100644
--- a/db/routines/vn/procedures/ticket_getTax.sql
+++ b/db/routines/vn/procedures/ticket_getTax.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getTax`(IN vTaxArea VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getTax`(IN vTaxArea VARCHAR(25))
BEGIN
/**
* Calcula la base imponible, el IVA y el recargo de equivalencia para
diff --git a/db/routines/vn/procedures/ticket_getWarnings.sql b/db/routines/vn/procedures/ticket_getWarnings.sql
index 0bda30446..d817a92bb 100644
--- a/db/routines/vn/procedures/ticket_getWarnings.sql
+++ b/db/routines/vn/procedures/ticket_getWarnings.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getWarnings`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getWarnings`()
BEGIN
/**
* Calcula las adventencias para un conjunto de tickets.
diff --git a/db/routines/vn/procedures/ticket_getWithParameters.sql b/db/routines/vn/procedures/ticket_getWithParameters.sql
index 2d3d09311..02a6d8a1d 100644
--- a/db/routines/vn/procedures/ticket_getWithParameters.sql
+++ b/db/routines/vn/procedures/ticket_getWithParameters.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getWithParameters`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getWithParameters`(
vClientFk INT,
vWarehouseFk INT,
vShipped DATE,
diff --git a/db/routines/vn/procedures/ticket_insertZone.sql b/db/routines/vn/procedures/ticket_insertZone.sql
index ee6eabdec..600bf80ee 100644
--- a/db/routines/vn/procedures/ticket_insertZone.sql
+++ b/db/routines/vn/procedures/ticket_insertZone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_insertZone`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_insertZone`()
BEGIN
DECLARE vDone INT DEFAULT 0;
DECLARE vFechedTicket INT;
diff --git a/db/routines/vn/procedures/ticket_mergeSales.sql b/db/routines/vn/procedures/ticket_mergeSales.sql
new file mode 100644
index 000000000..2dc3a39da
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_mergeSales.sql
@@ -0,0 +1,49 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_mergeSales`(
+ vSelf INT
+)
+BEGIN
+ DECLARE vHasSalesToMerge BOOL;
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ START TRANSACTION;
+
+ SELECT id INTO vSelf
+ FROM ticket
+ WHERE id = vSelf FOR UPDATE;
+
+ CREATE OR REPLACE TEMPORARY TABLE tSalesToPreserve
+ (PRIMARY KEY (id))
+ ENGINE = MEMORY
+ SELECT s.id, s.itemFk, SUM(s.quantity) newQuantity
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN itemType it ON it.id = i.typeFk
+ WHERE s.ticketFk = vSelf
+ AND it.isMergeable
+ GROUP BY s.itemFk, s.price, s.discount
+ HAVING COUNT(*) > 1;
+
+ SELECT COUNT(*) INTO vHasSalesToMerge
+ FROM tSalesToPreserve;
+
+ IF vHasSalesToMerge THEN
+ UPDATE sale s
+ JOIN tSalesToPreserve stp ON stp.id = s.id
+ SET s.quantity = newQuantity;
+
+ DELETE s
+ FROM sale s
+ JOIN tSalesToPreserve stp ON stp.itemFk = s.itemFk
+ WHERE s.ticketFk = vSelf
+ AND s.id <> stp.id;
+ END IF;
+
+ COMMIT;
+ DROP TEMPORARY TABLE tSalesToPreserve;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_priceDifference.sql b/db/routines/vn/procedures/ticket_priceDifference.sql
index 4ef168840..5e36be8a0 100644
--- a/db/routines/vn/procedures/ticket_priceDifference.sql
+++ b/db/routines/vn/procedures/ticket_priceDifference.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_priceDifference`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_priceDifference`(
vTicketFk INT,
vLanded DATE,
vAddressFk INT,
diff --git a/db/routines/vn/procedures/ticket_printLabelPrevious.sql b/db/routines/vn/procedures/ticket_printLabelPrevious.sql
index cba42ff3e..e40e125b5 100644
--- a/db/routines/vn/procedures/ticket_printLabelPrevious.sql
+++ b/db/routines/vn/procedures/ticket_printLabelPrevious.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_printLabelPrevious`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_printLabelPrevious`(vTicketFk INT)
BEGIN
/**
* Calls the report_print procedure and passes it
diff --git a/db/routines/vn/procedures/ticket_recalc.sql b/db/routines/vn/procedures/ticket_recalc.sql
index 50065d03a..ee408a8ca 100644
--- a/db/routines/vn/procedures/ticket_recalc.sql
+++ b/db/routines/vn/procedures/ticket_recalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_recalc`(vSelf INT, vTaxArea VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_recalc`(vSelf INT, vTaxArea VARCHAR(25))
proc:BEGIN
/**
* Calcula y guarda el total con/sin IVA en un ticket.
diff --git a/db/routines/vn/procedures/ticket_recalcByScope.sql b/db/routines/vn/procedures/ticket_recalcByScope.sql
index 41105fe23..42652272c 100644
--- a/db/routines/vn/procedures/ticket_recalcByScope.sql
+++ b/db/routines/vn/procedures/ticket_recalcByScope.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_recalcByScope`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_recalcByScope`(
vScope VARCHAR(255),
vId INT
)
@@ -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 ;
diff --git a/db/routines/vn/procedures/ticket_recalcComponents.sql b/db/routines/vn/procedures/ticket_recalcComponents.sql
index 0282c0e42..86a40a4eb 100644
--- a/db/routines/vn/procedures/ticket_recalcComponents.sql
+++ b/db/routines/vn/procedures/ticket_recalcComponents.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_recalcComponents`(vSelf INT, vOption VARCHAR(25))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_recalcComponents`(vSelf INT, vOption VARCHAR(25))
proc: BEGIN
/**
diff --git a/db/routines/vn/procedures/ticket_setNextState.sql b/db/routines/vn/procedures/ticket_setNextState.sql
index b09309a47..164bf34e4 100644
--- a/db/routines/vn/procedures/ticket_setNextState.sql
+++ b/db/routines/vn/procedures/ticket_setNextState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setNextState`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setNextState`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/ticket_setParking.sql b/db/routines/vn/procedures/ticket_setParking.sql
index 7935e0d60..acc9a2aee 100644
--- a/db/routines/vn/procedures/ticket_setParking.sql
+++ b/db/routines/vn/procedures/ticket_setParking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setParking`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setParking`(
vSelf INT,
vParkingFk INT
)
@@ -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
diff --git a/db/routines/vn/procedures/ticket_setPreviousState.sql b/db/routines/vn/procedures/ticket_setPreviousState.sql
index c03d41b09..aaf482c30 100644
--- a/db/routines/vn/procedures/ticket_setPreviousState.sql
+++ b/db/routines/vn/procedures/ticket_setPreviousState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setPreviousState`(vTicketFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setPreviousState`(vTicketFk INT)
BEGIN
DECLARE vControlFk INT;
diff --git a/db/routines/vn/procedures/ticket_setProblem.sql b/db/routines/vn/procedures/ticket_setProblem.sql
index 66d244d5a..bf305f2f0 100644
--- a/db/routines/vn/procedures/ticket_setProblem.sql
+++ b/db/routines/vn/procedures/ticket_setProblem.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblem`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblem`(
vProblemCode VARCHAR(25)
)
BEGIN
@@ -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;
diff --git a/db/routines/vn/procedures/ticket_setProblemFreeze.sql b/db/routines/vn/procedures/ticket_setProblemFreeze.sql
index 1de939ba7..622894dfa 100644
--- a/db/routines/vn/procedures/ticket_setProblemFreeze.sql
+++ b/db/routines/vn/procedures/ticket_setProblemFreeze.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemFreeze`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblemFreeze`(
vClientFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/ticket_setProblemRequest.sql b/db/routines/vn/procedures/ticket_setProblemRequest.sql
index 687facfc7..f84847b65 100644
--- a/db/routines/vn/procedures/ticket_setProblemRequest.sql
+++ b/db/routines/vn/procedures/ticket_setProblemRequest.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRequest`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblemRequest`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/ticket_setProblemRisk.sql b/db/routines/vn/procedures/ticket_setProblemRisk.sql
index efa5b10e2..60a188d3e 100644
--- a/db/routines/vn/procedures/ticket_setProblemRisk.sql
+++ b/db/routines/vn/procedures/ticket_setProblemRisk.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRisk`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblemRisk`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/ticket_setProblemRiskByClient.sql b/db/routines/vn/procedures/ticket_setProblemRiskByClient.sql
new file mode 100644
index 000000000..8479550de
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemRiskByClient.sql
@@ -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 ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemRounding.sql b/db/routines/vn/procedures/ticket_setProblemRounding.sql
index fb580eacf..e66288eab 100644
--- a/db/routines/vn/procedures/ticket_setProblemRounding.sql
+++ b/db/routines/vn/procedures/ticket_setProblemRounding.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRounding`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblemRounding`(
vSelf INT
)
BEGIN
@@ -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))
diff --git a/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql b/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
index 9877b5acc..f5c9a88b6 100644
--- a/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
+++ b/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
PROCEDURE `vn`.`ticket_setProblemTaxDataChecked`(vClientFk INT)
BEGIN
/**
diff --git a/db/routines/vn/procedures/ticket_setProblemTooLittle.sql b/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
index 48cc47809..233b3d6df 100644
--- a/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
+++ b/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemTooLittle`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblemTooLittle`(
vSelf INT
)
BEGIN
@@ -8,17 +8,27 @@ BEGIN
*
* @param vSelf Id del ticket
*/
-
+ DECLARE vTicketIsTooLittle BOOL;
+
+ SELECT ticket_isTooLittle(vSelf) INTO vTicketIsTooLittle;
+
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
(INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT vSelf ticketFk,
- ticket_isTooLittle(vSelf) hasProblem,
- ticket_isProblemCalcNeeded(vSelf) isProblemCalcNeeded;
-
+ WITH ticketData AS (
+ SELECT addressFk, DATE(shipped) dated
+ FROM vn.ticket
+ WHERE id = vSelf
+ )
+ SELECT t.id ticketFk,
+ vTicketIsTooLittle hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
+ FROM vn.ticket t
+ JOIN ticketData td ON td.addressFk = t.addressFk
+ WHERE t.shipped BETWEEN td.dated AND util.dayEnd(td.dated);
+
CALL ticket_setProblem('isTooLittle');
DROP TEMPORARY TABLE tmp.ticket;
-
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql b/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql
index ac3814c07..acbfd22e9 100644
--- a/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql
+++ b/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemTooLittleItemCost`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setProblemTooLittleItemCost`(
vItemFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/ticket_setRisk.sql b/db/routines/vn/procedures/ticket_setRisk.sql
index bd5d1e9f9..9c006d1e2 100644
--- a/db/routines/vn/procedures/ticket_setRisk.sql
+++ b/db/routines/vn/procedures/ticket_setRisk.sql
@@ -1,94 +1,83 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setRisk`(
- vClientFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setRisk`(
+ 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
- ), uninvoiced AS(
+ WITH ticket AS (
+ 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
- ), receipt AS(
- SELECT companyFk, DATE(payed) dated, SUM(amountPaid) amount
- FROM vn.receipt
- WHERE clientFk = vClientFk
- AND payed > util.VN_CURDATE()
- GROUP BY companyFk, DATE(payed)
- ), risk AS(
+ 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 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,
- SUM(ui.amount) OVER (PARTITION BY b.companyFk ORDER BY ui.dated ) +
+ ui.dated,
+ SUM(ui.amount) OVER (PARTITION BY b.companyFk ORDER BY ui.dated) +
b.amount +
SUM(IFNULL(r.amount, 0)) amount
FROM balance b
JOIN uninvoiced ui ON ui.companyFk = b.companyFk
- LEFT JOIN receipt r ON r.dated > ui.dated AND r.companyFk = ui.companyFk
+ 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;
+ )
+ SELECT ti.ticketFk, r.amount, ti.isProblemCalcNeeded
+ FROM ticket ti
+ JOIN risk r ON r.dated = ti.dated
+ AND r.companyFk = ti.companyFk;
UPDATE ticket t
JOIN tTicketRisk tr ON tr.ticketFk = t.id
- SET t.risk = tr.amount
- 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;
+ END IF;
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setState.sql b/db/routines/vn/procedures/ticket_setState.sql
index bde8e0692..f4906fb11 100644
--- a/db/routines/vn/procedures/ticket_setState.sql
+++ b/db/routines/vn/procedures/ticket_setState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setState`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_setState`(
vSelf INT,
vStateCode VARCHAR(255) COLLATE utf8_general_ci
)
diff --git a/db/routines/vn/procedures/ticket_setVolume.sql b/db/routines/vn/procedures/ticket_setVolume.sql
new file mode 100644
index 000000000..060a6fa57
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setVolume.sql
@@ -0,0 +1,24 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setVolume`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the volume ticket
+ *
+ * @param vSelf Ticket id
+ */
+ DECLARE vVolume DECIMAL(10,6);
+
+ SELECT SUM(s.quantity * ic.cm3delivery / 1000000) INTO vVolume
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN itemCost ic ON ic.itemFk = s.itemFk
+ AND ic.warehouseFk = t.warehouseFk
+ WHERE t.id = vSelf;
+
+ UPDATE ticket
+ SET volume = vVolume
+ WHERE id = vSelf;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_setVolumeItemCost.sql b/db/routines/vn/procedures/ticket_setVolumeItemCost.sql
new file mode 100644
index 000000000..f266cd769
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setVolumeItemCost.sql
@@ -0,0 +1,29 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setVolumeItemCost`(
+ vItemFk INT
+)
+BEGIN
+/**
+ * Update the volume tickets of item
+ *
+ * @param vSelf Ticket id
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tTicket
+ (PRIMARY KEY (id))
+ ENGINE = MEMORY
+ SELECT t.id, SUM(s.quantity * ic.cm3delivery / 1000000) volume
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN itemCost ic ON ic.itemFk = s.itemFk
+ AND ic.warehouseFk = t.warehouseFk
+ WHERE s.itemFk = vItemFk
+ AND t.shipped >= util.VN_CURDATE()
+ GROUP BY t.id;
+
+ UPDATE ticket t
+ JOIN tTicket tt ON tt.id = t.id
+ SET t.volume = tt.volume;
+
+ DROP TEMPORARY TABLE tTicket;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_split.sql b/db/routines/vn/procedures/ticket_split.sql
index 9a359b83f..c16b7d0df 100644
--- a/db/routines/vn/procedures/ticket_split.sql
+++ b/db/routines/vn/procedures/ticket_split.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_split`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_split`(
vTicketFk INT,
vTicketFutureFk INT,
vDated DATE
diff --git a/db/routines/vn/procedures/ticket_splitItemPackingType.sql b/db/routines/vn/procedures/ticket_splitItemPackingType.sql
index c2ec50fd9..b5b77d2ef 100644
--- a/db/routines/vn/procedures/ticket_splitItemPackingType.sql
+++ b/db/routines/vn/procedures/ticket_splitItemPackingType.sql
@@ -1,143 +1,77 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_splitItemPackingType`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_splitItemPackingType`(
vSelf INT,
- vItemPackingTypeFk VARCHAR(1)
+ vOriginalItemPackingTypeFk VARCHAR(1)
)
BEGIN
/**
- * Clona y reparte las ventas de un ticket en funcion del tipo de empaquetado.
- * Respeta el id inicial para el tipo propuesto.
+ * Clona y reparte las líneas de ventas de un ticket en funcion del tipo de empaquetado.
+ * Respeta el id de ticket inicial para el tipo de empaquetado propuesto.
*
* @param vSelf Id ticket
- * @param vItemPackingTypeFk Tipo para el que se reserva el número de ticket original
- * @return table tmp.ticketIPT(ticketFk, itemPackingTypeFk)
+ * @param vOriginalItemPackingTypeFk Tipo empaquetado al que se mantiene el ticket original
*/
- DECLARE vItemPackingTypeFk VARCHAR(1) DEFAULT 'H';
- DECLARE vNewTicketFk INT;
- DECLARE vPackingTypesToSplit INT;
DECLARE vDone INT DEFAULT FALSE;
- DECLARE vErrorNumber INT;
- DECLARE vErrorMsg TEXT;
+ DECLARE vHasItemPackingType BOOL;
+ DECLARE vItemPackingTypeFk INT;
+ DECLARE vNewTicketFk INT;
- DECLARE vSaleGroup CURSOR FOR
- SELECT itemPackingTypeFk
- FROM tSaleGroup
- WHERE itemPackingTypeFk IS NOT NULL
- ORDER BY (itemPackingTypeFk = vItemPackingTypeFk) DESC;
+ DECLARE vItemPackingTypes CURSOR FOR
+ SELECT DISTINCT itemPackingTypeFk
+ FROM tSalesToMove;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- GET DIAGNOSTICS CONDITION 1
- vErrorNumber = MYSQL_ERRNO,
- vErrorMsg = MESSAGE_TEXT;
+ SELECT COUNT(*) INTO vHasItemPackingType
+ FROM ticket t
+ JOIN sale s ON s.ticketFk = t.id
+ JOIN item i ON i.id = s.itemFk
+ WHERE t.id = vSelf
+ AND i.itemPackingTypeFk = vOriginalItemPackingTypeFk;
- CALL util.debugAdd('ticket_splitItemPackingType', JSON_OBJECT(
- 'errorNumber', vErrorNumber,
- 'errorMsg', vErrorMsg,
- 'ticketFk', vSelf
- )); -- Tmp
- ROLLBACK;
- RESIGNAL;
- END;
+ IF NOT vHasItemPackingType THEN
+ CALL util.throw('The ticket has not sales with the itemPackingType');
+ END IF;
- START TRANSACTION;
-
- SELECT id
- FROM sale
- WHERE ticketFk = vSelf
- AND NOT quantity
- FOR UPDATE;
-
- DELETE FROM sale
- WHERE NOT quantity
- AND ticketFk = vSelf;
-
- CREATE OR REPLACE TEMPORARY TABLE tSale
- (PRIMARY KEY (id))
- ENGINE = MEMORY
- SELECT s.id, i.itemPackingTypeFk, IFNULL(sv.litros, 0) litros
- FROM sale s
- JOIN item i ON i.id = s.itemFk
- LEFT JOIN saleVolume sv ON sv.saleFk = s.id
- WHERE s.ticketFk = vSelf;
-
- CREATE OR REPLACE TEMPORARY TABLE tSaleGroup
- ENGINE = MEMORY
- SELECT itemPackingTypeFk, SUM(litros) totalLitros
- FROM tSale
- GROUP BY itemPackingTypeFk;
-
- SELECT COUNT(*) INTO vPackingTypesToSplit
- FROM tSaleGroup
- WHERE itemPackingTypeFk IS NOT NULL;
-
- CREATE OR REPLACE TEMPORARY TABLE tmp.ticketIPT(
+ CREATE OR REPLACE TEMPORARY TABLE tSalesToMove (
ticketFk INT,
- itemPackingTypeFk VARCHAR(1)
- ) ENGINE = MEMORY;
+ saleFk INT,
+ itemPackingTypeFk INT
+ ) ENGINE=MEMORY;
- CASE vPackingTypesToSplit
- WHEN 0 THEN
- INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
- VALUES(vSelf, vItemPackingTypeFk);
- WHEN 1 THEN
- INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
- SELECT vSelf, itemPackingTypeFk
- FROM tSaleGroup
- WHERE itemPackingTypeFk IS NOT NULL;
- ELSE
- OPEN vSaleGroup;
- FETCH vSaleGroup INTO vItemPackingTypeFk;
+ INSERT INTO tSalesToMove (saleFk, itemPackingTypeFk)
+ SELECT s.id, i.itemPackingTypeFk
+ FROM ticket t
+ JOIN sale s ON s.ticketFk = t.id
+ JOIN item i ON i.id = s.itemFk
+ WHERE t.id = vSelf
+ AND i.itemPackingTypeFk <> vOriginalItemPackingTypeFk;
- INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
- VALUES(vSelf, vItemPackingTypeFk);
+ OPEN vItemPackingTypes;
- l: LOOP
- SET vDone = FALSE;
- FETCH vSaleGroup INTO vItemPackingTypeFk;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vItemPackingTypes INTO vItemPackingTypeFk;
- IF vDone THEN
- LEAVE l;
- END IF;
+ IF vDone THEN
+ LEAVE l;
+ END IF;
- CALL ticket_Clone(vSelf, vNewTicketFk);
+ CALL ticket_Clone(vSelf, vNewTicketFk);
- INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk)
- VALUES(vNewTicketFk, vItemPackingTypeFk);
- END LOOP;
+ UPDATE tSalesToMove
+ SET ticketFk = vNewTicketFk
+ WHERE itemPackingTypeFk = vItemPackingTypeFk;
- CLOSE vSaleGroup;
+ END LOOP;
- SELECT s.id
- FROM sale s
- JOIN tSale ts ON ts.id = s.id
- JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = ts.itemPackingTypeFk
- FOR UPDATE;
+ CLOSE vItemPackingTypes;
- UPDATE sale s
- JOIN tSale ts ON ts.id = s.id
- JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = ts.itemPackingTypeFk
- SET s.ticketFk = t.ticketFk;
+ UPDATE sale s
+ JOIN tSalesToMove stm ON stm.saleFk = s.id
+ SET s.ticketFk = stm.ticketFk
+ WHERE stm.ticketFk;
- SELECT itemPackingTypeFk INTO vItemPackingTypeFk
- FROM tSaleGroup sg
- WHERE sg.itemPackingTypeFk IS NOT NULL
- ORDER BY sg.itemPackingTypeFk
- LIMIT 1;
-
- UPDATE sale s
- JOIN tSale ts ON ts.id = s.id
- JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = vItemPackingTypeFk
- SET s.ticketFk = t.ticketFk
- WHERE ts.itemPackingTypeFk IS NULL;
- END CASE;
-
- COMMIT;
-
- DROP TEMPORARY TABLE
- tSale,
- tSaleGroup;
+ DROP TEMPORARY TABLE tSalesToMove;
END$$
-DELIMITER ;
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_splitPackingComplete.sql b/db/routines/vn/procedures/ticket_splitPackingComplete.sql
index 528e8fbed..cc2e4183d 100644
--- a/db/routines/vn/procedures/ticket_splitPackingComplete.sql
+++ b/db/routines/vn/procedures/ticket_splitPackingComplete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_splitPackingComplete`(vTicketFk INT, vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_splitPackingComplete`(vTicketFk INT, vSectorFk INT)
BEGIN
DECLARE vNeedToSplit BOOLEAN;
diff --git a/db/routines/vn/procedures/timeBusiness_calculate.sql b/db/routines/vn/procedures/timeBusiness_calculate.sql
index 3cb734069..448a061ad 100644
--- a/db/routines/vn/procedures/timeBusiness_calculate.sql
+++ b/db/routines/vn/procedures/timeBusiness_calculate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeBusiness_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeBusiness_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
* Horas que debe trabajar un empleado según contrato y día.
diff --git a/db/routines/vn/procedures/timeBusiness_calculateAll.sql b/db/routines/vn/procedures/timeBusiness_calculateAll.sql
index 4e0ac7da5..6ba9edbd4 100644
--- a/db/routines/vn/procedures/timeBusiness_calculateAll.sql
+++ b/db/routines/vn/procedures/timeBusiness_calculateAll.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
diff --git a/db/routines/vn/procedures/timeBusiness_calculateByDepartment.sql b/db/routines/vn/procedures/timeBusiness_calculateByDepartment.sql
index 54c587342..8253e322f 100644
--- a/db/routines/vn/procedures/timeBusiness_calculateByDepartment.sql
+++ b/db/routines/vn/procedures/timeBusiness_calculateByDepartment.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
* @param vDepartmentFk
diff --git a/db/routines/vn/procedures/timeBusiness_calculateByUser.sql b/db/routines/vn/procedures/timeBusiness_calculateByUser.sql
index a54dfcc2e..800d21c73 100644
--- a/db/routines/vn/procedures/timeBusiness_calculateByUser.sql
+++ b/db/routines/vn/procedures/timeBusiness_calculateByUser.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
diff --git a/db/routines/vn/procedures/timeBusiness_calculateByWorker.sql b/db/routines/vn/procedures/timeBusiness_calculateByWorker.sql
index 89a4c0ab0..29a9f8f5c 100644
--- a/db/routines/vn/procedures/timeBusiness_calculateByWorker.sql
+++ b/db/routines/vn/procedures/timeBusiness_calculateByWorker.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeBusiness_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
diff --git a/db/routines/vn/procedures/timeControl_calculate.sql b/db/routines/vn/procedures/timeControl_calculate.sql
index 258960265..f37e0f521 100644
--- a/db/routines/vn/procedures/timeControl_calculate.sql
+++ b/db/routines/vn/procedures/timeControl_calculate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeControl_calculate`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeControl_calculate`(
vDatedFrom DATETIME,
vDatedTo DATETIME)
BEGIN
diff --git a/db/routines/vn/procedures/timeControl_calculateAll.sql b/db/routines/vn/procedures/timeControl_calculateAll.sql
index c6354ad78..ae085a6a6 100644
--- a/db/routines/vn/procedures/timeControl_calculateAll.sql
+++ b/db/routines/vn/procedures/timeControl_calculateAll.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeControl_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeControl_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
diff --git a/db/routines/vn/procedures/timeControl_calculateByDepartment.sql b/db/routines/vn/procedures/timeControl_calculateByDepartment.sql
index bb9ccec60..bdd096a77 100644
--- a/db/routines/vn/procedures/timeControl_calculateByDepartment.sql
+++ b/db/routines/vn/procedures/timeControl_calculateByDepartment.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeControl_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeControl_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
* @param vDepartmentFk
diff --git a/db/routines/vn/procedures/timeControl_calculateByUser.sql b/db/routines/vn/procedures/timeControl_calculateByUser.sql
index 8e831cb4c..4c123a840 100644
--- a/db/routines/vn/procedures/timeControl_calculateByUser.sql
+++ b/db/routines/vn/procedures/timeControl_calculateByUser.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeControl_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeControl_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
diff --git a/db/routines/vn/procedures/timeControl_calculateByWorker.sql b/db/routines/vn/procedures/timeControl_calculateByWorker.sql
index 98c3dedd2..d4b14efe9 100644
--- a/db/routines/vn/procedures/timeControl_calculateByWorker.sql
+++ b/db/routines/vn/procedures/timeControl_calculateByWorker.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeControl_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeControl_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/**
diff --git a/db/routines/vn/procedures/timeControl_getError.sql b/db/routines/vn/procedures/timeControl_getError.sql
index 6e5ca02ab..fa6345b9c 100644
--- a/db/routines/vn/procedures/timeControl_getError.sql
+++ b/db/routines/vn/procedures/timeControl_getError.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`timeControl_getError`(vDatedFrom DATETIME, vDatedTo DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`timeControl_getError`(vDatedFrom DATETIME, vDatedTo DATETIME)
BEGIN
/*
* @param vDatedFrom
diff --git a/db/routines/vn/procedures/tpvTransaction_checkStatus.sql b/db/routines/vn/procedures/tpvTransaction_checkStatus.sql
index e16c20161..eeea13979 100644
--- a/db/routines/vn/procedures/tpvTransaction_checkStatus.sql
+++ b/db/routines/vn/procedures/tpvTransaction_checkStatus.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`tpvTransaction_checkStatus`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`tpvTransaction_checkStatus`()
BEGIN
/**
*
diff --git a/db/routines/vn/procedures/travelVolume.sql b/db/routines/vn/procedures/travelVolume.sql
index 21eae36ac..2e2cdc83b 100644
--- a/db/routines/vn/procedures/travelVolume.sql
+++ b/db/routines/vn/procedures/travelVolume.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travelVolume`(vTravelFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travelVolume`(vTravelFk INT)
BEGIN
SELECT w1.name AS ORI,
diff --git a/db/routines/vn/procedures/travelVolume_get.sql b/db/routines/vn/procedures/travelVolume_get.sql
index f9d00aeb4..99c0acbb8 100644
--- a/db/routines/vn/procedures/travelVolume_get.sql
+++ b/db/routines/vn/procedures/travelVolume_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travelVolume_get`(vFromDated DATE, vToDated DATE, vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travelVolume_get`(vFromDated DATE, vToDated DATE, vWarehouseFk INT)
BEGIN
SELECT tr.landed Fecha,
a.name Agencia,
diff --git a/db/routines/vn/procedures/travel_checkDates.sql b/db/routines/vn/procedures/travel_checkDates.sql
index 45690fcb4..004fefa64 100644
--- a/db/routines/vn/procedures/travel_checkDates.sql
+++ b/db/routines/vn/procedures/travel_checkDates.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_checkDates`(vShipped DATE, vLanded DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_checkDates`(vShipped DATE, vLanded DATE)
BEGIN
/**
* Checks the landing/shipment dates of travel, throws an error
diff --git a/db/routines/vn/procedures/travel_checkPackaging.sql b/db/routines/vn/procedures/travel_checkPackaging.sql
index 59df1b894..2b67f4d25 100644
--- a/db/routines/vn/procedures/travel_checkPackaging.sql
+++ b/db/routines/vn/procedures/travel_checkPackaging.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_checkPackaging`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_checkPackaging`(vSelf INT)
BEGIN
DECLARE vDone BOOL;
DECLARE vEntryFk INT;
diff --git a/db/routines/vn/procedures/travel_checkWarehouseIsFeedStock.sql b/db/routines/vn/procedures/travel_checkWarehouseIsFeedStock.sql
index ef69d772b..27ca9955f 100644
--- a/db/routines/vn/procedures/travel_checkWarehouseIsFeedStock.sql
+++ b/db/routines/vn/procedures/travel_checkWarehouseIsFeedStock.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_checkWarehouseIsFeedStock`(vWarehouseFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_checkWarehouseIsFeedStock`(vWarehouseFk INT)
proc: BEGIN
/*
* Check that the warehouse is not Feed Stock
diff --git a/db/routines/vn/procedures/travel_clone.sql b/db/routines/vn/procedures/travel_clone.sql
index 96500baa1..74a76d477 100644
--- a/db/routines/vn/procedures/travel_clone.sql
+++ b/db/routines/vn/procedures/travel_clone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_clone`(vSelf INT, vDays INT, OUT vNewTravelFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_clone`(vSelf INT, vDays INT, OUT vNewTravelFk INT)
BEGIN
/**
* Clona un travel el número de dias indicado y devuelve su id.
diff --git a/db/routines/vn/procedures/travel_cloneWithEntries.sql b/db/routines/vn/procedures/travel_cloneWithEntries.sql
index e2d086fc8..ee26aea32 100644
--- a/db/routines/vn/procedures/travel_cloneWithEntries.sql
+++ b/db/routines/vn/procedures/travel_cloneWithEntries.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_cloneWithEntries`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_cloneWithEntries`(
IN vTravelFk INT,
IN vDateStart DATE,
IN vDateEnd DATE,
diff --git a/db/routines/vn/procedures/travel_getDetailFromContinent.sql b/db/routines/vn/procedures/travel_getDetailFromContinent.sql
index e81e648b3..a9ee0b6ca 100644
--- a/db/routines/vn/procedures/travel_getDetailFromContinent.sql
+++ b/db/routines/vn/procedures/travel_getDetailFromContinent.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_getDetailFromContinent`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_getDetailFromContinent`(
vContinentFk INT
)
BEGIN
diff --git a/db/routines/vn/procedures/travel_getEntriesMissingPackage.sql b/db/routines/vn/procedures/travel_getEntriesMissingPackage.sql
index 35d30e0c4..dc78f964c 100644
--- a/db/routines/vn/procedures/travel_getEntriesMissingPackage.sql
+++ b/db/routines/vn/procedures/travel_getEntriesMissingPackage.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_getEntriesMissingPackage`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_getEntriesMissingPackage`(vSelf INT)
BEGIN
DECLARE vpackageOrPackingNull INT;
DECLARE vTravelFk INT;
diff --git a/db/routines/vn/procedures/travel_moveRaids.sql b/db/routines/vn/procedures/travel_moveRaids.sql
index c7696e829..95e02ec55 100644
--- a/db/routines/vn/procedures/travel_moveRaids.sql
+++ b/db/routines/vn/procedures/travel_moveRaids.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_moveRaids`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_moveRaids`()
BEGIN
/*
diff --git a/db/routines/vn/procedures/travel_recalc.sql b/db/routines/vn/procedures/travel_recalc.sql
index 46d1cdc4f..9aebeaad8 100644
--- a/db/routines/vn/procedures/travel_recalc.sql
+++ b/db/routines/vn/procedures/travel_recalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_recalc`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_recalc`(vSelf INT)
proc: BEGIN
/**
* Updates the number of entries assigned to the travel.
diff --git a/db/routines/vn/procedures/travel_throwAwb.sql b/db/routines/vn/procedures/travel_throwAwb.sql
index 1b54f8532..a372e4600 100644
--- a/db/routines/vn/procedures/travel_throwAwb.sql
+++ b/db/routines/vn/procedures/travel_throwAwb.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_throwAwb`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_throwAwb`(vSelf INT)
BEGIN
/**
* Throws an error if travel does not have a logical AWB
diff --git a/db/routines/vn/procedures/travel_upcomingArrivals.sql b/db/routines/vn/procedures/travel_upcomingArrivals.sql
index a2cd3733c..f271f55a0 100644
--- a/db/routines/vn/procedures/travel_upcomingArrivals.sql
+++ b/db/routines/vn/procedures/travel_upcomingArrivals.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_upcomingArrivals`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_upcomingArrivals`(
vWarehouseFk INT,
vDate DATETIME
)
diff --git a/db/routines/vn/procedures/travel_updatePacking.sql b/db/routines/vn/procedures/travel_updatePacking.sql
index 0f63bbf62..dd73bb199 100644
--- a/db/routines/vn/procedures/travel_updatePacking.sql
+++ b/db/routines/vn/procedures/travel_updatePacking.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_updatePacking`(vItemFk INT, vPacking INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_updatePacking`(vItemFk INT, vPacking INT)
BEGIN
/**
* Actualiza packing para los movimientos de almacén de la subasta al almacén central
diff --git a/db/routines/vn/procedures/travel_weeklyClone.sql b/db/routines/vn/procedures/travel_weeklyClone.sql
index a92916c10..182e824af 100644
--- a/db/routines/vn/procedures/travel_weeklyClone.sql
+++ b/db/routines/vn/procedures/travel_weeklyClone.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_weeklyClone`(vSinceWeek INT, vToWeek INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_weeklyClone`(vSinceWeek INT, vToWeek INT)
BEGIN
/**
* Clona los traslados plantilla para las semanas pasadas por parámetros.
diff --git a/db/routines/vn/procedures/typeTagMake.sql b/db/routines/vn/procedures/typeTagMake.sql
index ddfc7fdb9..168b3f4ef 100644
--- a/db/routines/vn/procedures/typeTagMake.sql
+++ b/db/routines/vn/procedures/typeTagMake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`typeTagMake`(vTypeFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`typeTagMake`(vTypeFk INT)
BEGIN
/*
* Plantilla para modificar reemplazar todos los tags
diff --git a/db/routines/vn/procedures/updatePedidosInternos.sql b/db/routines/vn/procedures/updatePedidosInternos.sql
index 97b01bf8b..b2bc25cb9 100644
--- a/db/routines/vn/procedures/updatePedidosInternos.sql
+++ b/db/routines/vn/procedures/updatePedidosInternos.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`updatePedidosInternos`(vItemFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`updatePedidosInternos`(vItemFk INT)
BEGIN
UPDATE vn.item SET upToDown = 0 WHERE item.id = vItemFk;
diff --git a/db/routines/vn/procedures/vehicle_checkNumberPlate.sql b/db/routines/vn/procedures/vehicle_checkNumberPlate.sql
index 8e3f24d76..cbbcbec63 100644
--- a/db/routines/vn/procedures/vehicle_checkNumberPlate.sql
+++ b/db/routines/vn/procedures/vehicle_checkNumberPlate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`vehicle_checkNumberPlate`(vNumberPlate VARCHAR(10), vCountryCodeFk VARCHAR(2))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`vehicle_checkNumberPlate`(vNumberPlate VARCHAR(10), vCountryCodeFk VARCHAR(2))
BEGIN
/**
* Comprueba si la matricula pasada tiene el formato correcto dependiendo del pais del vehiculo
diff --git a/db/routines/vn/procedures/vehicle_notifyEvents.sql b/db/routines/vn/procedures/vehicle_notifyEvents.sql
index 1a07a96e2..756b20bca 100644
--- a/db/routines/vn/procedures/vehicle_notifyEvents.sql
+++ b/db/routines/vn/procedures/vehicle_notifyEvents.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`vehicle_notifyEvents`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`vehicle_notifyEvents`()
proc:BEGIN
/**
* Query the vehicleEvent table to see if there are any events that need to be notified.
diff --git a/db/routines/vn/procedures/visible_getMisfit.sql b/db/routines/vn/procedures/visible_getMisfit.sql
index 631f0236e..a7abdca9a 100644
--- a/db/routines/vn/procedures/visible_getMisfit.sql
+++ b/db/routines/vn/procedures/visible_getMisfit.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`visible_getMisfit`(vSectorFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`visible_getMisfit`(vSectorFk INT)
BEGIN
/* Devuelve una tabla temporal con los descuadres entre el visible teórico y lo ubicado en la práctica
diff --git a/db/routines/vn/procedures/warehouseFitting.sql b/db/routines/vn/procedures/warehouseFitting.sql
index 4be35a3ee..10347bebf 100644
--- a/db/routines/vn/procedures/warehouseFitting.sql
+++ b/db/routines/vn/procedures/warehouseFitting.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`warehouseFitting`(IN vWhOrigin INT , IN vWhDestiny INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`warehouseFitting`(IN vWhOrigin INT , IN vWhDestiny INT)
BEGIN
DECLARE vCacheVisibleOriginFk INT;
DECLARE vCacheVisibleDestinyFk INT;
diff --git a/db/routines/vn/procedures/warehouseFitting_byTravel.sql b/db/routines/vn/procedures/warehouseFitting_byTravel.sql
index db67c1599..9e0a7abc0 100644
--- a/db/routines/vn/procedures/warehouseFitting_byTravel.sql
+++ b/db/routines/vn/procedures/warehouseFitting_byTravel.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`warehouseFitting_byTravel`(IN vTravelFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`warehouseFitting_byTravel`(IN vTravelFk INT)
BEGIN
DECLARE vWhOrigin INT;
diff --git a/db/routines/vn/procedures/workerCalculateBoss.sql b/db/routines/vn/procedures/workerCalculateBoss.sql
index 0fc08ed40..afbf1f89d 100644
--- a/db/routines/vn/procedures/workerCalculateBoss.sql
+++ b/db/routines/vn/procedures/workerCalculateBoss.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerCalculateBoss`(vWorker INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerCalculateBoss`(vWorker INT)
BEGIN
/**
* Actualiza la tabla workerBosses
diff --git a/db/routines/vn/procedures/workerCalendar_calculateBusiness.sql b/db/routines/vn/procedures/workerCalendar_calculateBusiness.sql
index 72b461154..429435e3e 100644
--- a/db/routines/vn/procedures/workerCalendar_calculateBusiness.sql
+++ b/db/routines/vn/procedures/workerCalendar_calculateBusiness.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerCalendar_calculateBusiness`(vYear INT, vBusinessFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerCalendar_calculateBusiness`(vYear INT, vBusinessFk INT)
BEGIN
/**
* Calcula los días y horas de vacaciones en función de un contrato y año
diff --git a/db/routines/vn/procedures/workerCalendar_calculateYear.sql b/db/routines/vn/procedures/workerCalendar_calculateYear.sql
index 9e3baf641..ccda31ce3 100644
--- a/db/routines/vn/procedures/workerCalendar_calculateYear.sql
+++ b/db/routines/vn/procedures/workerCalendar_calculateYear.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerCalendar_calculateYear`(vYear INT, vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerCalendar_calculateYear`(vYear INT, vWorkerFk INT)
BEGIN
/**
diff --git a/db/routines/vn/procedures/workerCreateExternal.sql b/db/routines/vn/procedures/workerCreateExternal.sql
index f8cea70b1..c825e6fc5 100644
--- a/db/routines/vn/procedures/workerCreateExternal.sql
+++ b/db/routines/vn/procedures/workerCreateExternal.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerCreateExternal`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerCreateExternal`(
vFirstName VARCHAR(50),
vSurname1 VARCHAR(50),
vSurname2 VARCHAR(50),
diff --git a/db/routines/vn/procedures/workerDepartmentByDate.sql b/db/routines/vn/procedures/workerDepartmentByDate.sql
index 40a099d64..466fd3ab6 100644
--- a/db/routines/vn/procedures/workerDepartmentByDate.sql
+++ b/db/routines/vn/procedures/workerDepartmentByDate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerDepartmentByDate`(vDate DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerDepartmentByDate`(vDate DATE)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.workerDepartmentByDate;
diff --git a/db/routines/vn/procedures/workerDisable.sql b/db/routines/vn/procedures/workerDisable.sql
index 04612a6dc..7760d5de0 100644
--- a/db/routines/vn/procedures/workerDisable.sql
+++ b/db/routines/vn/procedures/workerDisable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerDisable`(vUserId int)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerDisable`(vUserId int)
mainLabel:BEGIN
IF (SELECT COUNT(*) FROM workerDisableExcluded WHERE workerFk = vUserId AND (dated > util.VN_CURDATE() OR dated IS NULL)) > 0 THEN
diff --git a/db/routines/vn/procedures/workerDisableAll.sql b/db/routines/vn/procedures/workerDisableAll.sql
index e2f7740b2..5c1aed342 100644
--- a/db/routines/vn/procedures/workerDisableAll.sql
+++ b/db/routines/vn/procedures/workerDisableAll.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerDisableAll`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerDisableAll`()
BEGIN
DECLARE done BOOL DEFAULT FALSE;
DECLARE vUserFk INT;
diff --git a/db/routines/vn/procedures/workerForAllCalculateBoss.sql b/db/routines/vn/procedures/workerForAllCalculateBoss.sql
index f3574116e..4db97e017 100644
--- a/db/routines/vn/procedures/workerForAllCalculateBoss.sql
+++ b/db/routines/vn/procedures/workerForAllCalculateBoss.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerForAllCalculateBoss`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerForAllCalculateBoss`()
BEGIN
/**
* Actualiza la tabla workerBosses utilizando el procedimiento
diff --git a/db/routines/vn/procedures/workerJourney_replace.sql b/db/routines/vn/procedures/workerJourney_replace.sql
index 1fcb8c590..7156e8658 100644
--- a/db/routines/vn/procedures/workerJourney_replace.sql
+++ b/db/routines/vn/procedures/workerJourney_replace.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerJourney_replace`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerJourney_replace`(
vDatedFrom DATE,
vDatedTo DATE,
vWorkerFk INT)
diff --git a/db/routines/vn/procedures/workerMistakeType_get.sql b/db/routines/vn/procedures/workerMistakeType_get.sql
index ae81640a1..3429521e5 100644
--- a/db/routines/vn/procedures/workerMistakeType_get.sql
+++ b/db/routines/vn/procedures/workerMistakeType_get.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerMistakeType_get`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerMistakeType_get`()
BEGIN
/**
diff --git a/db/routines/vn/procedures/workerMistake_add.sql b/db/routines/vn/procedures/workerMistake_add.sql
index c4786090b..3dfc67046 100644
--- a/db/routines/vn/procedures/workerMistake_add.sql
+++ b/db/routines/vn/procedures/workerMistake_add.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerMistake_add`(vWorkerFk INT, vWorkerMistakeTypeFk VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerMistake_add`(vWorkerFk INT, vWorkerMistakeTypeFk VARCHAR(10))
BEGIN
/**
* Añade error al trabajador
diff --git a/db/routines/vn/procedures/workerTimeControlSOWP.sql b/db/routines/vn/procedures/workerTimeControlSOWP.sql
index 14959b942..80e57d5c3 100644
--- a/db/routines/vn/procedures/workerTimeControlSOWP.sql
+++ b/db/routines/vn/procedures/workerTimeControlSOWP.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControlSOWP`(IN vUserFk INT, IN vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControlSOWP`(IN vUserFk INT, IN vDated DATE)
BEGIN
SET @order := 0;
diff --git a/db/routines/vn/procedures/workerTimeControl_calculateOddDays.sql b/db/routines/vn/procedures/workerTimeControl_calculateOddDays.sql
index 9c1e58608..57fd3e977 100644
--- a/db/routines/vn/procedures/workerTimeControl_calculateOddDays.sql
+++ b/db/routines/vn/procedures/workerTimeControl_calculateOddDays.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_calculateOddDays`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_calculateOddDays`()
BEGIN
/**
* Calculo de las fichadas impares por empleado y dia.
diff --git a/db/routines/vn/procedures/workerTimeControl_check.sql b/db/routines/vn/procedures/workerTimeControl_check.sql
index ce0e51490..30cf5c639 100644
--- a/db/routines/vn/procedures/workerTimeControl_check.sql
+++ b/db/routines/vn/procedures/workerTimeControl_check.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_check`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_check`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100))
proc: BEGIN
/**
* Verifica si el empleado puede fichar en el momento actual, si puede fichar llama a workerTimeControlAdd
diff --git a/db/routines/vn/procedures/workerTimeControl_checkBreak.sql b/db/routines/vn/procedures/workerTimeControl_checkBreak.sql
index 15dd12373..81850df9f 100644
--- a/db/routines/vn/procedures/workerTimeControl_checkBreak.sql
+++ b/db/routines/vn/procedures/workerTimeControl_checkBreak.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_checkBreak`(vStarted DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_checkBreak`(vStarted DATE)
BEGIN
/**
* Retorna los trabajadores que no han respetado el descanso semanal de 36/72 horas
diff --git a/db/routines/vn/procedures/workerTimeControl_clockIn.sql b/db/routines/vn/procedures/workerTimeControl_clockIn.sql
index a1ce53bc2..522546918 100644
--- a/db/routines/vn/procedures/workerTimeControl_clockIn.sql
+++ b/db/routines/vn/procedures/workerTimeControl_clockIn.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_clockIn`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_clockIn`(
vWorkerFk INT,
vTimed DATETIME,
vDirection VARCHAR(10),
diff --git a/db/routines/vn/procedures/workerTimeControl_direction.sql b/db/routines/vn/procedures/workerTimeControl_direction.sql
index 8e807084c..84db396cc 100644
--- a/db/routines/vn/procedures/workerTimeControl_direction.sql
+++ b/db/routines/vn/procedures/workerTimeControl_direction.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_direction`(vWorkerFk VARCHAR(10), vTimed DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_direction`(vWorkerFk VARCHAR(10), vTimed DATETIME)
BEGIN
/**
* Devuelve que direcciones de fichadas son lógicas a partir de la anterior fichada
diff --git a/db/routines/vn/procedures/workerTimeControl_getClockIn.sql b/db/routines/vn/procedures/workerTimeControl_getClockIn.sql
index 11cd23fa5..454cd3c77 100644
--- a/db/routines/vn/procedures/workerTimeControl_getClockIn.sql
+++ b/db/routines/vn/procedures/workerTimeControl_getClockIn.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_getClockIn`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_getClockIn`(
vUserFk INT,
vDated DATE)
BEGIN
diff --git a/db/routines/vn/procedures/workerTimeControl_login.sql b/db/routines/vn/procedures/workerTimeControl_login.sql
index c46663e1f..0a138693c 100644
--- a/db/routines/vn/procedures/workerTimeControl_login.sql
+++ b/db/routines/vn/procedures/workerTimeControl_login.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_login`(vWorkerFk VARCHAR(10))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_login`(vWorkerFk VARCHAR(10))
BEGIN
/**
* Consulta la información del usuario y los botones que tiene que activar en la tablet tras hacer login
diff --git a/db/routines/vn/procedures/workerTimeControl_remove.sql b/db/routines/vn/procedures/workerTimeControl_remove.sql
index 7b34cbbeb..b4e55986a 100644
--- a/db/routines/vn/procedures/workerTimeControl_remove.sql
+++ b/db/routines/vn/procedures/workerTimeControl_remove.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_remove`(IN vUserFk INT, IN vTimed DATETIME)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_remove`(IN vUserFk INT, IN vTimed DATETIME)
BEGIN
DECLARE vDirectionRemove VARCHAR(6);
diff --git a/db/routines/vn/procedures/workerTimeControl_sendMailByDepartment.sql b/db/routines/vn/procedures/workerTimeControl_sendMailByDepartment.sql
index 5b276084a..b8af457d0 100644
--- a/db/routines/vn/procedures/workerTimeControl_sendMailByDepartment.sql
+++ b/db/routines/vn/procedures/workerTimeControl_sendMailByDepartment.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_sendMailByDepartment`(IN vDatedFrom DATETIME, IN vDatedTo DATETIME, IN vWorkerFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_sendMailByDepartment`(IN vDatedFrom DATETIME, IN vDatedTo DATETIME, IN vWorkerFk INT)
BEGIN
/**
* Inserta el registro de horario semanalmente de PRODUCCION, CAMARA, REPARTO, TALLER NATURAL y TALLER ARTIFICIAL en vn.mail.
diff --git a/db/routines/vn/procedures/workerTimeControl_sendMailByDepartmentLauncher.sql b/db/routines/vn/procedures/workerTimeControl_sendMailByDepartmentLauncher.sql
index 406bb8d8d..e1ccb1c78 100644
--- a/db/routines/vn/procedures/workerTimeControl_sendMailByDepartmentLauncher.sql
+++ b/db/routines/vn/procedures/workerTimeControl_sendMailByDepartmentLauncher.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_sendMailByDepartmentLauncher`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_sendMailByDepartmentLauncher`()
BEGIN
DECLARE vDatedFrom, vDatedTo DATETIME;
diff --git a/db/routines/vn/procedures/workerTimeControl_weekCheckBreak.sql b/db/routines/vn/procedures/workerTimeControl_weekCheckBreak.sql
index 70ef3da07..af87a251e 100644
--- a/db/routines/vn/procedures/workerTimeControl_weekCheckBreak.sql
+++ b/db/routines/vn/procedures/workerTimeControl_weekCheckBreak.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerTimeControl_weekCheckBreak`(vStarted DATE, vEnded DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_weekCheckBreak`(vStarted DATE, vEnded DATE)
BEGIN
/**
* Retorna los trabajadores que no han respetado el descanso semanal de 36/72 horas
diff --git a/db/routines/vn/procedures/workerWeekControl.sql b/db/routines/vn/procedures/workerWeekControl.sql
index 8001d8d3a..186b0a35d 100644
--- a/db/routines/vn/procedures/workerWeekControl.sql
+++ b/db/routines/vn/procedures/workerWeekControl.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerWeekControl`(vUserFk INT, vDated DATE, vTabletFk VARCHAR(100))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerWeekControl`(vUserFk INT, vDated DATE, vTabletFk VARCHAR(100))
BEGIN
/*
* Devuelve la cantidad de descansos de 12h y de 36 horas que ha disfrutado el trabajador
diff --git a/db/routines/vn/procedures/worker_checkMultipleDevice.sql b/db/routines/vn/procedures/worker_checkMultipleDevice.sql
index 00df08d49..71978ca3b 100644
--- a/db/routines/vn/procedures/worker_checkMultipleDevice.sql
+++ b/db/routines/vn/procedures/worker_checkMultipleDevice.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_checkMultipleDevice`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`worker_checkMultipleDevice`(
vSelf INT
)
BEGIN
diff --git a/db/routines/vn/procedures/worker_getFromHasMistake.sql b/db/routines/vn/procedures/worker_getFromHasMistake.sql
index 052097e79..a65558bbb 100644
--- a/db/routines/vn/procedures/worker_getFromHasMistake.sql
+++ b/db/routines/vn/procedures/worker_getFromHasMistake.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_getFromHasMistake`(vDepartmentFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`worker_getFromHasMistake`(vDepartmentFk INT)
BEGIN
/**
diff --git a/db/routines/vn/procedures/worker_getHierarchy.sql b/db/routines/vn/procedures/worker_getHierarchy.sql
index de6956898..a858c5ff7 100644
--- a/db/routines/vn/procedures/worker_getHierarchy.sql
+++ b/db/routines/vn/procedures/worker_getHierarchy.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_getHierarchy`(vUserFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`worker_getHierarchy`(vUserFk INT)
BEGIN
/**
* Retorna una tabla temporal con los trabajadores que tiene
diff --git a/db/routines/vn/procedures/worker_getSector.sql b/db/routines/vn/procedures/worker_getSector.sql
index 759bb839b..3d636394d 100644
--- a/db/routines/vn/procedures/worker_getSector.sql
+++ b/db/routines/vn/procedures/worker_getSector.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_getSector`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`worker_getSector`()
BEGIN
/**
diff --git a/db/routines/vn/procedures/worker_updateBalance.sql b/db/routines/vn/procedures/worker_updateBalance.sql
index 17c2fbbe1..96357e4d6 100644
--- a/db/routines/vn/procedures/worker_updateBalance.sql
+++ b/db/routines/vn/procedures/worker_updateBalance.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_updateBalance`(vSelf INT(11), vCredit DECIMAL(10,2), vDebit DECIMAL(10,2))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`worker_updateBalance`(vSelf INT(11), vCredit DECIMAL(10,2), vDebit DECIMAL(10,2))
BEGIN
/**
* Actualiza la columna balance de worker.
diff --git a/db/routines/vn/procedures/worker_updateBusiness.sql b/db/routines/vn/procedures/worker_updateBusiness.sql
index 76c8c9cbb..a160c417a 100644
--- a/db/routines/vn/procedures/worker_updateBusiness.sql
+++ b/db/routines/vn/procedures/worker_updateBusiness.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_updateBusiness`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`worker_updateBusiness`(vSelf INT)
BEGIN
/**
* Activates an account and configures its email settings.
diff --git a/db/routines/vn/procedures/worker_updateChangedBusiness.sql b/db/routines/vn/procedures/worker_updateChangedBusiness.sql
index 05e68b099..0bb0e5905 100644
--- a/db/routines/vn/procedures/worker_updateChangedBusiness.sql
+++ b/db/routines/vn/procedures/worker_updateChangedBusiness.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_updateChangedBusiness`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`worker_updateChangedBusiness`()
BEGIN
/**
* Actualiza el contrato actual de todos los trabajadores cuyo contracto ha
diff --git a/db/routines/vn/procedures/workingHours.sql b/db/routines/vn/procedures/workingHours.sql
index c08226db7..12b65753f 100644
--- a/db/routines/vn/procedures/workingHours.sql
+++ b/db/routines/vn/procedures/workingHours.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workingHours`(username varchar(255), logon boolean)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workingHours`(username varchar(255), logon boolean)
BEGIN
DECLARE userid int(11);
diff --git a/db/routines/vn/procedures/workingHoursTimeIn.sql b/db/routines/vn/procedures/workingHoursTimeIn.sql
index 8a4268c54..a8ac07cb4 100644
--- a/db/routines/vn/procedures/workingHoursTimeIn.sql
+++ b/db/routines/vn/procedures/workingHoursTimeIn.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workingHoursTimeIn`(vUserId INT(11))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workingHoursTimeIn`(vUserId INT(11))
BEGIN
INSERT INTO vn.workingHours (timeIn, userId)
VALUES (util.VN_NOW(),vUserId);
diff --git a/db/routines/vn/procedures/workingHoursTimeOut.sql b/db/routines/vn/procedures/workingHoursTimeOut.sql
index f6ce2886c..d44d99f52 100644
--- a/db/routines/vn/procedures/workingHoursTimeOut.sql
+++ b/db/routines/vn/procedures/workingHoursTimeOut.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workingHoursTimeOut`(vUserId INT(11))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workingHoursTimeOut`(vUserId INT(11))
BEGIN
UPDATE vn.workingHours
SET timeOut = util.VN_NOW()
diff --git a/db/routines/vn/procedures/wrongEqualizatedClient.sql b/db/routines/vn/procedures/wrongEqualizatedClient.sql
index 47a6a608d..75499b6f1 100644
--- a/db/routines/vn/procedures/wrongEqualizatedClient.sql
+++ b/db/routines/vn/procedures/wrongEqualizatedClient.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`wrongEqualizatedClient`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`wrongEqualizatedClient`()
BEGIN
SELECT clientFk, c.name, c.isActive, c.isTaxDataChecked, count(ie) as num
FROM vn.client c
diff --git a/db/routines/vn/procedures/xdiario_new.sql b/db/routines/vn/procedures/xdiario_new.sql
index 22a26184e..1c73c6bda 100644
--- a/db/routines/vn/procedures/xdiario_new.sql
+++ b/db/routines/vn/procedures/xdiario_new.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`xdiario_new`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`xdiario_new`(
vBookNumber INT,
vDated DATE,
vSubaccount VARCHAR(12),
diff --git a/db/routines/vn/procedures/zoneClosure_recalc.sql b/db/routines/vn/procedures/zoneClosure_recalc.sql
index 9e51c007d..b1bc77350 100644
--- a/db/routines/vn/procedures/zoneClosure_recalc.sql
+++ b/db/routines/vn/procedures/zoneClosure_recalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneClosure_recalc`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneClosure_recalc`()
proc: BEGIN
/**
* Recalculates the delivery time (hour) for every zone in days + scope in future
diff --git a/db/routines/vn/procedures/zoneGeo_calcTree.sql b/db/routines/vn/procedures/zoneGeo_calcTree.sql
index 34e1d8241..0bca0d26f 100644
--- a/db/routines/vn/procedures/zoneGeo_calcTree.sql
+++ b/db/routines/vn/procedures/zoneGeo_calcTree.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneGeo_calcTree`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneGeo_calcTree`()
BEGIN
/**
* Calculates the #path, #lft, #rgt, #sons and #depth columns of
diff --git a/db/routines/vn/procedures/zoneGeo_calcTreeRec.sql b/db/routines/vn/procedures/zoneGeo_calcTreeRec.sql
index da499ede3..1994f2f8b 100644
--- a/db/routines/vn/procedures/zoneGeo_calcTreeRec.sql
+++ b/db/routines/vn/procedures/zoneGeo_calcTreeRec.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneGeo_calcTreeRec`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneGeo_calcTreeRec`(
vSelf INT,
vPath VARCHAR(255),
vDepth INT,
diff --git a/db/routines/vn/procedures/zoneGeo_checkName.sql b/db/routines/vn/procedures/zoneGeo_checkName.sql
index 5933f4be2..066209ffd 100644
--- a/db/routines/vn/procedures/zoneGeo_checkName.sql
+++ b/db/routines/vn/procedures/zoneGeo_checkName.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneGeo_checkName`(vName VARCHAR(255))
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneGeo_checkName`(vName VARCHAR(255))
BEGIN
IF vName = '' THEN
SIGNAL SQLSTATE '45000'
diff --git a/db/routines/vn/procedures/zoneGeo_delete.sql b/db/routines/vn/procedures/zoneGeo_delete.sql
index 5bf0c5120..d6f13171b 100644
--- a/db/routines/vn/procedures/zoneGeo_delete.sql
+++ b/db/routines/vn/procedures/zoneGeo_delete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneGeo_delete`(vSelf INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneGeo_delete`(vSelf INT)
BEGIN
/**
* Deletes a node from the #zoneGeo table. Also sets a mark
diff --git a/db/routines/vn/procedures/zoneGeo_doCalc.sql b/db/routines/vn/procedures/zoneGeo_doCalc.sql
index ce32357ec..16f2bd819 100644
--- a/db/routines/vn/procedures/zoneGeo_doCalc.sql
+++ b/db/routines/vn/procedures/zoneGeo_doCalc.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneGeo_doCalc`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneGeo_doCalc`()
proc: BEGIN
/**
* Recalculates the zones tree.
diff --git a/db/routines/vn/procedures/zoneGeo_setParent.sql b/db/routines/vn/procedures/zoneGeo_setParent.sql
index 3f8f051a2..ad37d69db 100644
--- a/db/routines/vn/procedures/zoneGeo_setParent.sql
+++ b/db/routines/vn/procedures/zoneGeo_setParent.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneGeo_setParent`(vSelf INT, vParentFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneGeo_setParent`(vSelf INT, vParentFk INT)
BEGIN
/**
* Updates the parent of a node. Also sets a mark
diff --git a/db/routines/vn/procedures/zoneGeo_throwNotEditable.sql b/db/routines/vn/procedures/zoneGeo_throwNotEditable.sql
index 0b5c8aecf..2fa6fbf85 100644
--- a/db/routines/vn/procedures/zoneGeo_throwNotEditable.sql
+++ b/db/routines/vn/procedures/zoneGeo_throwNotEditable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneGeo_throwNotEditable`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zoneGeo_throwNotEditable`()
BEGIN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Column `geoFk` cannot be modified';
diff --git a/db/routines/vn/procedures/zone_excludeFromGeo.sql b/db/routines/vn/procedures/zone_excludeFromGeo.sql
index 6f0556bd7..23a5865fd 100644
--- a/db/routines/vn/procedures/zone_excludeFromGeo.sql
+++ b/db/routines/vn/procedures/zone_excludeFromGeo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_excludeFromGeo`(vZoneGeo INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_excludeFromGeo`(vZoneGeo INT)
BEGIN
/**
* Excluye zonas a partir un geoFk.
diff --git a/db/routines/vn/procedures/zone_getAddresses.sql b/db/routines/vn/procedures/zone_getAddresses.sql
index ce7b0204e..2e5982c82 100644
--- a/db/routines/vn/procedures/zone_getAddresses.sql
+++ b/db/routines/vn/procedures/zone_getAddresses.sql
@@ -1,55 +1,57 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getAddresses`(
+CREATE OR REPLACE DEFINER=`vn`@`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 (
- SELECT clientFk
- FROM vn.ticket
- WHERE landed BETWEEN vLanded AND util.dayEnd(vLanded)
- )
+ WITH clientWithTicket AS (
+ SELECT clientFk
+ FROM vn.ticket
+ WHERE shipped BETWEEN vShipped AND util.dayEnd(vShipped)
)
- SELECT c.id clientFk,
- c.name,
- c.phone,
- bt.description,
- c.salesPersonFk,
- u.name username,
- aai.invoiced,
- cnb.lastShipped
- FROM vn.client c
- JOIN notHasTicket ON notHasTicket.id = 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
- JOIN vn.town t ON t.id = pc.townFk AND t.provinceFk = a.provinceFk
- JOIN vn.zoneGeo zg ON zg.name = a.postalCode
- JOIN tmp.zoneNodes zn ON zn.geoFk = pc.geoFk
- LEFT JOIN bs.clientNewBorn cnb ON cnb.clientFk = c.id
- LEFT JOIN vn.annualAverageInvoiced aai ON aai.clientFk = c.id
- JOIN vn.clientType ct ON ct.code = c.typeFk
- JOIN vn.businessType bt ON bt.code = c.businessTypeFk
- WHERE a.isActive
- AND c.isActive
- AND ct.code = 'normal'
- AND bt.code <> 'worker'
- GROUP BY c.id;
+ SELECT c.id,
+ c.name,
+ c.phone,
+ bt.description,
+ c.salesPersonFk,
+ u.name username,
+ aai.invoiced,
+ cnb.lastShipped,
+ cwt.clientFk
+ FROM vn.client c
+ 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
+ JOIN vn.town t ON t.id = pc.townFk AND t.provinceFk = a.provinceFk
+ JOIN vn.zoneGeo zg ON zg.name = a.postalCode
+ JOIN tmp.zoneNodes zn ON zn.geoFk = pc.geoFk
+ LEFT JOIN bs.clientNewBorn cnb ON cnb.clientFk = c.id
+ LEFT JOIN vn.annualAverageInvoiced aai ON aai.clientFk = c.id
+ JOIN vn.clientType ct ON ct.code = c.typeFk
+ JOIN vn.businessType bt ON bt.code = c.businessTypeFk
+ WHERE a.isActive
+ 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;
END$$
diff --git a/db/routines/vn/procedures/zone_getAgency.sql b/db/routines/vn/procedures/zone_getAgency.sql
index 8b66b110b..8b3540477 100644
--- a/db/routines/vn/procedures/zone_getAgency.sql
+++ b/db/routines/vn/procedures/zone_getAgency.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getAgency`(vAddress INT, vLanded DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getAgency`(vAddress INT, vLanded DATE)
BEGIN
/**
* Devuelve el listado de agencias disponibles para la fecha
diff --git a/db/routines/vn/procedures/zone_getAvailable.sql b/db/routines/vn/procedures/zone_getAvailable.sql
index 4fd3d1b34..5362185e6 100644
--- a/db/routines/vn/procedures/zone_getAvailable.sql
+++ b/db/routines/vn/procedures/zone_getAvailable.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getAvailable`(vAddress INT, vLanded DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getAvailable`(vAddress INT, vLanded DATE)
BEGIN
CALL zone_getFromGeo(address_getGeo(vAddress));
CALL zone_getOptionsForLanding(vLanded, FALSE);
diff --git a/db/routines/vn/procedures/zone_getClosed.sql b/db/routines/vn/procedures/zone_getClosed.sql
index f48e6ff44..4d22c96bd 100644
--- a/db/routines/vn/procedures/zone_getClosed.sql
+++ b/db/routines/vn/procedures/zone_getClosed.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getClosed`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getClosed`()
proc:BEGIN
/**
* Devuelve una tabla con las zonas cerradas para hoy
diff --git a/db/routines/vn/procedures/zone_getCollisions.sql b/db/routines/vn/procedures/zone_getCollisions.sql
index e28b2b341..9b57017f7 100644
--- a/db/routines/vn/procedures/zone_getCollisions.sql
+++ b/db/routines/vn/procedures/zone_getCollisions.sql
@@ -1,6 +1,6 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getCollisions`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getCollisions`()
BEGIN
/**
* Calcula si para un mismo codigo postal y dia
diff --git a/db/routines/vn/procedures/zone_getEvents.sql b/db/routines/vn/procedures/zone_getEvents.sql
index 53e065083..ce85d1862 100644
--- a/db/routines/vn/procedures/zone_getEvents.sql
+++ b/db/routines/vn/procedures/zone_getEvents.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getEvents`(
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getEvents`(
vGeoFk INT,
vAgencyModeFk INT)
BEGIN
diff --git a/db/routines/vn/procedures/zone_getFromGeo.sql b/db/routines/vn/procedures/zone_getFromGeo.sql
index fe6be86a7..6ccb8b570 100644
--- a/db/routines/vn/procedures/zone_getFromGeo.sql
+++ b/db/routines/vn/procedures/zone_getFromGeo.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getFromGeo`(vGeoFk INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getFromGeo`(vGeoFk INT)
BEGIN
/**
* Returns all zones which have the passed geo included.
diff --git a/db/routines/vn/procedures/zone_getLanded.sql b/db/routines/vn/procedures/zone_getLanded.sql
index b75f409b9..1d6cdcc3f 100644
--- a/db/routines/vn/procedures/zone_getLanded.sql
+++ b/db/routines/vn/procedures/zone_getLanded.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getLanded`(vShipped DATE, vAddressFk INT, vAgencyModeFk INT, vWarehouseFk INT, vShowExpiredZones BOOLEAN)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getLanded`(vShipped DATE, vAddressFk INT, vAgencyModeFk INT, vWarehouseFk INT, vShowExpiredZones BOOLEAN)
BEGIN
/**
* Devuelve una tabla temporal con el dia de recepcion para vShipped.
diff --git a/db/routines/vn/procedures/zone_getLeaves.sql b/db/routines/vn/procedures/zone_getLeaves.sql
index d1e66267e..51ab487ed 100644
--- a/db/routines/vn/procedures/zone_getLeaves.sql
+++ b/db/routines/vn/procedures/zone_getLeaves.sql
@@ -1,10 +1,10 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getLeaves`(
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getLeaves`(
vSelf INT,
vParentFk INT,
vSearch VARCHAR(255),
vHasInsert BOOL
-)
+)
BEGIN
/**
* Devuelve las ubicaciones incluidas en la ruta y que sean hijos de parentFk.
@@ -119,5 +119,5 @@ BEGIN
END IF;
DROP TEMPORARY TABLE tNodes, tZones;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/zone_getOptionsForLanding.sql b/db/routines/vn/procedures/zone_getOptionsForLanding.sql
index 1c12e8c88..80ccf7ed1 100644
--- a/db/routines/vn/procedures/zone_getOptionsForLanding.sql
+++ b/db/routines/vn/procedures/zone_getOptionsForLanding.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getOptionsForLanding`(vLanded DATE, vShowExpiredZones BOOLEAN)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getOptionsForLanding`(vLanded DATE, vShowExpiredZones BOOLEAN)
BEGIN
/**
* Gets computed options for the passed zones and delivery date.
diff --git a/db/routines/vn/procedures/zone_getOptionsForShipment.sql b/db/routines/vn/procedures/zone_getOptionsForShipment.sql
index ec7824303..fa48b0b0f 100644
--- a/db/routines/vn/procedures/zone_getOptionsForShipment.sql
+++ b/db/routines/vn/procedures/zone_getOptionsForShipment.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getOptionsForShipment`(vShipped DATE, vShowExpiredZones BOOLEAN)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getOptionsForShipment`(vShipped DATE, vShowExpiredZones BOOLEAN)
BEGIN
/**
* Gets computed options for the passed zones and shipping date.
diff --git a/db/routines/vn/procedures/zone_getPostalCode.sql b/db/routines/vn/procedures/zone_getPostalCode.sql
index 920ad3171..b768b6e12 100644
--- a/db/routines/vn/procedures/zone_getPostalCode.sql
+++ b/db/routines/vn/procedures/zone_getPostalCode.sql
@@ -1,5 +1,5 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getPostalCode`(vSelf INT)
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getPostalCode`(vSelf INT)
BEGIN
/**
* Devuelve los códigos postales incluidos en una zona
@@ -42,5 +42,5 @@ BEGIN
DELETE FROM tmp.zoneNodes
WHERE sons > 0;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/zone_getShipped.sql b/db/routines/vn/procedures/zone_getShipped.sql
index 8d28c9062..924883b72 100644
--- a/db/routines/vn/procedures/zone_getShipped.sql
+++ b/db/routines/vn/procedures/zone_getShipped.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getShipped`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT, vShowExpiredZones BOOLEAN)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getShipped`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT, vShowExpiredZones BOOLEAN)
BEGIN
/**
* Devuelve la mínima fecha de envío para cada warehouse
diff --git a/db/routines/vn/procedures/zone_getState.sql b/db/routines/vn/procedures/zone_getState.sql
index aa61d08a2..1678be87d 100644
--- a/db/routines/vn/procedures/zone_getState.sql
+++ b/db/routines/vn/procedures/zone_getState.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getState`(vDated DATE)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getState`(vDated DATE)
BEGIN
/**
* Devuelve las zonas y el estado para la fecha solicitada
diff --git a/db/routines/vn/procedures/zone_getWarehouse.sql b/db/routines/vn/procedures/zone_getWarehouse.sql
index b6915a302..aeeba2867 100644
--- a/db/routines/vn/procedures/zone_getWarehouse.sql
+++ b/db/routines/vn/procedures/zone_getWarehouse.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getWarehouse`(vAddress INT, vLanded DATE, vWarehouse INT)
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_getWarehouse`(vAddress INT, vLanded DATE, vWarehouse INT)
BEGIN
/**
* Devuelve el listado de agencias disponibles para la fecha,
diff --git a/db/routines/vn/procedures/zone_upcomingDeliveries.sql b/db/routines/vn/procedures/zone_upcomingDeliveries.sql
index 96c4136ae..0c3713175 100644
--- a/db/routines/vn/procedures/zone_upcomingDeliveries.sql
+++ b/db/routines/vn/procedures/zone_upcomingDeliveries.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_upcomingDeliveries`()
+CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`zone_upcomingDeliveries`()
BEGIN
DECLARE vForwardDays INT;
diff --git a/db/routines/vn/triggers/XDiario_beforeInsert.sql b/db/routines/vn/triggers/XDiario_beforeInsert.sql
index bc89e221f..81f45ef56 100644
--- a/db/routines/vn/triggers/XDiario_beforeInsert.sql
+++ b/db/routines/vn/triggers/XDiario_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`XDiario_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`XDiario_beforeInsert`
BEFORE INSERT ON `XDiario`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/XDiario_beforeUpdate.sql b/db/routines/vn/triggers/XDiario_beforeUpdate.sql
index 33787c8f1..1653da4a4 100644
--- a/db/routines/vn/triggers/XDiario_beforeUpdate.sql
+++ b/db/routines/vn/triggers/XDiario_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`XDiario_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`XDiario_beforeUpdate`
BEFORE UPDATE ON `XDiario`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/accountReconciliation_beforeInsert.sql b/db/routines/vn/triggers/accountReconciliation_beforeInsert.sql
index 4fedd62b8..f37084329 100644
--- a/db/routines/vn/triggers/accountReconciliation_beforeInsert.sql
+++ b/db/routines/vn/triggers/accountReconciliation_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`accountReconciliation_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`accountReconciliation_beforeInsert`
BEFORE INSERT ON `accountReconciliation`
FOR EACH ROW
diff --git a/db/routines/vn/triggers/address_afterDelete.sql b/db/routines/vn/triggers/address_afterDelete.sql
index d4195d48d..92326c302 100644
--- a/db/routines/vn/triggers/address_afterDelete.sql
+++ b/db/routines/vn/triggers/address_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`address_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`address_afterDelete`
AFTER DELETE ON `address`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/address_afterInsert.sql b/db/routines/vn/triggers/address_afterInsert.sql
index 318fd3958..e97658311 100644
--- a/db/routines/vn/triggers/address_afterInsert.sql
+++ b/db/routines/vn/triggers/address_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`address_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`address_afterInsert`
BEFORE INSERT ON `address`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/address_afterUpdate.sql b/db/routines/vn/triggers/address_afterUpdate.sql
index ab5e03882..a4e3e51e0 100644
--- a/db/routines/vn/triggers/address_afterUpdate.sql
+++ b/db/routines/vn/triggers/address_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`address_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`address_afterUpdate`
AFTER UPDATE ON `address`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/address_beforeInsert.sql b/db/routines/vn/triggers/address_beforeInsert.sql
index 2ef582499..56ef7aa51 100644
--- a/db/routines/vn/triggers/address_beforeInsert.sql
+++ b/db/routines/vn/triggers/address_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`address_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`address_beforeInsert`
BEFORE INSERT ON `address`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/address_beforeUpdate.sql b/db/routines/vn/triggers/address_beforeUpdate.sql
index 8922105e7..35887912c 100644
--- a/db/routines/vn/triggers/address_beforeUpdate.sql
+++ b/db/routines/vn/triggers/address_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`address_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`address_beforeUpdate`
BEFORE UPDATE ON `address`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/agency_afterInsert.sql b/db/routines/vn/triggers/agency_afterInsert.sql
index 35670538b..85bde9bb5 100644
--- a/db/routines/vn/triggers/agency_afterInsert.sql
+++ b/db/routines/vn/triggers/agency_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`agency_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`agency_afterInsert`
AFTER INSERT ON `agency`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/agency_beforeInsert.sql b/db/routines/vn/triggers/agency_beforeInsert.sql
index 8ff3958e1..b08b7b995 100644
--- a/db/routines/vn/triggers/agency_beforeInsert.sql
+++ b/db/routines/vn/triggers/agency_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`agency_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`agency_beforeInsert`
BEFORE INSERT ON `agency`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/autonomy_afterDelete.sql b/db/routines/vn/triggers/autonomy_afterDelete.sql
index f278ccdea..3ff27c3dd 100644
--- a/db/routines/vn/triggers/autonomy_afterDelete.sql
+++ b/db/routines/vn/triggers/autonomy_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`autonomy_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`autonomy_afterDelete`
AFTER DELETE ON `autonomy`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/autonomy_beforeInsert.sql b/db/routines/vn/triggers/autonomy_beforeInsert.sql
index 3a6448b81..cdceba0b9 100644
--- a/db/routines/vn/triggers/autonomy_beforeInsert.sql
+++ b/db/routines/vn/triggers/autonomy_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`autonomy_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`autonomy_beforeInsert`
BEFORE INSERT ON `autonomy`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/autonomy_beforeUpdate.sql b/db/routines/vn/triggers/autonomy_beforeUpdate.sql
index a2c9a2a11..7a8b1c838 100644
--- a/db/routines/vn/triggers/autonomy_beforeUpdate.sql
+++ b/db/routines/vn/triggers/autonomy_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`autonomy_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`autonomy_beforeUpdate`
BEFORE UPDATE ON `autonomy`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/awbInvoiceIn_afterDelete.sql b/db/routines/vn/triggers/awbInvoiceIn_afterDelete.sql
index fd7f4c6e7..d36f6b4f5 100644
--- a/db/routines/vn/triggers/awbInvoiceIn_afterDelete.sql
+++ b/db/routines/vn/triggers/awbInvoiceIn_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`awbInvoiceIn_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`awbInvoiceIn_afterDelete`
AFTER DELETE ON `awbInvoiceIn`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/awb_beforeInsert.sql b/db/routines/vn/triggers/awb_beforeInsert.sql
index 8dc216024..e632ca858 100644
--- a/db/routines/vn/triggers/awb_beforeInsert.sql
+++ b/db/routines/vn/triggers/awb_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`awb_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`awb_beforeInsert`
BEFORE INSERT ON `awb`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/bankEntity_beforeInsert.sql b/db/routines/vn/triggers/bankEntity_beforeInsert.sql
index 6c1ce78a7..b18af3d15 100644
--- a/db/routines/vn/triggers/bankEntity_beforeInsert.sql
+++ b/db/routines/vn/triggers/bankEntity_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`bankEntity_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`bankEntity_beforeInsert`
BEFORE INSERT ON `bankEntity`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/bankEntity_beforeUpdate.sql b/db/routines/vn/triggers/bankEntity_beforeUpdate.sql
index 5bea154a2..bd3c746c1 100644
--- a/db/routines/vn/triggers/bankEntity_beforeUpdate.sql
+++ b/db/routines/vn/triggers/bankEntity_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`bankEntity_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`bankEntity_beforeUpdate`
BEFORE UPDATE ON `bankEntity`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/budgetNotes_beforeInsert.sql b/db/routines/vn/triggers/budgetNotes_beforeInsert.sql
index 6ea5ad5eb..aa4ee1f9e 100644
--- a/db/routines/vn/triggers/budgetNotes_beforeInsert.sql
+++ b/db/routines/vn/triggers/budgetNotes_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`budgetNotes_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`budgetNotes_beforeInsert`
BEFORE INSERT ON `budgetNotes`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/business_afterDelete.sql b/db/routines/vn/triggers/business_afterDelete.sql
index 9b897b4e9..9fac90e21 100644
--- a/db/routines/vn/triggers/business_afterDelete.sql
+++ b/db/routines/vn/triggers/business_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`business_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`business_afterDelete`
AFTER DELETE ON `business`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/business_afterInsert.sql b/db/routines/vn/triggers/business_afterInsert.sql
index 2949eede8..7a560d380 100644
--- a/db/routines/vn/triggers/business_afterInsert.sql
+++ b/db/routines/vn/triggers/business_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`business_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`business_afterInsert`
AFTER INSERT ON `business`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/business_afterUpdate.sql b/db/routines/vn/triggers/business_afterUpdate.sql
index 95746a30d..888308b9a 100644
--- a/db/routines/vn/triggers/business_afterUpdate.sql
+++ b/db/routines/vn/triggers/business_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`business_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`business_afterUpdate`
AFTER UPDATE ON `business`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/business_beforeInsert.sql b/db/routines/vn/triggers/business_beforeInsert.sql
index 1f136c1e8..36156d023 100644
--- a/db/routines/vn/triggers/business_beforeInsert.sql
+++ b/db/routines/vn/triggers/business_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`business_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`business_beforeInsert`
BEFORE INSERT ON `business`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/business_beforeUpdate.sql b/db/routines/vn/triggers/business_beforeUpdate.sql
index 7dc69bc75..f0c09edc2 100644
--- a/db/routines/vn/triggers/business_beforeUpdate.sql
+++ b/db/routines/vn/triggers/business_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`business_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`business_beforeUpdate`
BEFORE UPDATE ON `business`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/buy_afterDelete.sql b/db/routines/vn/triggers/buy_afterDelete.sql
index 5daaefa33..26df4655f 100644
--- a/db/routines/vn/triggers/buy_afterDelete.sql
+++ b/db/routines/vn/triggers/buy_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`buy_afterDelete`
AFTER DELETE ON `buy`
FOR EACH ROW
trig: BEGIN
diff --git a/db/routines/vn/triggers/buy_afterInsert.sql b/db/routines/vn/triggers/buy_afterInsert.sql
index b39842d35..7a6608ada 100644
--- a/db/routines/vn/triggers/buy_afterInsert.sql
+++ b/db/routines/vn/triggers/buy_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`buy_afterInsert`
AFTER INSERT ON `buy`
FOR EACH ROW
trig: BEGIN
diff --git a/db/routines/vn/triggers/buy_afterUpdate.sql b/db/routines/vn/triggers/buy_afterUpdate.sql
index fc7ca152d..b82ba1831 100644
--- a/db/routines/vn/triggers/buy_afterUpdate.sql
+++ b/db/routines/vn/triggers/buy_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`buy_afterUpdate`
AFTER UPDATE ON `buy`
FOR EACH ROW
trig: BEGIN
diff --git a/db/routines/vn/triggers/buy_beforeDelete.sql b/db/routines/vn/triggers/buy_beforeDelete.sql
index 1bbeadec9..82b7e51d6 100644
--- a/db/routines/vn/triggers/buy_beforeDelete.sql
+++ b/db/routines/vn/triggers/buy_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`buy_beforeDelete`
BEFORE DELETE ON `buy`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/buy_beforeInsert.sql b/db/routines/vn/triggers/buy_beforeInsert.sql
index 39befcaf1..9c1059266 100644
--- a/db/routines/vn/triggers/buy_beforeInsert.sql
+++ b/db/routines/vn/triggers/buy_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`buy_beforeInsert`
BEFORE INSERT ON `buy`
FOR EACH ROW
trig: BEGIN
diff --git a/db/routines/vn/triggers/buy_beforeUpdate.sql b/db/routines/vn/triggers/buy_beforeUpdate.sql
index 1e2faecdc..24246329b 100644
--- a/db/routines/vn/triggers/buy_beforeUpdate.sql
+++ b/db/routines/vn/triggers/buy_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`buy_beforeUpdate`
BEFORE UPDATE ON `buy`
FOR EACH ROW
trig:BEGIN
@@ -69,6 +69,10 @@ trig:BEGIN
IF NOT NEW.printedStickers <=> OLD.printedStickers THEN
CALL util.throw("Stickers cannot be modified if they are inventory");
END IF;
+
+ IF OLD.entryFk <> NEW.entryFk THEN
+ CALL util.throw("Cannot transfer lines to inventory entry");
+ END IF;
END IF;
IF NEW.quantity < 0 THEN
diff --git a/db/routines/vn/triggers/calendar_afterDelete.sql b/db/routines/vn/triggers/calendar_afterDelete.sql
index 5d0114ea8..d67710a67 100644
--- a/db/routines/vn/triggers/calendar_afterDelete.sql
+++ b/db/routines/vn/triggers/calendar_afterDelete.sql
@@ -1,12 +1,12 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`calendar_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`calendar_afterDelete`
AFTER DELETE ON `calendar`
FOR EACH ROW
-BEGIN
- INSERT INTO workerLog
- SET `action` = 'delete',
- `changedModel` = 'Calendar',
- `changedModelId` = OLD.id,
- `userFk` = account.myUser_getId();
+BEGIN
+ INSERT INTO workerLog
+ SET `action` = 'delete',
+ `changedModel` = 'Calendar',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/calendar_beforeInsert.sql b/db/routines/vn/triggers/calendar_beforeInsert.sql
index 3e265a099..6351f5391 100644
--- a/db/routines/vn/triggers/calendar_beforeInsert.sql
+++ b/db/routines/vn/triggers/calendar_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`calendar_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`calendar_beforeInsert`
BEFORE INSERT ON `calendar`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/calendar_beforeUpdate.sql b/db/routines/vn/triggers/calendar_beforeUpdate.sql
index f015dc29a..73618aa2a 100644
--- a/db/routines/vn/triggers/calendar_beforeUpdate.sql
+++ b/db/routines/vn/triggers/calendar_beforeUpdate.sql
@@ -1,8 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`calendar_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`calendar_beforeUpdate`
BEFORE UPDATE ON `calendar`
FOR EACH ROW
-BEGIN
- SET NEW.editorFk = account.myUser_getId();
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/claimBeginning_afterDelete.sql b/db/routines/vn/triggers/claimBeginning_afterDelete.sql
index 5e12d9feb..c61abeeb2 100644
--- a/db/routines/vn/triggers/claimBeginning_afterDelete.sql
+++ b/db/routines/vn/triggers/claimBeginning_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimBeginning_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimBeginning_afterDelete`
AFTER DELETE ON `claimBeginning`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimBeginning_beforeInsert.sql b/db/routines/vn/triggers/claimBeginning_beforeInsert.sql
index f6ad1672b..aa67bbdb3 100644
--- a/db/routines/vn/triggers/claimBeginning_beforeInsert.sql
+++ b/db/routines/vn/triggers/claimBeginning_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimBeginning_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimBeginning_beforeInsert`
BEFORE INSERT ON `claimBeginning`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimBeginning_beforeUpdate.sql b/db/routines/vn/triggers/claimBeginning_beforeUpdate.sql
index 500d08cb6..b4c06a2d7 100644
--- a/db/routines/vn/triggers/claimBeginning_beforeUpdate.sql
+++ b/db/routines/vn/triggers/claimBeginning_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimBeginning_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimBeginning_beforeUpdate`
BEFORE UPDATE ON `claimBeginning`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimDevelopment_afterDelete.sql b/db/routines/vn/triggers/claimDevelopment_afterDelete.sql
index 90b1e89eb..af14b8817 100644
--- a/db/routines/vn/triggers/claimDevelopment_afterDelete.sql
+++ b/db/routines/vn/triggers/claimDevelopment_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimDevelopment_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimDevelopment_afterDelete`
AFTER DELETE ON `claimDevelopment`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimDevelopment_beforeInsert.sql b/db/routines/vn/triggers/claimDevelopment_beforeInsert.sql
index 15ec36138..5d1365a43 100644
--- a/db/routines/vn/triggers/claimDevelopment_beforeInsert.sql
+++ b/db/routines/vn/triggers/claimDevelopment_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimDevelopment_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimDevelopment_beforeInsert`
BEFORE INSERT ON `claimDevelopment`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimDevelopment_beforeUpdate.sql b/db/routines/vn/triggers/claimDevelopment_beforeUpdate.sql
index b0727adb3..c51c7c6d8 100644
--- a/db/routines/vn/triggers/claimDevelopment_beforeUpdate.sql
+++ b/db/routines/vn/triggers/claimDevelopment_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimDevelopment_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimDevelopment_beforeUpdate`
BEFORE UPDATE ON `claimDevelopment`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimDms_afterDelete.sql b/db/routines/vn/triggers/claimDms_afterDelete.sql
index 53bf819e2..1a3630695 100644
--- a/db/routines/vn/triggers/claimDms_afterDelete.sql
+++ b/db/routines/vn/triggers/claimDms_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimDms_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimDms_afterDelete`
AFTER DELETE ON `claimDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimDms_beforeInsert.sql b/db/routines/vn/triggers/claimDms_beforeInsert.sql
index bb84e7a81..dfaffda36 100644
--- a/db/routines/vn/triggers/claimDms_beforeInsert.sql
+++ b/db/routines/vn/triggers/claimDms_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimDms_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimDms_beforeInsert`
BEFORE INSERT ON `claimDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimDms_beforeUpdate.sql b/db/routines/vn/triggers/claimDms_beforeUpdate.sql
index 8ffab268e..420b4d999 100644
--- a/db/routines/vn/triggers/claimDms_beforeUpdate.sql
+++ b/db/routines/vn/triggers/claimDms_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimDms_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimDms_beforeUpdate`
BEFORE UPDATE ON `claimDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimEnd_afterDelete.sql b/db/routines/vn/triggers/claimEnd_afterDelete.sql
index dee80fc77..b63db488f 100644
--- a/db/routines/vn/triggers/claimEnd_afterDelete.sql
+++ b/db/routines/vn/triggers/claimEnd_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimEnd_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimEnd_afterDelete`
AFTER DELETE ON `claimEnd`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimEnd_beforeInsert.sql b/db/routines/vn/triggers/claimEnd_beforeInsert.sql
index beb66c297..113fb8179 100644
--- a/db/routines/vn/triggers/claimEnd_beforeInsert.sql
+++ b/db/routines/vn/triggers/claimEnd_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimEnd_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimEnd_beforeInsert`
BEFORE INSERT ON `claimEnd`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimEnd_beforeUpdate.sql b/db/routines/vn/triggers/claimEnd_beforeUpdate.sql
index 7e91996dd..74d79c240 100644
--- a/db/routines/vn/triggers/claimEnd_beforeUpdate.sql
+++ b/db/routines/vn/triggers/claimEnd_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimEnd_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimEnd_beforeUpdate`
BEFORE UPDATE ON `claimEnd`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimObservation_afterDelete.sql b/db/routines/vn/triggers/claimObservation_afterDelete.sql
index b61368310..30899b2c5 100644
--- a/db/routines/vn/triggers/claimObservation_afterDelete.sql
+++ b/db/routines/vn/triggers/claimObservation_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimObservation_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimObservation_afterDelete`
AFTER DELETE ON `claimObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimObservation_beforeInsert.sql b/db/routines/vn/triggers/claimObservation_beforeInsert.sql
index e6cf4a42a..b510f5c7a 100644
--- a/db/routines/vn/triggers/claimObservation_beforeInsert.sql
+++ b/db/routines/vn/triggers/claimObservation_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimObservation_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimObservation_beforeInsert`
BEFORE INSERT ON `claimObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimObservation_beforeUpdate.sql b/db/routines/vn/triggers/claimObservation_beforeUpdate.sql
index 79008eb1b..a374856d0 100644
--- a/db/routines/vn/triggers/claimObservation_beforeUpdate.sql
+++ b/db/routines/vn/triggers/claimObservation_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimObservation_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimObservation_beforeUpdate`
BEFORE UPDATE ON `claimObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimRatio_afterInsert.sql b/db/routines/vn/triggers/claimRatio_afterInsert.sql
index ca618bb89..ff203e9ba 100644
--- a/db/routines/vn/triggers/claimRatio_afterInsert.sql
+++ b/db/routines/vn/triggers/claimRatio_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimRatio_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimRatio_afterInsert`
AFTER INSERT ON `claimRatio`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimRatio_afterUpdate.sql b/db/routines/vn/triggers/claimRatio_afterUpdate.sql
index daae7ecf0..5a3272d5c 100644
--- a/db/routines/vn/triggers/claimRatio_afterUpdate.sql
+++ b/db/routines/vn/triggers/claimRatio_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimRatio_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimRatio_afterUpdate`
AFTER UPDATE ON `claimRatio`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimState_afterDelete.sql b/db/routines/vn/triggers/claimState_afterDelete.sql
index 00c0a203d..890ef3f73 100644
--- a/db/routines/vn/triggers/claimState_afterDelete.sql
+++ b/db/routines/vn/triggers/claimState_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimState_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimState_afterDelete`
AFTER DELETE ON `claimState`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimState_beforeInsert.sql b/db/routines/vn/triggers/claimState_beforeInsert.sql
index e289e8067..fb7460c53 100644
--- a/db/routines/vn/triggers/claimState_beforeInsert.sql
+++ b/db/routines/vn/triggers/claimState_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimState_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimState_beforeInsert`
BEFORE INSERT ON `claimState`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claimState_beforeUpdate.sql b/db/routines/vn/triggers/claimState_beforeUpdate.sql
index 53c8c254b..e113d4ec8 100644
--- a/db/routines/vn/triggers/claimState_beforeUpdate.sql
+++ b/db/routines/vn/triggers/claimState_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claimState_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claimState_beforeUpdate`
BEFORE UPDATE ON `claimState`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claim_afterDelete.sql b/db/routines/vn/triggers/claim_afterDelete.sql
index bd01ad80f..57566d400 100644
--- a/db/routines/vn/triggers/claim_afterDelete.sql
+++ b/db/routines/vn/triggers/claim_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claim_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claim_afterDelete`
AFTER DELETE ON `claim`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claim_beforeInsert.sql b/db/routines/vn/triggers/claim_beforeInsert.sql
index 36f73902b..dc3ef8c7a 100644
--- a/db/routines/vn/triggers/claim_beforeInsert.sql
+++ b/db/routines/vn/triggers/claim_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claim_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claim_beforeInsert`
BEFORE INSERT ON `claim`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/claim_beforeUpdate.sql b/db/routines/vn/triggers/claim_beforeUpdate.sql
index 9dec746ad..2898a0c61 100644
--- a/db/routines/vn/triggers/claim_beforeUpdate.sql
+++ b/db/routines/vn/triggers/claim_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`claim_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`claim_beforeUpdate`
BEFORE UPDATE ON `claim`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientContact_afterDelete.sql b/db/routines/vn/triggers/clientContact_afterDelete.sql
index b138a0957..5b76d960d 100644
--- a/db/routines/vn/triggers/clientContact_afterDelete.sql
+++ b/db/routines/vn/triggers/clientContact_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientContact_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientContact_afterDelete`
AFTER DELETE ON `clientContact`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientContact_beforeInsert.sql b/db/routines/vn/triggers/clientContact_beforeInsert.sql
index 7ddf4d7dd..fd810e140 100644
--- a/db/routines/vn/triggers/clientContact_beforeInsert.sql
+++ b/db/routines/vn/triggers/clientContact_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientContact_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientContact_beforeInsert`
BEFORE INSERT ON `clientContact`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientCredit_afterInsert.sql b/db/routines/vn/triggers/clientCredit_afterInsert.sql
index 440f24865..76ee34d58 100644
--- a/db/routines/vn/triggers/clientCredit_afterInsert.sql
+++ b/db/routines/vn/triggers/clientCredit_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientCredit_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientCredit_afterInsert`
AFTER INSERT ON `clientCredit`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientDms_afterDelete.sql b/db/routines/vn/triggers/clientDms_afterDelete.sql
index 9b6fb4876..c36632d5c 100644
--- a/db/routines/vn/triggers/clientDms_afterDelete.sql
+++ b/db/routines/vn/triggers/clientDms_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientDms_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientDms_afterDelete`
AFTER DELETE ON `clientDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientDms_beforeInsert.sql b/db/routines/vn/triggers/clientDms_beforeInsert.sql
index 011cc6e96..42181d5c6 100644
--- a/db/routines/vn/triggers/clientDms_beforeInsert.sql
+++ b/db/routines/vn/triggers/clientDms_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientDms_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientDms_beforeInsert`
BEFORE INSERT ON `clientDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientDms_beforeUpdate.sql b/db/routines/vn/triggers/clientDms_beforeUpdate.sql
index 56eaec7eb..7138caa5f 100644
--- a/db/routines/vn/triggers/clientDms_beforeUpdate.sql
+++ b/db/routines/vn/triggers/clientDms_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientDms_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientDms_beforeUpdate`
BEFORE UPDATE ON `clientDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientObservation_afterDelete.sql b/db/routines/vn/triggers/clientObservation_afterDelete.sql
index c93564aa5..f855dccf8 100644
--- a/db/routines/vn/triggers/clientObservation_afterDelete.sql
+++ b/db/routines/vn/triggers/clientObservation_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientObservation_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientObservation_afterDelete`
AFTER DELETE ON `clientObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientObservation_beforeInsert.sql b/db/routines/vn/triggers/clientObservation_beforeInsert.sql
index 684873031..9767d0e58 100644
--- a/db/routines/vn/triggers/clientObservation_beforeInsert.sql
+++ b/db/routines/vn/triggers/clientObservation_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientObservation_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientObservation_beforeInsert`
BEFORE INSERT ON `clientObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientObservation_beforeUpdate.sql b/db/routines/vn/triggers/clientObservation_beforeUpdate.sql
index 6e0b63794..d1cb50e80 100644
--- a/db/routines/vn/triggers/clientObservation_beforeUpdate.sql
+++ b/db/routines/vn/triggers/clientObservation_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientObservation_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientObservation_beforeUpdate`
BEFORE UPDATE ON `clientObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientSample_afterDelete.sql b/db/routines/vn/triggers/clientSample_afterDelete.sql
index 1ac9e77be..5db0ce39e 100644
--- a/db/routines/vn/triggers/clientSample_afterDelete.sql
+++ b/db/routines/vn/triggers/clientSample_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientSample_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientSample_afterDelete`
AFTER DELETE ON `clientSample`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientSample_beforeInsert.sql b/db/routines/vn/triggers/clientSample_beforeInsert.sql
index c7fe43c9b..956013ba9 100644
--- a/db/routines/vn/triggers/clientSample_beforeInsert.sql
+++ b/db/routines/vn/triggers/clientSample_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientSample_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientSample_beforeInsert`
BEFORE INSERT ON `clientSample`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientSample_beforeUpdate.sql b/db/routines/vn/triggers/clientSample_beforeUpdate.sql
index 5c16950b5..d9c7e045f 100644
--- a/db/routines/vn/triggers/clientSample_beforeUpdate.sql
+++ b/db/routines/vn/triggers/clientSample_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientSample_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientSample_beforeUpdate`
BEFORE UPDATE ON `clientSample`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientUnpaid_beforeInsert.sql b/db/routines/vn/triggers/clientUnpaid_beforeInsert.sql
index 279a81b73..de4bf2c20 100644
--- a/db/routines/vn/triggers/clientUnpaid_beforeInsert.sql
+++ b/db/routines/vn/triggers/clientUnpaid_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientUnpaid_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientUnpaid_beforeInsert`
BEFORE INSERT ON `clientUnpaid`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/clientUnpaid_beforeUpdate.sql b/db/routines/vn/triggers/clientUnpaid_beforeUpdate.sql
index 13cac3fa7..f3dfbe356 100644
--- a/db/routines/vn/triggers/clientUnpaid_beforeUpdate.sql
+++ b/db/routines/vn/triggers/clientUnpaid_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`clientUnpaid_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`clientUnpaid_beforeUpdate`
BEFORE UPDATE ON `clientUnpaid`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/client_afterDelete.sql b/db/routines/vn/triggers/client_afterDelete.sql
index e6849ef49..c5391d89b 100644
--- a/db/routines/vn/triggers/client_afterDelete.sql
+++ b/db/routines/vn/triggers/client_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`client_afterDelete`
AFTER DELETE ON `client`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/client_afterInsert.sql b/db/routines/vn/triggers/client_afterInsert.sql
index 764d8f067..47ab3fb6f 100644
--- a/db/routines/vn/triggers/client_afterInsert.sql
+++ b/db/routines/vn/triggers/client_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`client_afterInsert`
AFTER INSERT ON `client`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/client_afterUpdate.sql b/db/routines/vn/triggers/client_afterUpdate.sql
index a2a3e48e3..eb977faa3 100644
--- a/db/routines/vn/triggers/client_afterUpdate.sql
+++ b/db/routines/vn/triggers/client_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`client_afterUpdate`
AFTER UPDATE ON `client`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/client_beforeInsert.sql b/db/routines/vn/triggers/client_beforeInsert.sql
index 75b69c7dd..45de107f1 100644
--- a/db/routines/vn/triggers/client_beforeInsert.sql
+++ b/db/routines/vn/triggers/client_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`client_beforeInsert`
BEFORE INSERT ON `client`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/client_beforeUpdate.sql b/db/routines/vn/triggers/client_beforeUpdate.sql
index 914ae5b8a..7142d6604 100644
--- a/db/routines/vn/triggers/client_beforeUpdate.sql
+++ b/db/routines/vn/triggers/client_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`client_beforeUpdate`
BEFORE UPDATE ON `client`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/cmr_beforeDelete.sql b/db/routines/vn/triggers/cmr_beforeDelete.sql
index 2cb789244..566f3a1bc 100644
--- a/db/routines/vn/triggers/cmr_beforeDelete.sql
+++ b/db/routines/vn/triggers/cmr_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`cmr_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`cmr_beforeDelete`
BEFORE DELETE ON `cmr`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/collectionColors_beforeInsert.sql b/db/routines/vn/triggers/collectionColors_beforeInsert.sql
index 254529932..96a7d8aa1 100644
--- a/db/routines/vn/triggers/collectionColors_beforeInsert.sql
+++ b/db/routines/vn/triggers/collectionColors_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`collectionColors_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`collectionColors_beforeInsert`
BEFORE INSERT ON `collectionColors`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/collectionColors_beforeUpdate.sql b/db/routines/vn/triggers/collectionColors_beforeUpdate.sql
index 1ee83ab74..c46460841 100644
--- a/db/routines/vn/triggers/collectionColors_beforeUpdate.sql
+++ b/db/routines/vn/triggers/collectionColors_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`collectionColors_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`collectionColors_beforeUpdate`
BEFORE UPDATE ON `collectionColors`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/collectionVolumetry_afterDelete.sql b/db/routines/vn/triggers/collectionVolumetry_afterDelete.sql
index 53c6340ee..e5461a221 100644
--- a/db/routines/vn/triggers/collectionVolumetry_afterDelete.sql
+++ b/db/routines/vn/triggers/collectionVolumetry_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`collectionVolumetry_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`collectionVolumetry_afterDelete`
AFTER DELETE ON `collectionVolumetry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/collectionVolumetry_afterInsert.sql b/db/routines/vn/triggers/collectionVolumetry_afterInsert.sql
index 9f061742c..1cc9d377d 100644
--- a/db/routines/vn/triggers/collectionVolumetry_afterInsert.sql
+++ b/db/routines/vn/triggers/collectionVolumetry_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`collectionVolumetry_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`collectionVolumetry_afterInsert`
AFTER INSERT ON `collectionVolumetry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/collectionVolumetry_afterUpdate.sql b/db/routines/vn/triggers/collectionVolumetry_afterUpdate.sql
index 6dc4311c5..745cddfbe 100644
--- a/db/routines/vn/triggers/collectionVolumetry_afterUpdate.sql
+++ b/db/routines/vn/triggers/collectionVolumetry_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`collectionVolumetry_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`collectionVolumetry_afterUpdate`
AFTER UPDATE ON `collectionVolumetry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/collection_beforeUpdate.sql b/db/routines/vn/triggers/collection_beforeUpdate.sql
index 40a0b7bed..d6b2f6b8a 100644
--- a/db/routines/vn/triggers/collection_beforeUpdate.sql
+++ b/db/routines/vn/triggers/collection_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`collection_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`collection_beforeUpdate`
BEFORE UPDATE ON `collection`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/country_afterDelete.sql b/db/routines/vn/triggers/country_afterDelete.sql
index 30fbfc817..8be887bb8 100644
--- a/db/routines/vn/triggers/country_afterDelete.sql
+++ b/db/routines/vn/triggers/country_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`country_afterDelete`
AFTER DELETE ON `country`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/country_afterInsert.sql b/db/routines/vn/triggers/country_afterInsert.sql
index 69294a9d5..af9626b9c 100644
--- a/db/routines/vn/triggers/country_afterInsert.sql
+++ b/db/routines/vn/triggers/country_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`country_afterInsert`
AFTER INSERT ON `country`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/country_afterUpdate.sql b/db/routines/vn/triggers/country_afterUpdate.sql
index a38994735..95d823c60 100644
--- a/db/routines/vn/triggers/country_afterUpdate.sql
+++ b/db/routines/vn/triggers/country_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`country_afterUpdate`
AFTER UPDATE ON `country`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/country_beforeInsert.sql b/db/routines/vn/triggers/country_beforeInsert.sql
index 5ba5b832d..eb43cf989 100644
--- a/db/routines/vn/triggers/country_beforeInsert.sql
+++ b/db/routines/vn/triggers/country_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`country_beforeInsert`
BEFORE INSERT ON `country`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/country_beforeUpdate.sql b/db/routines/vn/triggers/country_beforeUpdate.sql
index 31de99f34..f63672788 100644
--- a/db/routines/vn/triggers/country_beforeUpdate.sql
+++ b/db/routines/vn/triggers/country_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`country_beforeUpdate`
BEFORE UPDATE ON `country`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/creditClassification_beforeUpdate.sql b/db/routines/vn/triggers/creditClassification_beforeUpdate.sql
index 410ce2bc4..e586e7685 100644
--- a/db/routines/vn/triggers/creditClassification_beforeUpdate.sql
+++ b/db/routines/vn/triggers/creditClassification_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`creditClassification_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`creditClassification_beforeUpdate`
BEFORE UPDATE ON `creditClassification`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/creditInsurance_afterInsert.sql b/db/routines/vn/triggers/creditInsurance_afterInsert.sql
index 22f94854b..c865f31a4 100644
--- a/db/routines/vn/triggers/creditInsurance_afterInsert.sql
+++ b/db/routines/vn/triggers/creditInsurance_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`creditInsurance_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`creditInsurance_afterInsert`
AFTER INSERT ON `creditInsurance`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/creditInsurance_beforeInsert.sql b/db/routines/vn/triggers/creditInsurance_beforeInsert.sql
index 51ab223b1..8e036d373 100644
--- a/db/routines/vn/triggers/creditInsurance_beforeInsert.sql
+++ b/db/routines/vn/triggers/creditInsurance_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`creditInsurance_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`creditInsurance_beforeInsert`
BEFORE INSERT ON `creditInsurance`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/delivery_beforeInsert.sql b/db/routines/vn/triggers/delivery_beforeInsert.sql
index eb4a6f21a..7996e0aef 100644
--- a/db/routines/vn/triggers/delivery_beforeInsert.sql
+++ b/db/routines/vn/triggers/delivery_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`delivery_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`delivery_beforeInsert`
BEFORE INSERT ON `delivery`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/delivery_beforeUpdate.sql b/db/routines/vn/triggers/delivery_beforeUpdate.sql
index 6206d4722..4ddb932e9 100644
--- a/db/routines/vn/triggers/delivery_beforeUpdate.sql
+++ b/db/routines/vn/triggers/delivery_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`delivery_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`delivery_beforeUpdate`
BEFORE UPDATE ON `delivery`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/department_afterDelete.sql b/db/routines/vn/triggers/department_afterDelete.sql
index 311847556..09fcf3ea1 100644
--- a/db/routines/vn/triggers/department_afterDelete.sql
+++ b/db/routines/vn/triggers/department_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`department_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`department_afterDelete`
AFTER DELETE ON `department`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/department_afterUpdate.sql b/db/routines/vn/triggers/department_afterUpdate.sql
index a425e1809..559fad9a3 100644
--- a/db/routines/vn/triggers/department_afterUpdate.sql
+++ b/db/routines/vn/triggers/department_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`department_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`department_afterUpdate`
AFTER UPDATE ON `department`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/department_beforeDelete.sql b/db/routines/vn/triggers/department_beforeDelete.sql
index 6eaa5b42e..307af6b72 100644
--- a/db/routines/vn/triggers/department_beforeDelete.sql
+++ b/db/routines/vn/triggers/department_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`department_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`department_beforeDelete`
BEFORE DELETE ON `department`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/department_beforeInsert.sql b/db/routines/vn/triggers/department_beforeInsert.sql
index 6bd6617ae..8fa89fad6 100644
--- a/db/routines/vn/triggers/department_beforeInsert.sql
+++ b/db/routines/vn/triggers/department_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`department_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`department_beforeInsert`
BEFORE INSERT ON `department`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionModels_beforeInsert.sql b/db/routines/vn/triggers/deviceProductionModels_beforeInsert.sql
index 3994520b7..f39ad28db 100644
--- a/db/routines/vn/triggers/deviceProductionModels_beforeInsert.sql
+++ b/db/routines/vn/triggers/deviceProductionModels_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionModels_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionModels_beforeInsert`
BEFORE INSERT ON `deviceProductionModels`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionModels_beforeUpdate.sql b/db/routines/vn/triggers/deviceProductionModels_beforeUpdate.sql
index 01c8d347e..ea43db8a0 100644
--- a/db/routines/vn/triggers/deviceProductionModels_beforeUpdate.sql
+++ b/db/routines/vn/triggers/deviceProductionModels_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionModels_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionModels_beforeUpdate`
BEFORE UPDATE ON `deviceProductionModels`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionState_beforeInsert.sql b/db/routines/vn/triggers/deviceProductionState_beforeInsert.sql
index 1a2a66e10..6fb4bd67a 100644
--- a/db/routines/vn/triggers/deviceProductionState_beforeInsert.sql
+++ b/db/routines/vn/triggers/deviceProductionState_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionState_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionState_beforeInsert`
BEFORE INSERT ON `deviceProductionState`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionState_beforeUpdate.sql b/db/routines/vn/triggers/deviceProductionState_beforeUpdate.sql
index e8172fb42..56a1d2aad 100644
--- a/db/routines/vn/triggers/deviceProductionState_beforeUpdate.sql
+++ b/db/routines/vn/triggers/deviceProductionState_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionState_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionState_beforeUpdate`
BEFORE UPDATE ON `deviceProductionState`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionUser_afterDelete.sql b/db/routines/vn/triggers/deviceProductionUser_afterDelete.sql
index a95170e9a..4e8d7ddf2 100644
--- a/db/routines/vn/triggers/deviceProductionUser_afterDelete.sql
+++ b/db/routines/vn/triggers/deviceProductionUser_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionUser_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionUser_afterDelete`
AFTER DELETE ON `deviceProductionUser`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionUser_afterInsert.sql b/db/routines/vn/triggers/deviceProductionUser_afterInsert.sql
index 3c8a9a51d..f33241d3b 100644
--- a/db/routines/vn/triggers/deviceProductionUser_afterInsert.sql
+++ b/db/routines/vn/triggers/deviceProductionUser_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionUser_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionUser_afterInsert`
AFTER INSERT ON `deviceProductionUser`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionUser_beforeInsert.sql b/db/routines/vn/triggers/deviceProductionUser_beforeInsert.sql
index b392cf5a1..ab9e43cd4 100644
--- a/db/routines/vn/triggers/deviceProductionUser_beforeInsert.sql
+++ b/db/routines/vn/triggers/deviceProductionUser_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionUser_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionUser_beforeInsert`
BEFORE INSERT ON `deviceProductionUser`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql b/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql
index 7318bd99b..85846fb84 100644
--- a/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql
+++ b/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionUser_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProductionUser_beforeUpdate`
BEFORE UPDATE ON `deviceProductionUser`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProduction_afterDelete.sql b/db/routines/vn/triggers/deviceProduction_afterDelete.sql
index af2b640e5..b7cbac9ff 100644
--- a/db/routines/vn/triggers/deviceProduction_afterDelete.sql
+++ b/db/routines/vn/triggers/deviceProduction_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProduction_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProduction_afterDelete`
AFTER DELETE ON `deviceProduction`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProduction_beforeInsert.sql b/db/routines/vn/triggers/deviceProduction_beforeInsert.sql
index 66b5c2aef..022a1fbb9 100644
--- a/db/routines/vn/triggers/deviceProduction_beforeInsert.sql
+++ b/db/routines/vn/triggers/deviceProduction_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProduction_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProduction_beforeInsert`
BEFORE INSERT ON `deviceProduction`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/deviceProduction_beforeUpdate.sql b/db/routines/vn/triggers/deviceProduction_beforeUpdate.sql
index 9206195fe..83e26e224 100644
--- a/db/routines/vn/triggers/deviceProduction_beforeUpdate.sql
+++ b/db/routines/vn/triggers/deviceProduction_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProduction_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`deviceProduction_beforeUpdate`
BEFORE UPDATE ON `deviceProduction`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/dms_beforeDelete.sql b/db/routines/vn/triggers/dms_beforeDelete.sql
index 3bbc05ba3..603514afa 100644
--- a/db/routines/vn/triggers/dms_beforeDelete.sql
+++ b/db/routines/vn/triggers/dms_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`dms_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`dms_beforeDelete`
BEFORE DELETE ON `dms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/dms_beforeInsert.sql b/db/routines/vn/triggers/dms_beforeInsert.sql
index f7877ecb8..c7ed6bb47 100644
--- a/db/routines/vn/triggers/dms_beforeInsert.sql
+++ b/db/routines/vn/triggers/dms_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`dms_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`dms_beforeInsert`
BEFORE INSERT ON `dms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/dms_beforeUpdate.sql b/db/routines/vn/triggers/dms_beforeUpdate.sql
index c93659d45..12a640c1b 100644
--- a/db/routines/vn/triggers/dms_beforeUpdate.sql
+++ b/db/routines/vn/triggers/dms_beforeUpdate.sql
@@ -1,7 +1,7 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`dms_beforeUpdate`
- BEFORE UPDATE ON `dms`
- FOR EACH ROW
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`dms_beforeUpdate`
+ BEFORE UPDATE ON `dms`
+ FOR EACH ROW
BEGIN
DECLARE vHardCopyNumber INT;
@@ -24,5 +24,5 @@ BEGIN
SET NEW.hasFile = 0;
END IF;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/duaTax_beforeInsert.sql b/db/routines/vn/triggers/duaTax_beforeInsert.sql
index 9ca1d970d..8ce66429b 100644
--- a/db/routines/vn/triggers/duaTax_beforeInsert.sql
+++ b/db/routines/vn/triggers/duaTax_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`duaTax_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`duaTax_beforeInsert`
BEFORE INSERT ON `duaTax`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/duaTax_beforeUpdate.sql b/db/routines/vn/triggers/duaTax_beforeUpdate.sql
index dca8958a9..2d3a59985 100644
--- a/db/routines/vn/triggers/duaTax_beforeUpdate.sql
+++ b/db/routines/vn/triggers/duaTax_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`duaTax_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`duaTax_beforeUpdate`
BEFORE UPDATE ON `duaTax`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ektEntryAssign_afterInsert.sql b/db/routines/vn/triggers/ektEntryAssign_afterInsert.sql
index e42b43ca1..6df9df941 100644
--- a/db/routines/vn/triggers/ektEntryAssign_afterInsert.sql
+++ b/db/routines/vn/triggers/ektEntryAssign_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ektEntryAssign_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ektEntryAssign_afterInsert`
AFTER INSERT ON `ektEntryAssign`
FOR EACH ROW
UPDATE entry SET reference = NEW.`ref` WHERE id = NEW.entryFk$$
diff --git a/db/routines/vn/triggers/ektEntryAssign_afterUpdate.sql b/db/routines/vn/triggers/ektEntryAssign_afterUpdate.sql
index 8d2791d0f..c85d72e14 100644
--- a/db/routines/vn/triggers/ektEntryAssign_afterUpdate.sql
+++ b/db/routines/vn/triggers/ektEntryAssign_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ektEntryAssign_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ektEntryAssign_afterUpdate`
AFTER UPDATE ON `ektEntryAssign`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entryDms_afterDelete.sql b/db/routines/vn/triggers/entryDms_afterDelete.sql
index 9ae8e7058..3c32fbd26 100644
--- a/db/routines/vn/triggers/entryDms_afterDelete.sql
+++ b/db/routines/vn/triggers/entryDms_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entryDms_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entryDms_afterDelete`
AFTER DELETE ON `entryDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entryDms_beforeInsert.sql b/db/routines/vn/triggers/entryDms_beforeInsert.sql
index 4f9550f48..f0712b481 100644
--- a/db/routines/vn/triggers/entryDms_beforeInsert.sql
+++ b/db/routines/vn/triggers/entryDms_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entryDms_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entryDms_beforeInsert`
BEFORE INSERT ON `entryDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entryDms_beforeUpdate.sql b/db/routines/vn/triggers/entryDms_beforeUpdate.sql
index ecc047029..d9b548f60 100644
--- a/db/routines/vn/triggers/entryDms_beforeUpdate.sql
+++ b/db/routines/vn/triggers/entryDms_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entryDms_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entryDms_beforeUpdate`
BEFORE UPDATE ON `entryDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entryObservation_afterDelete.sql b/db/routines/vn/triggers/entryObservation_afterDelete.sql
index d143e105a..d61c678d2 100644
--- a/db/routines/vn/triggers/entryObservation_afterDelete.sql
+++ b/db/routines/vn/triggers/entryObservation_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entryObservation_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entryObservation_afterDelete`
AFTER DELETE ON `entryObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entryObservation_beforeInsert.sql b/db/routines/vn/triggers/entryObservation_beforeInsert.sql
index b842aeee7..9a9a8a3ee 100644
--- a/db/routines/vn/triggers/entryObservation_beforeInsert.sql
+++ b/db/routines/vn/triggers/entryObservation_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entryObservation_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entryObservation_beforeInsert`
BEFORE INSERT ON `entryObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entryObservation_beforeUpdate.sql b/db/routines/vn/triggers/entryObservation_beforeUpdate.sql
index 501631c69..3d1b73bec 100644
--- a/db/routines/vn/triggers/entryObservation_beforeUpdate.sql
+++ b/db/routines/vn/triggers/entryObservation_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entryObservation_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entryObservation_beforeUpdate`
BEFORE UPDATE ON `entryObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entry_afterDelete.sql b/db/routines/vn/triggers/entry_afterDelete.sql
index c723930fa..ebc6cd0e1 100644
--- a/db/routines/vn/triggers/entry_afterDelete.sql
+++ b/db/routines/vn/triggers/entry_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entry_afterDelete`
AFTER DELETE ON `entry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entry_afterUpdate.sql b/db/routines/vn/triggers/entry_afterUpdate.sql
index 47d61ed30..3a0227cf9 100644
--- a/db/routines/vn/triggers/entry_afterUpdate.sql
+++ b/db/routines/vn/triggers/entry_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entry_afterUpdate`
AFTER UPDATE ON `entry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entry_beforeDelete.sql b/db/routines/vn/triggers/entry_beforeDelete.sql
index 5b83daf77..4e933e1f4 100644
--- a/db/routines/vn/triggers/entry_beforeDelete.sql
+++ b/db/routines/vn/triggers/entry_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entry_beforeDelete`
BEFORE DELETE ON `entry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entry_beforeInsert.sql b/db/routines/vn/triggers/entry_beforeInsert.sql
index 17831f1b8..8a114c13f 100644
--- a/db/routines/vn/triggers/entry_beforeInsert.sql
+++ b/db/routines/vn/triggers/entry_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entry_beforeInsert`
BEFORE INSERT ON `entry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/entry_beforeUpdate.sql b/db/routines/vn/triggers/entry_beforeUpdate.sql
index 0a161853b..ee2178024 100644
--- a/db/routines/vn/triggers/entry_beforeUpdate.sql
+++ b/db/routines/vn/triggers/entry_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`entry_beforeUpdate`
BEFORE UPDATE ON `entry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expeditionPallet_beforeInsert.sql b/db/routines/vn/triggers/expeditionPallet_beforeInsert.sql
index 419cc2553..d2ea7ef76 100644
--- a/db/routines/vn/triggers/expeditionPallet_beforeInsert.sql
+++ b/db/routines/vn/triggers/expeditionPallet_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expeditionPallet_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expeditionPallet_beforeInsert`
BEFORE INSERT ON `expeditionPallet`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expeditionScan_beforeInsert.sql b/db/routines/vn/triggers/expeditionScan_beforeInsert.sql
index 1dce8fe9b..ec1dbc7c7 100644
--- a/db/routines/vn/triggers/expeditionScan_beforeInsert.sql
+++ b/db/routines/vn/triggers/expeditionScan_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expeditionScan_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expeditionScan_beforeInsert`
BEFORE INSERT ON `expeditionScan`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expeditionState_afterInsert.sql b/db/routines/vn/triggers/expeditionState_afterInsert.sql
index 3d8f4130c..6f0e4c622 100644
--- a/db/routines/vn/triggers/expeditionState_afterInsert.sql
+++ b/db/routines/vn/triggers/expeditionState_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expeditionState_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expeditionState_afterInsert`
AFTER INSERT ON `expeditionState`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expeditionState_beforeInsert.sql b/db/routines/vn/triggers/expeditionState_beforeInsert.sql
index 350240aab..c4dd40611 100644
--- a/db/routines/vn/triggers/expeditionState_beforeInsert.sql
+++ b/db/routines/vn/triggers/expeditionState_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expeditionState_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expeditionState_beforeInsert`
BEFORE INSERT ON `expeditionState`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expeditionTruck_beforeInsert.sql b/db/routines/vn/triggers/expeditionTruck_beforeInsert.sql
deleted file mode 100644
index 23cba7b3a..000000000
--- a/db/routines/vn/triggers/expeditionTruck_beforeInsert.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expeditionTruck_beforeInsert`
- BEFORE INSERT ON `expeditionTruck`
- FOR EACH ROW
-BEGIN
-
- SET NEW.description = UCASE(NEW.description);
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/expeditionTruck_beforeUpdate.sql b/db/routines/vn/triggers/expeditionTruck_beforeUpdate.sql
deleted file mode 100644
index 1b3b97238..000000000
--- a/db/routines/vn/triggers/expeditionTruck_beforeUpdate.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expeditionTruck_beforeUpdate`
- BEFORE UPDATE ON `expeditionTruck`
- FOR EACH ROW
-BEGIN
-
- SET NEW.description = UCASE(NEW.description);
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/expedition_afterDelete.sql b/db/routines/vn/triggers/expedition_afterDelete.sql
index e05cbf279..5d74a71e5 100644
--- a/db/routines/vn/triggers/expedition_afterDelete.sql
+++ b/db/routines/vn/triggers/expedition_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expedition_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expedition_afterDelete`
AFTER DELETE ON `expedition`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expedition_beforeDelete.sql b/db/routines/vn/triggers/expedition_beforeDelete.sql
index cbcc5a3bb..13ba19631 100644
--- a/db/routines/vn/triggers/expedition_beforeDelete.sql
+++ b/db/routines/vn/triggers/expedition_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expedition_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expedition_beforeDelete`
BEFORE DELETE ON `expedition`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expedition_beforeInsert.sql b/db/routines/vn/triggers/expedition_beforeInsert.sql
index e73ed9e49..42365c28f 100644
--- a/db/routines/vn/triggers/expedition_beforeInsert.sql
+++ b/db/routines/vn/triggers/expedition_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expedition_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expedition_beforeInsert`
BEFORE INSERT ON `expedition`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/expedition_beforeUpdate.sql b/db/routines/vn/triggers/expedition_beforeUpdate.sql
index 870c1a285..49cb6e816 100644
--- a/db/routines/vn/triggers/expedition_beforeUpdate.sql
+++ b/db/routines/vn/triggers/expedition_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`expedition_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`expedition_beforeUpdate`
BEFORE UPDATE ON `expedition`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/floramondoConfig_afterInsert.sql b/db/routines/vn/triggers/floramondoConfig_afterInsert.sql
index f64cb7878..8c94ecbc4 100644
--- a/db/routines/vn/triggers/floramondoConfig_afterInsert.sql
+++ b/db/routines/vn/triggers/floramondoConfig_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`floramondoConfig_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`floramondoConfig_afterInsert`
AFTER INSERT ON `floramondoConfig`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/gregue_beforeInsert.sql b/db/routines/vn/triggers/gregue_beforeInsert.sql
index 76e178356..46e867bc8 100644
--- a/db/routines/vn/triggers/gregue_beforeInsert.sql
+++ b/db/routines/vn/triggers/gregue_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`gregue_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`gregue_beforeInsert`
BEFORE INSERT ON `greuge`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/greuge_afterDelete.sql b/db/routines/vn/triggers/greuge_afterDelete.sql
index 947359b4c..5d6784579 100644
--- a/db/routines/vn/triggers/greuge_afterDelete.sql
+++ b/db/routines/vn/triggers/greuge_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`greuge_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`greuge_afterDelete`
AFTER DELETE ON `greuge`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/greuge_beforeInsert.sql b/db/routines/vn/triggers/greuge_beforeInsert.sql
index 100f2f244..b37c9d2d0 100644
--- a/db/routines/vn/triggers/greuge_beforeInsert.sql
+++ b/db/routines/vn/triggers/greuge_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`greuge_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`greuge_beforeInsert`
BEFORE INSERT ON `greuge`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/greuge_beforeUpdate.sql b/db/routines/vn/triggers/greuge_beforeUpdate.sql
index 265861db5..af9f06206 100644
--- a/db/routines/vn/triggers/greuge_beforeUpdate.sql
+++ b/db/routines/vn/triggers/greuge_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`greuge_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`greuge_beforeUpdate`
BEFORE UPDATE ON `greuge`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/host_beforeInsert.sql b/db/routines/vn/triggers/host_beforeInsert.sql
new file mode 100644
index 000000000..c2cb82334
--- /dev/null
+++ b/db/routines/vn/triggers/host_beforeInsert.sql
@@ -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 ;
diff --git a/db/routines/vn/triggers/host_beforeUpdate.sql b/db/routines/vn/triggers/host_beforeUpdate.sql
index 0b0962e86..7f279e655 100644
--- a/db/routines/vn/triggers/host_beforeUpdate.sql
+++ b/db/routines/vn/triggers/host_beforeUpdate.sql
@@ -1,8 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`host_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`host_beforeUpdate`
BEFORE UPDATE ON `host`
FOR EACH ROW
BEGIN
SET new.updated = util.VN_NOW();
+ SET NEW.editorFk = account.myUser_getId();
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInDueDay_afterDelete.sql b/db/routines/vn/triggers/invoiceInDueDay_afterDelete.sql
index 1e5b75bb2..1e43fb816 100644
--- a/db/routines/vn/triggers/invoiceInDueDay_afterDelete.sql
+++ b/db/routines/vn/triggers/invoiceInDueDay_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceInDueDay_afterDelete`
AFTER DELETE ON `invoiceInDueDay`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql b/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql
index f7e4265a7..4e859496e 100644
--- a/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql
+++ b/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceInDueDay_beforeInsert`
BEFORE INSERT ON `invoiceInDueDay`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql b/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql
index 2452ff0d1..9ca9aae50 100644
--- a/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql
+++ b/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceInDueDay_beforeUpdate`
BEFORE UPDATE ON `invoiceInDueDay`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceInTax_afterDelete.sql b/db/routines/vn/triggers/invoiceInTax_afterDelete.sql
index f541503ff..e48135ba6 100644
--- a/db/routines/vn/triggers/invoiceInTax_afterDelete.sql
+++ b/db/routines/vn/triggers/invoiceInTax_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInTax_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceInTax_afterDelete`
AFTER DELETE ON `invoiceInTax`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceInTax_beforeInsert.sql b/db/routines/vn/triggers/invoiceInTax_beforeInsert.sql
index b1138fc3a..c20e60b40 100644
--- a/db/routines/vn/triggers/invoiceInTax_beforeInsert.sql
+++ b/db/routines/vn/triggers/invoiceInTax_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeInsert`
BEFORE INSERT ON `invoiceInTax`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql b/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql
index 30918b7c5..68450bb5e 100644
--- a/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql
+++ b/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeUpdate`
BEFORE UPDATE ON `invoiceInTax`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceIn_afterDelete.sql b/db/routines/vn/triggers/invoiceIn_afterDelete.sql
index c088f6492..6b6a05765 100644
--- a/db/routines/vn/triggers/invoiceIn_afterDelete.sql
+++ b/db/routines/vn/triggers/invoiceIn_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceIn_afterDelete`
AFTER DELETE ON `invoiceIn`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceIn_afterUpdate.sql b/db/routines/vn/triggers/invoiceIn_afterUpdate.sql
index 1a9105c9e..95b1d98a9 100644
--- a/db/routines/vn/triggers/invoiceIn_afterUpdate.sql
+++ b/db/routines/vn/triggers/invoiceIn_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceIn_afterUpdate`
AFTER UPDATE ON `invoiceIn`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceIn_beforeDelete.sql b/db/routines/vn/triggers/invoiceIn_beforeDelete.sql
index 2ffff923a..3f3d48a2a 100644
--- a/db/routines/vn/triggers/invoiceIn_beforeDelete.sql
+++ b/db/routines/vn/triggers/invoiceIn_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceIn_beforeDelete`
BEFORE DELETE ON `invoiceIn`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceIn_beforeInsert.sql b/db/routines/vn/triggers/invoiceIn_beforeInsert.sql
index 2b80f2534..f01557b5e 100644
--- a/db/routines/vn/triggers/invoiceIn_beforeInsert.sql
+++ b/db/routines/vn/triggers/invoiceIn_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceIn_beforeInsert`
BEFORE INSERT ON `invoiceIn`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql b/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql
index 4503c7dbd..e58fadbdf 100644
--- a/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql
+++ b/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceIn_beforeUpdate`
BEFORE UPDATE ON `invoiceIn`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceOut_afterInsert.sql b/db/routines/vn/triggers/invoiceOut_afterInsert.sql
index 389c01111..868350f20 100644
--- a/db/routines/vn/triggers/invoiceOut_afterInsert.sql
+++ b/db/routines/vn/triggers/invoiceOut_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceOut_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceOut_afterInsert`
AFTER INSERT ON `invoiceOut`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceOut_beforeDelete.sql b/db/routines/vn/triggers/invoiceOut_beforeDelete.sql
index 8c8d7464c..5c9839f05 100644
--- a/db/routines/vn/triggers/invoiceOut_beforeDelete.sql
+++ b/db/routines/vn/triggers/invoiceOut_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceOut_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceOut_beforeDelete`
BEFORE DELETE ON `invoiceOut`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceOut_beforeInsert.sql b/db/routines/vn/triggers/invoiceOut_beforeInsert.sql
index 0081c8803..9fd027ba0 100644
--- a/db/routines/vn/triggers/invoiceOut_beforeInsert.sql
+++ b/db/routines/vn/triggers/invoiceOut_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceOut_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceOut_beforeInsert`
BEFORE INSERT ON `invoiceOut`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/invoiceOut_beforeUpdate.sql b/db/routines/vn/triggers/invoiceOut_beforeUpdate.sql
index 72be9cef0..5efb79c77 100644
--- a/db/routines/vn/triggers/invoiceOut_beforeUpdate.sql
+++ b/db/routines/vn/triggers/invoiceOut_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceOut_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceOut_beforeUpdate`
BEFORE UPDATE ON `invoiceOut`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemBarcode_afterDelete.sql b/db/routines/vn/triggers/itemBarcode_afterDelete.sql
index 4453d4a2f..4efde371d 100644
--- a/db/routines/vn/triggers/itemBarcode_afterDelete.sql
+++ b/db/routines/vn/triggers/itemBarcode_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemBarcode_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemBarcode_afterDelete`
AFTER DELETE ON `itemBarcode`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemBarcode_beforeInsert.sql b/db/routines/vn/triggers/itemBarcode_beforeInsert.sql
index 503f1eb8a..53563b754 100644
--- a/db/routines/vn/triggers/itemBarcode_beforeInsert.sql
+++ b/db/routines/vn/triggers/itemBarcode_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemBarcode_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemBarcode_beforeInsert`
BEFORE INSERT ON `itemBarcode`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemBarcode_beforeUpdate.sql b/db/routines/vn/triggers/itemBarcode_beforeUpdate.sql
index 2131427b2..e73fae473 100644
--- a/db/routines/vn/triggers/itemBarcode_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemBarcode_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemBarcode_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemBarcode_beforeUpdate`
BEFORE UPDATE ON `itemBarcode`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemBotanical_afterDelete.sql b/db/routines/vn/triggers/itemBotanical_afterDelete.sql
index 1b3c50ad1..7858bf1f5 100644
--- a/db/routines/vn/triggers/itemBotanical_afterDelete.sql
+++ b/db/routines/vn/triggers/itemBotanical_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemBotanical_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemBotanical_afterDelete`
AFTER DELETE ON `itemBotanical`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemBotanical_beforeInsert.sql b/db/routines/vn/triggers/itemBotanical_beforeInsert.sql
index 8a1b9346d..312c8c9c7 100644
--- a/db/routines/vn/triggers/itemBotanical_beforeInsert.sql
+++ b/db/routines/vn/triggers/itemBotanical_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemBotanical_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemBotanical_beforeInsert`
BEFORE INSERT ON `itemBotanical`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemBotanical_beforeUpdate.sql b/db/routines/vn/triggers/itemBotanical_beforeUpdate.sql
index 55939c403..30a1778a6 100644
--- a/db/routines/vn/triggers/itemBotanical_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemBotanical_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemBotanical_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemBotanical_beforeUpdate`
BEFORE UPDATE ON `itemBotanical`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemCategory_afterInsert.sql b/db/routines/vn/triggers/itemCategory_afterInsert.sql
index 9449737d1..7f32b4af2 100644
--- a/db/routines/vn/triggers/itemCategory_afterInsert.sql
+++ b/db/routines/vn/triggers/itemCategory_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemCategory_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemCategory_afterInsert`
AFTER INSERT ON `itemCategory`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemCost_beforeInsert.sql b/db/routines/vn/triggers/itemCost_beforeInsert.sql
index ba80193a6..0c1b92548 100644
--- a/db/routines/vn/triggers/itemCost_beforeInsert.sql
+++ b/db/routines/vn/triggers/itemCost_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemCost_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemCost_beforeInsert`
BEFORE INSERT ON `itemCost`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemCost_beforeUpdate.sql b/db/routines/vn/triggers/itemCost_beforeUpdate.sql
index 242c768f5..bd5fde85a 100644
--- a/db/routines/vn/triggers/itemCost_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemCost_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemCost_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemCost_beforeUpdate`
BEFORE UPDATE ON `itemCost`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemMinimumQuantity_afterDelete.sql b/db/routines/vn/triggers/itemMinimumQuantity_afterDelete.sql
index 1da5a5942..41a1c41ef 100644
--- a/db/routines/vn/triggers/itemMinimumQuantity_afterDelete.sql
+++ b/db/routines/vn/triggers/itemMinimumQuantity_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemMinimumQuantity_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemMinimumQuantity_afterDelete`
AFTER DELETE ON `itemMinimumQuantity`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemMinimumQuantity_beforeInsert.sql b/db/routines/vn/triggers/itemMinimumQuantity_beforeInsert.sql
index 8833ac968..de19b68c7 100644
--- a/db/routines/vn/triggers/itemMinimumQuantity_beforeInsert.sql
+++ b/db/routines/vn/triggers/itemMinimumQuantity_beforeInsert.sql
@@ -1,8 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemMinimumQuantity_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemMinimumQuantity_beforeInsert`
BEFORE INSERT ON `itemMinimumQuantity`
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
+ CALL itemMinimumQuantity_check(NEW.id, NEW.itemFk, NEW.started, NEW.ended, NEW.warehouseFk);
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/itemMinimumQuantity_beforeUpdate.sql b/db/routines/vn/triggers/itemMinimumQuantity_beforeUpdate.sql
index ef030f9f9..42b9d7f22 100644
--- a/db/routines/vn/triggers/itemMinimumQuantity_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemMinimumQuantity_beforeUpdate.sql
@@ -1,8 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemMinimumQuantity_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemMinimumQuantity_beforeUpdate`
BEFORE UPDATE ON `itemMinimumQuantity`
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
+ CALL itemMinimumQuantity_check(NEW.id, NEW.itemFk, NEW.started, NEW.ended, NEW.warehouseFk);
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/itemShelvingSale_afterInsert.sql b/db/routines/vn/triggers/itemShelvingSale_afterInsert.sql
index ef0048b34..3531b094c 100644
--- a/db/routines/vn/triggers/itemShelvingSale_afterInsert.sql
+++ b/db/routines/vn/triggers/itemShelvingSale_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelvingSale_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelvingSale_afterInsert`
AFTER INSERT ON `itemShelvingSale`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemShelving _afterDelete.sql b/db/routines/vn/triggers/itemShelving_afterDelete.sql
similarity index 62%
rename from db/routines/vn/triggers/itemShelving _afterDelete.sql
rename to db/routines/vn/triggers/itemShelving_afterDelete.sql
index 9a1759eff..f4bafd75c 100644
--- a/db/routines/vn/triggers/itemShelving _afterDelete.sql
+++ b/db/routines/vn/triggers/itemShelving_afterDelete.sql
@@ -1,11 +1,11 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_afterDelete`
AFTER DELETE ON `itemShelving`
FOR EACH ROW
BEGIN
INSERT INTO shelvingLog
SET `action` = 'delete',
- `changedModel` = 'itemShelving',
+ `changedModel` = 'ItemShelving',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
END$$
diff --git a/db/routines/vn/triggers/itemShelving_afterUpdate.sql b/db/routines/vn/triggers/itemShelving_afterUpdate.sql
index 1ad57961a..e5e63db43 100644
--- a/db/routines/vn/triggers/itemShelving_afterUpdate.sql
+++ b/db/routines/vn/triggers/itemShelving_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_afterUpdate`
AFTER UPDATE ON `itemShelving`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemShelving_beforeDelete.sql b/db/routines/vn/triggers/itemShelving_beforeDelete.sql
index a9f59e011..89737a841 100644
--- a/db/routines/vn/triggers/itemShelving_beforeDelete.sql
+++ b/db/routines/vn/triggers/itemShelving_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_beforeDelete`
BEFORE DELETE ON `itemShelving`
FOR EACH ROW
INSERT INTO vn.itemShelvingLog(itemShelvingFk,
diff --git a/db/routines/vn/triggers/itemShelving_beforeInsert.sql b/db/routines/vn/triggers/itemShelving_beforeInsert.sql
index e9fe17cf2..484e785f5 100644
--- a/db/routines/vn/triggers/itemShelving_beforeInsert.sql
+++ b/db/routines/vn/triggers/itemShelving_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_beforeInsert`
BEFORE INSERT ON `itemShelving`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemShelving_beforeUpdate.sql b/db/routines/vn/triggers/itemShelving_beforeUpdate.sql
index 214c64b45..fabdf8efb 100644
--- a/db/routines/vn/triggers/itemShelving_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemShelving_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemShelving_beforeUpdate`
BEFORE UPDATE ON `itemShelving`
FOR EACH ROW
BEGIN
@@ -9,9 +9,5 @@ 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 ;
diff --git a/db/routines/vn/triggers/itemTag_afterDelete.sql b/db/routines/vn/triggers/itemTag_afterDelete.sql
index 4014c88b5..e79c1ac5a 100644
--- a/db/routines/vn/triggers/itemTag_afterDelete.sql
+++ b/db/routines/vn/triggers/itemTag_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTag_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTag_afterDelete`
AFTER DELETE ON `itemTag`
FOR EACH ROW
trig: BEGIN
diff --git a/db/routines/vn/triggers/itemTag_afterInsert.sql b/db/routines/vn/triggers/itemTag_afterInsert.sql
index 3dfb25ad3..9e3e9f4e3 100644
--- a/db/routines/vn/triggers/itemTag_afterInsert.sql
+++ b/db/routines/vn/triggers/itemTag_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTag_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTag_afterInsert`
AFTER INSERT ON `itemTag`
FOR EACH ROW
trig: BEGIN
diff --git a/db/routines/vn/triggers/itemTag_afterUpdate.sql b/db/routines/vn/triggers/itemTag_afterUpdate.sql
index 61b45a161..494ffe76c 100644
--- a/db/routines/vn/triggers/itemTag_afterUpdate.sql
+++ b/db/routines/vn/triggers/itemTag_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTag_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTag_afterUpdate`
AFTER UPDATE ON `itemTag`
FOR EACH ROW
trig: BEGIN
diff --git a/db/routines/vn/triggers/itemTag_beforeInsert.sql b/db/routines/vn/triggers/itemTag_beforeInsert.sql
index cec4fd02f..d97d97106 100644
--- a/db/routines/vn/triggers/itemTag_beforeInsert.sql
+++ b/db/routines/vn/triggers/itemTag_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTag_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTag_beforeInsert`
BEFORE INSERT ON `itemTag`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemTag_beforeUpdate.sql b/db/routines/vn/triggers/itemTag_beforeUpdate.sql
index 41de249ef..1bdfbad1e 100644
--- a/db/routines/vn/triggers/itemTag_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemTag_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTag_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTag_beforeUpdate`
BEFORE UPDATE ON `itemTag`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemTaxCountry_afterDelete.sql b/db/routines/vn/triggers/itemTaxCountry_afterDelete.sql
index 8f91b26e1..0cdf01283 100644
--- a/db/routines/vn/triggers/itemTaxCountry_afterDelete.sql
+++ b/db/routines/vn/triggers/itemTaxCountry_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTaxCountry_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTaxCountry_afterDelete`
AFTER DELETE ON `itemTaxCountry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemTaxCountry_beforeInsert.sql b/db/routines/vn/triggers/itemTaxCountry_beforeInsert.sql
index 348dac023..569be2d98 100644
--- a/db/routines/vn/triggers/itemTaxCountry_beforeInsert.sql
+++ b/db/routines/vn/triggers/itemTaxCountry_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTaxCountry_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTaxCountry_beforeInsert`
BEFORE INSERT ON `itemTaxCountry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemTaxCountry_beforeUpdate.sql b/db/routines/vn/triggers/itemTaxCountry_beforeUpdate.sql
index 7470cd81e..ad7d6327b 100644
--- a/db/routines/vn/triggers/itemTaxCountry_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemTaxCountry_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemTaxCountry_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemTaxCountry_beforeUpdate`
BEFORE UPDATE ON `itemTaxCountry`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/itemType_beforeUpdate.sql b/db/routines/vn/triggers/itemType_beforeUpdate.sql
index 0e0aa0098..613ae8bfa 100644
--- a/db/routines/vn/triggers/itemType_beforeUpdate.sql
+++ b/db/routines/vn/triggers/itemType_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemType_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`itemType_beforeUpdate`
BEFORE UPDATE ON `itemType`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/item_afterDelete.sql b/db/routines/vn/triggers/item_afterDelete.sql
index 34f702cdd..175d0ae44 100644
--- a/db/routines/vn/triggers/item_afterDelete.sql
+++ b/db/routines/vn/triggers/item_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`item_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`item_afterDelete`
AFTER DELETE ON `item`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/item_afterInsert.sql b/db/routines/vn/triggers/item_afterInsert.sql
index a4f9c5f5a..6c0137a2f 100644
--- a/db/routines/vn/triggers/item_afterInsert.sql
+++ b/db/routines/vn/triggers/item_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`item_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`item_afterInsert`
AFTER INSERT ON `item`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/item_afterUpdate.sql b/db/routines/vn/triggers/item_afterUpdate.sql
index 3b433c302..92cc6f78c 100644
--- a/db/routines/vn/triggers/item_afterUpdate.sql
+++ b/db/routines/vn/triggers/item_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`item_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`item_afterUpdate`
AFTER UPDATE ON `item`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/item_beforeInsert.sql b/db/routines/vn/triggers/item_beforeInsert.sql
index d7ee4db34..6f5cdaa71 100644
--- a/db/routines/vn/triggers/item_beforeInsert.sql
+++ b/db/routines/vn/triggers/item_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`item_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`item_beforeInsert`
BEFORE INSERT ON `item`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/item_beforeUpdate.sql b/db/routines/vn/triggers/item_beforeUpdate.sql
index 3cf630d18..0db1dbb40 100644
--- a/db/routines/vn/triggers/item_beforeUpdate.sql
+++ b/db/routines/vn/triggers/item_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`item_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`item_beforeUpdate`
BEFORE UPDATE ON `item`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/machine_beforeInsert.sql b/db/routines/vn/triggers/machine_beforeInsert.sql
index 269879b22..81f4bb346 100644
--- a/db/routines/vn/triggers/machine_beforeInsert.sql
+++ b/db/routines/vn/triggers/machine_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`machine_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`machine_beforeInsert`
BEFORE INSERT ON `machine`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/mail_beforeInsert.sql b/db/routines/vn/triggers/mail_beforeInsert.sql
index fc598f829..04c9db61c 100644
--- a/db/routines/vn/triggers/mail_beforeInsert.sql
+++ b/db/routines/vn/triggers/mail_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`mail_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`mail_beforeInsert`
BEFORE INSERT ON `mail`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/mandate_beforeInsert.sql b/db/routines/vn/triggers/mandate_beforeInsert.sql
index 7d1e9a59e..bfc36cc31 100644
--- a/db/routines/vn/triggers/mandate_beforeInsert.sql
+++ b/db/routines/vn/triggers/mandate_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`mandate_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`mandate_beforeInsert`
BEFORE INSERT ON `mandate`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/operator_beforeInsert.sql b/db/routines/vn/triggers/operator_beforeInsert.sql
index c1805d0fc..e6d82dcc6 100644
--- a/db/routines/vn/triggers/operator_beforeInsert.sql
+++ b/db/routines/vn/triggers/operator_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`operator_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`operator_beforeInsert`
BEFORE INSERT ON `operator`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/operator_beforeUpdate.sql b/db/routines/vn/triggers/operator_beforeUpdate.sql
index 84fb8ca04..1294fcb8e 100644
--- a/db/routines/vn/triggers/operator_beforeUpdate.sql
+++ b/db/routines/vn/triggers/operator_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`operator_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`operator_beforeUpdate`
BEFORE UPDATE ON `operator`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/packaging_beforeInsert.sql b/db/routines/vn/triggers/packaging_beforeInsert.sql
index 02ba3cf4f..abbe24a45 100644
--- a/db/routines/vn/triggers/packaging_beforeInsert.sql
+++ b/db/routines/vn/triggers/packaging_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`packaging_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`packaging_beforeInsert`
BEFORE INSERT ON `packaging`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/packaging_beforeUpdate.sql b/db/routines/vn/triggers/packaging_beforeUpdate.sql
index 515c94bb5..c11b76902 100644
--- a/db/routines/vn/triggers/packaging_beforeUpdate.sql
+++ b/db/routines/vn/triggers/packaging_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`packaging_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`packaging_beforeUpdate`
BEFORE UPDATE ON `packaging`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/packingSite_afterDelete.sql b/db/routines/vn/triggers/packingSite_afterDelete.sql
index 7c76ae7ec..a1fccf67d 100644
--- a/db/routines/vn/triggers/packingSite_afterDelete.sql
+++ b/db/routines/vn/triggers/packingSite_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`packingSite_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`packingSite_afterDelete`
AFTER DELETE ON `packingSite`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/packingSite_beforeInsert.sql b/db/routines/vn/triggers/packingSite_beforeInsert.sql
index 966dfdd53..aab2d4b19 100644
--- a/db/routines/vn/triggers/packingSite_beforeInsert.sql
+++ b/db/routines/vn/triggers/packingSite_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`packingSite_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`packingSite_beforeInsert`
BEFORE INSERT ON `packingSite`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/packingSite_beforeUpdate.sql b/db/routines/vn/triggers/packingSite_beforeUpdate.sql
index 4d56ac1b5..dc365fc41 100644
--- a/db/routines/vn/triggers/packingSite_beforeUpdate.sql
+++ b/db/routines/vn/triggers/packingSite_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`packingSite_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`packingSite_beforeUpdate`
BEFORE UPDATE ON `packingSite`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/parking_afterDelete.sql b/db/routines/vn/triggers/parking_afterDelete.sql
index 1ec96c24d..1237b5dc6 100644
--- a/db/routines/vn/triggers/parking_afterDelete.sql
+++ b/db/routines/vn/triggers/parking_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`parking_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`parking_afterDelete`
AFTER DELETE ON `parking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/parking_beforeInsert.sql b/db/routines/vn/triggers/parking_beforeInsert.sql
index cdec4c759..f55e9c1b2 100644
--- a/db/routines/vn/triggers/parking_beforeInsert.sql
+++ b/db/routines/vn/triggers/parking_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`parking_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`parking_beforeInsert`
BEFORE INSERT ON `parking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/parking_beforeUpdate.sql b/db/routines/vn/triggers/parking_beforeUpdate.sql
index 3e808f505..1418abc34 100644
--- a/db/routines/vn/triggers/parking_beforeUpdate.sql
+++ b/db/routines/vn/triggers/parking_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`parking_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`parking_beforeUpdate`
BEFORE UPDATE ON `parking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/payment_afterInsert.sql b/db/routines/vn/triggers/payment_afterInsert.sql
index 5585d6682..f9c9e2314 100644
--- a/db/routines/vn/triggers/payment_afterInsert.sql
+++ b/db/routines/vn/triggers/payment_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`payment_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`payment_afterInsert`
AFTER INSERT ON `payment`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/payment_beforeInsert.sql b/db/routines/vn/triggers/payment_beforeInsert.sql
index af369a69b..85c6060c0 100644
--- a/db/routines/vn/triggers/payment_beforeInsert.sql
+++ b/db/routines/vn/triggers/payment_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`payment_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`payment_beforeInsert`
BEFORE INSERT ON `payment`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/payment_beforeUpdate.sql b/db/routines/vn/triggers/payment_beforeUpdate.sql
index b3ef1342b..9a3bbe460 100644
--- a/db/routines/vn/triggers/payment_beforeUpdate.sql
+++ b/db/routines/vn/triggers/payment_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`payment_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`payment_beforeUpdate`
BEFORE UPDATE ON `payment`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/postCode_afterDelete.sql b/db/routines/vn/triggers/postCode_afterDelete.sql
index 736d5f5f3..4afcee770 100644
--- a/db/routines/vn/triggers/postCode_afterDelete.sql
+++ b/db/routines/vn/triggers/postCode_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`postCode_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`postCode_afterDelete`
AFTER DELETE ON `postCode`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/postCode_afterUpdate.sql b/db/routines/vn/triggers/postCode_afterUpdate.sql
index c1e56044a..f1019342f 100644
--- a/db/routines/vn/triggers/postCode_afterUpdate.sql
+++ b/db/routines/vn/triggers/postCode_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`postCode_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`postCode_afterUpdate`
AFTER UPDATE ON `postCode`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/postCode_beforeInsert.sql b/db/routines/vn/triggers/postCode_beforeInsert.sql
index 9e6d7e592..503d917a8 100644
--- a/db/routines/vn/triggers/postCode_beforeInsert.sql
+++ b/db/routines/vn/triggers/postCode_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`postCode_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`postCode_beforeInsert`
BEFORE INSERT ON `postCode`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/postCode_beforeUpdate.sql b/db/routines/vn/triggers/postCode_beforeUpdate.sql
index 1b3c228a3..fa8f03a15 100644
--- a/db/routines/vn/triggers/postCode_beforeUpdate.sql
+++ b/db/routines/vn/triggers/postCode_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`postCode_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`postCode_beforeUpdate`
BEFORE UPDATE ON `postCode`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/priceFixed_beforeInsert.sql b/db/routines/vn/triggers/priceFixed_beforeInsert.sql
index ecf6f3e30..b278f3749 100644
--- a/db/routines/vn/triggers/priceFixed_beforeInsert.sql
+++ b/db/routines/vn/triggers/priceFixed_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`priceFixed_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`priceFixed_beforeInsert`
BEFORE INSERT ON `priceFixed`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/priceFixed_beforeUpdate.sql b/db/routines/vn/triggers/priceFixed_beforeUpdate.sql
index f675322b9..1b8efa7f5 100644
--- a/db/routines/vn/triggers/priceFixed_beforeUpdate.sql
+++ b/db/routines/vn/triggers/priceFixed_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`priceFixed_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`priceFixed_beforeUpdate`
BEFORE UPDATE ON `priceFixed`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/productionConfig_afterDelete.sql b/db/routines/vn/triggers/productionConfig_afterDelete.sql
index 384bf681e..6b6800d4f 100644
--- a/db/routines/vn/triggers/productionConfig_afterDelete.sql
+++ b/db/routines/vn/triggers/productionConfig_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`productionConfig_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`productionConfig_afterDelete`
AFTER DELETE ON `productionConfig`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/productionConfig_beforeInsert.sql b/db/routines/vn/triggers/productionConfig_beforeInsert.sql
index 99b217be4..4ece1297a 100644
--- a/db/routines/vn/triggers/productionConfig_beforeInsert.sql
+++ b/db/routines/vn/triggers/productionConfig_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`productionConfig_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`productionConfig_beforeInsert`
BEFORE INSERT ON `productionConfig`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/productionConfig_beforeUpdate.sql b/db/routines/vn/triggers/productionConfig_beforeUpdate.sql
index f1ceaa471..e8b6bc294 100644
--- a/db/routines/vn/triggers/productionConfig_beforeUpdate.sql
+++ b/db/routines/vn/triggers/productionConfig_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`productionConfig_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`productionConfig_beforeUpdate`
BEFORE UPDATE ON `productionConfig`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/projectNotes_beforeInsert.sql b/db/routines/vn/triggers/projectNotes_beforeInsert.sql
index 58d75bec7..ccc7078d3 100644
--- a/db/routines/vn/triggers/projectNotes_beforeInsert.sql
+++ b/db/routines/vn/triggers/projectNotes_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`projectNotes_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`projectNotes_beforeInsert`
BEFORE INSERT ON `projectNotes`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/province_afterDelete.sql b/db/routines/vn/triggers/province_afterDelete.sql
index d0cee78e7..b338340e3 100644
--- a/db/routines/vn/triggers/province_afterDelete.sql
+++ b/db/routines/vn/triggers/province_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`province_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`province_afterDelete`
AFTER DELETE ON `province`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/province_afterUpdate.sql b/db/routines/vn/triggers/province_afterUpdate.sql
index e8f3958b2..4e99cdac4 100644
--- a/db/routines/vn/triggers/province_afterUpdate.sql
+++ b/db/routines/vn/triggers/province_afterUpdate.sql
@@ -1,7 +1,7 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`province_afterUpdate`
- AFTER UPDATE ON `province`
- FOR EACH ROW
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`province_afterUpdate`
+ AFTER UPDATE ON `province`
+ FOR EACH ROW
BEGIN
IF !(OLD.autonomyFk <=> NEW.autonomyFk) THEN
CALL zoneGeo_setParent(NEW.geoFk,
@@ -12,5 +12,5 @@ BEGIN
UPDATE zoneGeo SET `name` = NEW.`name`
WHERE id = NEW.geoFk;
END IF;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/province_beforeInsert.sql b/db/routines/vn/triggers/province_beforeInsert.sql
index f3f039fc3..eff8f397a 100644
--- a/db/routines/vn/triggers/province_beforeInsert.sql
+++ b/db/routines/vn/triggers/province_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`province_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`province_beforeInsert`
BEFORE INSERT ON `province`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/province_beforeUpdate.sql b/db/routines/vn/triggers/province_beforeUpdate.sql
index 23ca49d4a..ef553b2bc 100644
--- a/db/routines/vn/triggers/province_beforeUpdate.sql
+++ b/db/routines/vn/triggers/province_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`province_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`province_beforeUpdate`
BEFORE UPDATE ON `province`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/rate_afterDelete.sql b/db/routines/vn/triggers/rate_afterDelete.sql
index dae240c15..69787cd81 100644
--- a/db/routines/vn/triggers/rate_afterDelete.sql
+++ b/db/routines/vn/triggers/rate_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`rate_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`rate_afterDelete`
AFTER DELETE ON `rate`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/rate_beforeInsert.sql b/db/routines/vn/triggers/rate_beforeInsert.sql
index 0d77a95d7..c2117e64c 100644
--- a/db/routines/vn/triggers/rate_beforeInsert.sql
+++ b/db/routines/vn/triggers/rate_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`rate_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`rate_beforeInsert`
BEFORE INSERT ON `rate`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/rate_beforeUpdate.sql b/db/routines/vn/triggers/rate_beforeUpdate.sql
index 2055d14fd..af63e431e 100644
--- a/db/routines/vn/triggers/rate_beforeUpdate.sql
+++ b/db/routines/vn/triggers/rate_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`rate_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`rate_beforeUpdate`
BEFORE UPDATE ON `rate`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/receipt_afterInsert.sql b/db/routines/vn/triggers/receipt_afterInsert.sql
index 3881cb4d2..92e458743 100644
--- a/db/routines/vn/triggers/receipt_afterInsert.sql
+++ b/db/routines/vn/triggers/receipt_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`receipt_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`receipt_afterInsert`
AFTER INSERT ON `receipt`
FOR EACH ROW
CALL clientRisk_update(NEW.clientFk, NEW.companyFk, -NEW.amountPaid)$$
diff --git a/db/routines/vn/triggers/receipt_afterUpdate.sql b/db/routines/vn/triggers/receipt_afterUpdate.sql
index 3d739e8f1..c17783790 100644
--- a/db/routines/vn/triggers/receipt_afterUpdate.sql
+++ b/db/routines/vn/triggers/receipt_afterUpdate.sql
@@ -1,7 +1,7 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`receipt_afterUpdate`
- AFTER UPDATE ON `receipt`
- FOR EACH ROW
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`receipt_afterUpdate`
+ AFTER UPDATE ON `receipt`
+ FOR EACH ROW
BEGIN
IF NEW.isConciliate = FALSE AND NEW.payed > OLD.payed THEN
CALL mail_insert(
@@ -11,5 +11,5 @@ BEGIN
CONCAT('Se ha cambiado el recibo: ', NEW.Id, ' de ', OLD.payed, ' a ', NEW.payed)
);
END IF;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/receipt_beforeDelete.sql b/db/routines/vn/triggers/receipt_beforeDelete.sql
index fc75a4c35..1c1f0a0b1 100644
--- a/db/routines/vn/triggers/receipt_beforeDelete.sql
+++ b/db/routines/vn/triggers/receipt_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`receipt_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`receipt_beforeDelete`
BEFORE DELETE ON `receipt`
FOR EACH ROW
CALL clientRisk_update(OLD.clientFk, OLD.companyFk, OLD.amountPaid)$$
diff --git a/db/routines/vn/triggers/receipt_beforeInsert.sql b/db/routines/vn/triggers/receipt_beforeInsert.sql
index 696cad241..85bc2c4a2 100644
--- a/db/routines/vn/triggers/receipt_beforeInsert.sql
+++ b/db/routines/vn/triggers/receipt_beforeInsert.sql
@@ -1,7 +1,7 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`receipt_beforeInsert`
- BEFORE INSERT ON `receipt`
- FOR EACH ROW
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`receipt_beforeInsert`
+ BEFORE INSERT ON `receipt`
+ FOR EACH ROW
BEGIN
DECLARE vIsAutoConciliated BOOLEAN;
@@ -13,5 +13,5 @@ BEGIN
SET NEW.isConciliate = vIsAutoConciliated;
END IF;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/receipt_beforeUpdate.sql b/db/routines/vn/triggers/receipt_beforeUpdate.sql
index 8ea14c17c..3c66719a4 100644
--- a/db/routines/vn/triggers/receipt_beforeUpdate.sql
+++ b/db/routines/vn/triggers/receipt_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`receipt_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`receipt_beforeUpdate`
BEFORE UPDATE ON `receipt`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/recovery_afterDelete.sql b/db/routines/vn/triggers/recovery_afterDelete.sql
index 429f562ac..27679a2a5 100644
--- a/db/routines/vn/triggers/recovery_afterDelete.sql
+++ b/db/routines/vn/triggers/recovery_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`recovery_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`recovery_afterDelete`
AFTER DELETE ON `recovery`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/recovery_beforeInsert.sql b/db/routines/vn/triggers/recovery_beforeInsert.sql
index 2318e0b7b..4671e95cc 100644
--- a/db/routines/vn/triggers/recovery_beforeInsert.sql
+++ b/db/routines/vn/triggers/recovery_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`recovery_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`recovery_beforeInsert`
BEFORE INSERT ON `recovery`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/recovery_beforeUpdate.sql b/db/routines/vn/triggers/recovery_beforeUpdate.sql
index 4d485c075..45710b773 100644
--- a/db/routines/vn/triggers/recovery_beforeUpdate.sql
+++ b/db/routines/vn/triggers/recovery_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`recovery_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`recovery_beforeUpdate`
BEFORE UPDATE ON `recovery`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/roadmapStop_beforeInsert.sql b/db/routines/vn/triggers/roadmapStop_beforeInsert.sql
new file mode 100644
index 000000000..d71942fea
--- /dev/null
+++ b/db/routines/vn/triggers/roadmapStop_beforeInsert.sql
@@ -0,0 +1,10 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeInsert`
+ BEFORE INSERT ON `roadmapStop`
+ FOR EACH ROW
+BEGIN
+
+ SET NEW.description = UCASE(NEW.description);
+
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql
new file mode 100644
index 000000000..c3cbf2597
--- /dev/null
+++ b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql
@@ -0,0 +1,10 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeUpdate`
+ BEFORE UPDATE ON `roadmapStop`
+ FOR EACH ROW
+BEGIN
+
+ SET NEW.description = UCASE(NEW.description);
+
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/roadmap_beforeInsert.sql b/db/routines/vn/triggers/roadmap_beforeInsert.sql
new file mode 100644
index 000000000..df07d5540
--- /dev/null
+++ b/db/routines/vn/triggers/roadmap_beforeInsert.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`roadmap_beforeInsert`
+ BEFORE INSERT ON `roadmap`
+ FOR EACH ROW
+BEGIN
+ IF NEW.driver1Fk IS NOT NULL THEN
+ SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
+ ELSE
+ SET NEW.driverName = NULL;
+ END IF;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/triggers/roadmap_beforeUpdate.sql b/db/routines/vn/triggers/roadmap_beforeUpdate.sql
new file mode 100644
index 000000000..4905a0442
--- /dev/null
+++ b/db/routines/vn/triggers/roadmap_beforeUpdate.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`roadmap_beforeUpdate`
+ BEFORE UPDATE ON `roadmap`
+ FOR EACH ROW
+BEGIN
+ IF NEW.driver1Fk IS NOT NULL THEN
+ SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
+ ELSE
+ SET NEW.driverName = NULL;
+ END IF;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/triggers/route_afterDelete.sql b/db/routines/vn/triggers/route_afterDelete.sql
index e929bd519..2bd1e3ab6 100644
--- a/db/routines/vn/triggers/route_afterDelete.sql
+++ b/db/routines/vn/triggers/route_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`route_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`route_afterDelete`
AFTER DELETE ON `route`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/route_afterInsert.sql b/db/routines/vn/triggers/route_afterInsert.sql
index f030f09fa..50e14426c 100644
--- a/db/routines/vn/triggers/route_afterInsert.sql
+++ b/db/routines/vn/triggers/route_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`route_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`route_afterInsert`
AFTER INSERT ON `route`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/route_afterUpdate.sql b/db/routines/vn/triggers/route_afterUpdate.sql
index 14b53c2a5..ec205090e 100644
--- a/db/routines/vn/triggers/route_afterUpdate.sql
+++ b/db/routines/vn/triggers/route_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`route_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`route_afterUpdate`
AFTER UPDATE ON `route`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/route_beforeInsert.sql b/db/routines/vn/triggers/route_beforeInsert.sql
index 442b0620e..788efe662 100644
--- a/db/routines/vn/triggers/route_beforeInsert.sql
+++ b/db/routines/vn/triggers/route_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`route_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`route_beforeInsert`
BEFORE INSERT ON `route`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/route_beforeUpdate.sql b/db/routines/vn/triggers/route_beforeUpdate.sql
index 43ee802f5..0ea403de3 100644
--- a/db/routines/vn/triggers/route_beforeUpdate.sql
+++ b/db/routines/vn/triggers/route_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`route_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`route_beforeUpdate`
BEFORE UPDATE ON `route`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/routesMonitor_afterDelete.sql b/db/routines/vn/triggers/routesMonitor_afterDelete.sql
index 000425dad..aad3ad0ec 100644
--- a/db/routines/vn/triggers/routesMonitor_afterDelete.sql
+++ b/db/routines/vn/triggers/routesMonitor_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`routesMonitor_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`routesMonitor_afterDelete`
AFTER DELETE ON `routesMonitor`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/routesMonitor_beforeInsert.sql b/db/routines/vn/triggers/routesMonitor_beforeInsert.sql
index 70b723d54..731a73b0c 100644
--- a/db/routines/vn/triggers/routesMonitor_beforeInsert.sql
+++ b/db/routines/vn/triggers/routesMonitor_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`routesMonitor_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`routesMonitor_beforeInsert`
BEFORE INSERT ON `routesMonitor`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/routesMonitor_beforeUpdate.sql b/db/routines/vn/triggers/routesMonitor_beforeUpdate.sql
index 0ca867b7a..31b47f52e 100644
--- a/db/routines/vn/triggers/routesMonitor_beforeUpdate.sql
+++ b/db/routines/vn/triggers/routesMonitor_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`routesMonitor_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`routesMonitor_beforeUpdate`
BEFORE UPDATE ON `routesMonitor`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/saleBuy_beforeInsert.sql b/db/routines/vn/triggers/saleBuy_beforeInsert.sql
index 1c36671d5..e00480ad4 100644
--- a/db/routines/vn/triggers/saleBuy_beforeInsert.sql
+++ b/db/routines/vn/triggers/saleBuy_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleBuy_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`saleBuy_beforeInsert`
BEFORE INSERT ON `saleBuy`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/saleGroupDetail._beforeInsert.sql b/db/routines/vn/triggers/saleGroupDetail._beforeInsert.sql
new file mode 100644
index 000000000..9513be46a
--- /dev/null
+++ b/db/routines/vn/triggers/saleGroupDetail._beforeInsert.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleGroupDetail_beforeInsert`
+ BEFORE INSERT ON `saleGroupDetail`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/saleGroupDetail_afterDelete.sql b/db/routines/vn/triggers/saleGroupDetail_afterDelete.sql
new file mode 100644
index 000000000..1698ad8ce
--- /dev/null
+++ b/db/routines/vn/triggers/saleGroupDetail_afterDelete.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleGroupDetail_afterDelete`
+ AFTER DELETE ON `saleGroupDetail`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO saleGroupLog
+ SET `action` = 'delete',
+ `changedModel` = 'SaleGroupDetail',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/saleGroupDetail_beforeUpdate.sql b/db/routines/vn/triggers/saleGroupDetail_beforeUpdate.sql
new file mode 100644
index 000000000..0da18fd98
--- /dev/null
+++ b/db/routines/vn/triggers/saleGroupDetail_beforeUpdate.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleGroupDetail_beforeUpdate`
+ BEFORE UPDATE ON `saleGroupDetail`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/saleGroup_afterDelete.sql b/db/routines/vn/triggers/saleGroup_afterDelete.sql
index 1e0163187..f74411b37 100644
--- a/db/routines/vn/triggers/saleGroup_afterDelete.sql
+++ b/db/routines/vn/triggers/saleGroup_afterDelete.sql
@@ -1,9 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleGroup_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`saleGroup_afterDelete`
AFTER DELETE ON `saleGroup`
FOR EACH ROW
BEGIN
- INSERT INTO ticketLog
+ INSERT INTO saleGroupLog
SET `action` = 'delete',
`changedModel` = 'SaleGroup',
`changedModelId` = OLD.id,
diff --git a/db/routines/vn/triggers/saleGroup_beforeInsert.sql b/db/routines/vn/triggers/saleGroup_beforeInsert.sql
index 18be92ed6..b50489a07 100644
--- a/db/routines/vn/triggers/saleGroup_beforeInsert.sql
+++ b/db/routines/vn/triggers/saleGroup_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleGroup_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`saleGroup_beforeInsert`
BEFORE INSERT ON `saleGroup`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/saleGroup_beforeUpdate.sql b/db/routines/vn/triggers/saleGroup_beforeUpdate.sql
index 1f6aa6def..a3358b22c 100644
--- a/db/routines/vn/triggers/saleGroup_beforeUpdate.sql
+++ b/db/routines/vn/triggers/saleGroup_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleGroup_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`saleGroup_beforeUpdate`
BEFORE UPDATE ON `saleGroup`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/saleLabel_afterUpdate.sql b/db/routines/vn/triggers/saleLabel_afterUpdate.sql
index ff3787358..38fab771a 100644
--- a/db/routines/vn/triggers/saleLabel_afterUpdate.sql
+++ b/db/routines/vn/triggers/saleLabel_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleLabel_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`saleLabel_afterUpdate`
AFTER UPDATE ON `vn`.`saleLabel`
FOR EACH ROW
IF NEW.stem >= (SELECT s.quantity FROM sale s WHERE s.id = NEW.saleFk) THEN
diff --git a/db/routines/vn/triggers/saleTracking_afterInsert.sql b/db/routines/vn/triggers/saleTracking_afterInsert.sql
index 00bef8486..e3dce8747 100644
--- a/db/routines/vn/triggers/saleTracking_afterInsert.sql
+++ b/db/routines/vn/triggers/saleTracking_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`saleTracking_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`saleTracking_afterInsert`
AFTER INSERT ON `saleTracking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sale_afterDelete.sql b/db/routines/vn/triggers/sale_afterDelete.sql
index 6365208b2..2751d88c2 100644
--- a/db/routines/vn/triggers/sale_afterDelete.sql
+++ b/db/routines/vn/triggers/sale_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sale_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sale_afterDelete`
AFTER DELETE ON `sale`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sale_afterInsert.sql b/db/routines/vn/triggers/sale_afterInsert.sql
index b5b28257f..f15b17722 100644
--- a/db/routines/vn/triggers/sale_afterInsert.sql
+++ b/db/routines/vn/triggers/sale_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sale_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sale_afterInsert`
AFTER INSERT ON `sale`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sale_afterUpdate.sql b/db/routines/vn/triggers/sale_afterUpdate.sql
index 3f59c9188..82da55486 100644
--- a/db/routines/vn/triggers/sale_afterUpdate.sql
+++ b/db/routines/vn/triggers/sale_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sale_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sale_afterUpdate`
AFTER UPDATE ON `sale`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sale_beforeDelete.sql b/db/routines/vn/triggers/sale_beforeDelete.sql
index a91e7f010..ad97f8b55 100644
--- a/db/routines/vn/triggers/sale_beforeDelete.sql
+++ b/db/routines/vn/triggers/sale_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sale_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sale_beforeDelete`
BEFORE DELETE ON `sale`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sale_beforeInsert.sql b/db/routines/vn/triggers/sale_beforeInsert.sql
index 0ef368513..31d5882fc 100644
--- a/db/routines/vn/triggers/sale_beforeInsert.sql
+++ b/db/routines/vn/triggers/sale_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sale_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sale_beforeInsert`
BEFORE INSERT ON `sale`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sale_beforeUpdate.sql b/db/routines/vn/triggers/sale_beforeUpdate.sql
index c5a748503..fa45dad5c 100644
--- a/db/routines/vn/triggers/sale_beforeUpdate.sql
+++ b/db/routines/vn/triggers/sale_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sale_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sale_beforeUpdate`
BEFORE UPDATE ON `sale`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sharingCart_beforeDelete.sql b/db/routines/vn/triggers/sharingCart_beforeDelete.sql
index 6996b3138..aa3c0c2bf 100644
--- a/db/routines/vn/triggers/sharingCart_beforeDelete.sql
+++ b/db/routines/vn/triggers/sharingCart_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sharingCart_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sharingCart_beforeDelete`
BEFORE DELETE ON `sharingCart`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sharingCart_beforeInsert.sql b/db/routines/vn/triggers/sharingCart_beforeInsert.sql
index 116337b62..0dd59a91a 100644
--- a/db/routines/vn/triggers/sharingCart_beforeInsert.sql
+++ b/db/routines/vn/triggers/sharingCart_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sharingCart_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sharingCart_beforeInsert`
BEFORE INSERT ON `sharingCart`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sharingCart_beforeUpdate.sql b/db/routines/vn/triggers/sharingCart_beforeUpdate.sql
index 91cbfb3d0..e1dd26938 100644
--- a/db/routines/vn/triggers/sharingCart_beforeUpdate.sql
+++ b/db/routines/vn/triggers/sharingCart_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sharingCart_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sharingCart_beforeUpdate`
BEFORE UPDATE ON `sharingCart`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sharingClient_beforeInsert.sql b/db/routines/vn/triggers/sharingClient_beforeInsert.sql
index eea65e74c..03a0e0ce0 100644
--- a/db/routines/vn/triggers/sharingClient_beforeInsert.sql
+++ b/db/routines/vn/triggers/sharingClient_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sharingClient_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sharingClient_beforeInsert`
BEFORE INSERT ON `sharingClient`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/sharingClient_beforeUpdate.sql b/db/routines/vn/triggers/sharingClient_beforeUpdate.sql
index fceab691c..d3358586b 100644
--- a/db/routines/vn/triggers/sharingClient_beforeUpdate.sql
+++ b/db/routines/vn/triggers/sharingClient_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`sharingClient_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sharingClient_beforeUpdate`
BEFORE UPDATE ON `sharingClient`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/shelving_afterDelete.sql b/db/routines/vn/triggers/shelving_afterDelete.sql
index 964a866e7..aa3c3bcea 100644
--- a/db/routines/vn/triggers/shelving_afterDelete.sql
+++ b/db/routines/vn/triggers/shelving_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`shelving_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`shelving_afterDelete`
AFTER DELETE ON `shelving`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/shelving_beforeInsert.sql b/db/routines/vn/triggers/shelving_beforeInsert.sql
index ef3c7030c..21528ef78 100644
--- a/db/routines/vn/triggers/shelving_beforeInsert.sql
+++ b/db/routines/vn/triggers/shelving_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`shelving_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`shelving_beforeInsert`
BEFORE INSERT ON `shelving`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/shelving_beforeUpdate.sql b/db/routines/vn/triggers/shelving_beforeUpdate.sql
index 89e7cb7e9..23210c4be 100644
--- a/db/routines/vn/triggers/shelving_beforeUpdate.sql
+++ b/db/routines/vn/triggers/shelving_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`shelving_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`shelving_beforeUpdate`
BEFORE UPDATE ON `shelving`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/solunionCAP_afterInsert.sql b/db/routines/vn/triggers/solunionCAP_afterInsert.sql
index 0d6e510ad..b4df7dc61 100644
--- a/db/routines/vn/triggers/solunionCAP_afterInsert.sql
+++ b/db/routines/vn/triggers/solunionCAP_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`solunionCAP_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`solunionCAP_afterInsert`
AFTER INSERT ON `solunionCAP`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/solunionCAP_afterUpdate.sql b/db/routines/vn/triggers/solunionCAP_afterUpdate.sql
index 40ff57f35..ccfba96f2 100644
--- a/db/routines/vn/triggers/solunionCAP_afterUpdate.sql
+++ b/db/routines/vn/triggers/solunionCAP_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`solunionCAP_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`solunionCAP_afterUpdate`
AFTER UPDATE ON `solunionCAP`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/solunionCAP_beforeDelete.sql b/db/routines/vn/triggers/solunionCAP_beforeDelete.sql
index 29c4298fd..a8b6732c1 100644
--- a/db/routines/vn/triggers/solunionCAP_beforeDelete.sql
+++ b/db/routines/vn/triggers/solunionCAP_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`solunionCAP_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`solunionCAP_beforeDelete`
BEFORE DELETE ON `solunionCAP`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/specie_beforeInsert.sql b/db/routines/vn/triggers/specie_beforeInsert.sql
index 68abf0d30..8a9f299fd 100644
--- a/db/routines/vn/triggers/specie_beforeInsert.sql
+++ b/db/routines/vn/triggers/specie_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`specie_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`specie_beforeInsert`
BEFORE INSERT ON `specie`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/specie_beforeUpdate.sql b/db/routines/vn/triggers/specie_beforeUpdate.sql
index 364b1d52f..d859e2cdc 100644
--- a/db/routines/vn/triggers/specie_beforeUpdate.sql
+++ b/db/routines/vn/triggers/specie_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`specie_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`specie_beforeUpdate`
BEFORE UPDATE ON `specie`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierAccount_afterDelete.sql b/db/routines/vn/triggers/supplierAccount_afterDelete.sql
index 23c2cd4a4..81e936140 100644
--- a/db/routines/vn/triggers/supplierAccount_afterDelete.sql
+++ b/db/routines/vn/triggers/supplierAccount_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierAccount_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierAccount_afterDelete`
AFTER DELETE ON `supplierAccount`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierAccount_beforeInsert.sql b/db/routines/vn/triggers/supplierAccount_beforeInsert.sql
index 512f172e1..231479ad6 100644
--- a/db/routines/vn/triggers/supplierAccount_beforeInsert.sql
+++ b/db/routines/vn/triggers/supplierAccount_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierAccount_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierAccount_beforeInsert`
BEFORE INSERT ON `supplierAccount`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierAccount_beforeUpdate.sql b/db/routines/vn/triggers/supplierAccount_beforeUpdate.sql
index 0fac19deb..2937227a4 100644
--- a/db/routines/vn/triggers/supplierAccount_beforeUpdate.sql
+++ b/db/routines/vn/triggers/supplierAccount_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierAccount_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierAccount_beforeUpdate`
BEFORE UPDATE ON `supplierAccount`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierAddress_afterDelete.sql b/db/routines/vn/triggers/supplierAddress_afterDelete.sql
index 69dd94dfe..0840d6fe9 100644
--- a/db/routines/vn/triggers/supplierAddress_afterDelete.sql
+++ b/db/routines/vn/triggers/supplierAddress_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierAddress_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierAddress_afterDelete`
AFTER DELETE ON `supplierAddress`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierAddress_beforeInsert.sql b/db/routines/vn/triggers/supplierAddress_beforeInsert.sql
index db8d0ea94..d66b9d3d2 100644
--- a/db/routines/vn/triggers/supplierAddress_beforeInsert.sql
+++ b/db/routines/vn/triggers/supplierAddress_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierAddress_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierAddress_beforeInsert`
BEFORE INSERT ON `supplierAddress`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierAddress_beforeUpdate.sql b/db/routines/vn/triggers/supplierAddress_beforeUpdate.sql
index 8e484e4de..94d70834e 100644
--- a/db/routines/vn/triggers/supplierAddress_beforeUpdate.sql
+++ b/db/routines/vn/triggers/supplierAddress_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierAddress_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierAddress_beforeUpdate`
BEFORE UPDATE ON `supplierAddress`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierContact_afterDelete.sql b/db/routines/vn/triggers/supplierContact_afterDelete.sql
index 401ec9e9e..18797e383 100644
--- a/db/routines/vn/triggers/supplierContact_afterDelete.sql
+++ b/db/routines/vn/triggers/supplierContact_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierContact_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierContact_afterDelete`
AFTER DELETE ON `supplierContact`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierContact_beforeInsert.sql b/db/routines/vn/triggers/supplierContact_beforeInsert.sql
index 76e78ba5a..444f9e9c8 100644
--- a/db/routines/vn/triggers/supplierContact_beforeInsert.sql
+++ b/db/routines/vn/triggers/supplierContact_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierContact_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierContact_beforeInsert`
BEFORE INSERT ON `supplierContact`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierContact_beforeUpdate.sql b/db/routines/vn/triggers/supplierContact_beforeUpdate.sql
index 24723656a..194218a91 100644
--- a/db/routines/vn/triggers/supplierContact_beforeUpdate.sql
+++ b/db/routines/vn/triggers/supplierContact_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierContact_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierContact_beforeUpdate`
BEFORE UPDATE ON `supplierContact`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierDms_afterDelete.sql b/db/routines/vn/triggers/supplierDms_afterDelete.sql
index 482decbb6..0dbf8e86b 100644
--- a/db/routines/vn/triggers/supplierDms_afterDelete.sql
+++ b/db/routines/vn/triggers/supplierDms_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierDms_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierDms_afterDelete`
AFTER DELETE ON `supplierDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierDms_beforeInsert.sql b/db/routines/vn/triggers/supplierDms_beforeInsert.sql
index 130428d1e..2098d6a34 100644
--- a/db/routines/vn/triggers/supplierDms_beforeInsert.sql
+++ b/db/routines/vn/triggers/supplierDms_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierDms_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierDms_beforeInsert`
BEFORE INSERT ON `supplierDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplierDms_beforeUpdate.sql b/db/routines/vn/triggers/supplierDms_beforeUpdate.sql
index 54dcef049..6e38018e5 100644
--- a/db/routines/vn/triggers/supplierDms_beforeUpdate.sql
+++ b/db/routines/vn/triggers/supplierDms_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplierDms_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplierDms_beforeUpdate`
BEFORE UPDATE ON `supplierDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplier_afterDelete.sql b/db/routines/vn/triggers/supplier_afterDelete.sql
index d4b8e0d21..d70830423 100644
--- a/db/routines/vn/triggers/supplier_afterDelete.sql
+++ b/db/routines/vn/triggers/supplier_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplier_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplier_afterDelete`
AFTER DELETE ON `supplier`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplier_afterUpdate.sql b/db/routines/vn/triggers/supplier_afterUpdate.sql
index e89df037f..07f31b5e0 100644
--- a/db/routines/vn/triggers/supplier_afterUpdate.sql
+++ b/db/routines/vn/triggers/supplier_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplier_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplier_afterUpdate`
BEFORE UPDATE ON `supplier`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplier_beforeInsert.sql b/db/routines/vn/triggers/supplier_beforeInsert.sql
index aef8d02ab..b141ec8fb 100644
--- a/db/routines/vn/triggers/supplier_beforeInsert.sql
+++ b/db/routines/vn/triggers/supplier_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplier_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplier_beforeInsert`
BEFORE INSERT ON `supplier`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/supplier_beforeUpdate.sql b/db/routines/vn/triggers/supplier_beforeUpdate.sql
index f462d6f57..af730b49d 100644
--- a/db/routines/vn/triggers/supplier_beforeUpdate.sql
+++ b/db/routines/vn/triggers/supplier_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`supplier_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplier_beforeUpdate`
BEFORE UPDATE ON `supplier`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/tag_beforeInsert.sql b/db/routines/vn/triggers/tag_beforeInsert.sql
index 27057754d..e24dec000 100644
--- a/db/routines/vn/triggers/tag_beforeInsert.sql
+++ b/db/routines/vn/triggers/tag_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`tag_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`tag_beforeInsert`
BEFORE INSERT ON `tag`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketCollection_afterDelete.sql b/db/routines/vn/triggers/ticketCollection_afterDelete.sql
index e0917452a..0b688022f 100644
--- a/db/routines/vn/triggers/ticketCollection_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketCollection_afterDelete.sql
@@ -1,7 +1,7 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketCollection_afterDelete`
- AFTER DELETE ON `ticketCollection`
- FOR EACH ROW
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketCollection_afterDelete`
+ AFTER DELETE ON `ticketCollection`
+ FOR EACH ROW
BEGIN
DECLARE vSalesRemaining INT;
@@ -24,5 +24,5 @@ BEGIN
END IF;
-END$$
-DELIMITER ;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/ticketDms_afterDelete.sql b/db/routines/vn/triggers/ticketDms_afterDelete.sql
index 834079520..40c10a494 100644
--- a/db/routines/vn/triggers/ticketDms_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketDms_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketDms_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketDms_afterDelete`
AFTER DELETE ON `ticketDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketDms_beforeDelete.sql b/db/routines/vn/triggers/ticketDms_beforeDelete.sql
index 9c251fba1..93c335be9 100644
--- a/db/routines/vn/triggers/ticketDms_beforeDelete.sql
+++ b/db/routines/vn/triggers/ticketDms_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketDms_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketDms_beforeDelete`
BEFORE DELETE ON `ticketDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketDms_beforeInsert.sql b/db/routines/vn/triggers/ticketDms_beforeInsert.sql
index 0c00dba28..9b35c6e71 100644
--- a/db/routines/vn/triggers/ticketDms_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketDms_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketDms_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketDms_beforeInsert`
BEFORE INSERT ON `ticketDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketDms_beforeUpdate.sql b/db/routines/vn/triggers/ticketDms_beforeUpdate.sql
index aab22dd99..6f3d1522a 100644
--- a/db/routines/vn/triggers/ticketDms_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketDms_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketDms_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketDms_beforeUpdate`
BEFORE UPDATE ON `ticketDms`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketObservation_afterDelete.sql b/db/routines/vn/triggers/ticketObservation_afterDelete.sql
index f8d88add6..160d3cbdd 100644
--- a/db/routines/vn/triggers/ticketObservation_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketObservation_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketObservation_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketObservation_afterDelete`
AFTER DELETE ON `ticketObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketObservation_beforeInsert.sql b/db/routines/vn/triggers/ticketObservation_beforeInsert.sql
index ce141d56a..9915b541b 100644
--- a/db/routines/vn/triggers/ticketObservation_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketObservation_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketObservation_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketObservation_beforeInsert`
BEFORE INSERT ON `ticketObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketObservation_beforeUpdate.sql b/db/routines/vn/triggers/ticketObservation_beforeUpdate.sql
index 466e17e85..a94a4160b 100644
--- a/db/routines/vn/triggers/ticketObservation_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketObservation_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketObservation_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketObservation_beforeUpdate`
BEFORE UPDATE ON `ticketObservation`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketPackaging_afterDelete.sql b/db/routines/vn/triggers/ticketPackaging_afterDelete.sql
index 320f7e01e..dfdc2ffe1 100644
--- a/db/routines/vn/triggers/ticketPackaging_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketPackaging_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketPackaging_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketPackaging_afterDelete`
AFTER DELETE ON `ticketPackaging`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketPackaging_beforeInsert.sql b/db/routines/vn/triggers/ticketPackaging_beforeInsert.sql
index f47a7ae35..17bf41daa 100644
--- a/db/routines/vn/triggers/ticketPackaging_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketPackaging_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketPackaging_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketPackaging_beforeInsert`
BEFORE INSERT ON `ticketPackaging`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketPackaging_beforeUpdate.sql b/db/routines/vn/triggers/ticketPackaging_beforeUpdate.sql
index 5d15249c4..9ce7ca3db 100644
--- a/db/routines/vn/triggers/ticketPackaging_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketPackaging_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketPackaging_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketPackaging_beforeUpdate`
BEFORE UPDATE ON `ticketPackaging`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketParking_beforeInsert.sql b/db/routines/vn/triggers/ticketParking_beforeInsert.sql
index 2add4f3ea..77c2aeab7 100644
--- a/db/routines/vn/triggers/ticketParking_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketParking_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketParking_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketParking_beforeInsert`
BEFORE INSERT ON `ticketParking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketRefund_afterDelete.sql b/db/routines/vn/triggers/ticketRefund_afterDelete.sql
index 167030d4a..677e25905 100644
--- a/db/routines/vn/triggers/ticketRefund_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketRefund_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRefund_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketRefund_afterDelete`
AFTER DELETE ON `ticketRefund`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketRefund_beforeInsert.sql b/db/routines/vn/triggers/ticketRefund_beforeInsert.sql
index ff8ce634a..61d9fe7a2 100644
--- a/db/routines/vn/triggers/ticketRefund_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketRefund_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRefund_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketRefund_beforeInsert`
BEFORE INSERT ON `ticketRefund`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql b/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql
index d809b5d99..807695de6 100644
--- a/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRefund_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketRefund_beforeUpdate`
BEFORE UPDATE ON `ticketRefund`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketRequest_afterDelete.sql b/db/routines/vn/triggers/ticketRequest_afterDelete.sql
index a8932a744..051db6b2e 100644
--- a/db/routines/vn/triggers/ticketRequest_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketRequest_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRequest_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketRequest_afterDelete`
AFTER DELETE ON `ticketRequest`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketRequest_beforeInsert.sql b/db/routines/vn/triggers/ticketRequest_beforeInsert.sql
index 00e659abc..fcad2f593 100644
--- a/db/routines/vn/triggers/ticketRequest_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketRequest_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRequest_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketRequest_beforeInsert`
BEFORE INSERT ON `ticketRequest`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketRequest_beforeUpdate.sql b/db/routines/vn/triggers/ticketRequest_beforeUpdate.sql
index 954df8ed3..a30b9464f 100644
--- a/db/routines/vn/triggers/ticketRequest_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketRequest_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRequest_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketRequest_beforeUpdate`
BEFORE UPDATE ON `ticketRequest`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketService_afterDelete.sql b/db/routines/vn/triggers/ticketService_afterDelete.sql
index ca2675ce8..9b1f6e812 100644
--- a/db/routines/vn/triggers/ticketService_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketService_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketService_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketService_afterDelete`
AFTER DELETE ON `ticketService`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketService_beforeInsert.sql b/db/routines/vn/triggers/ticketService_beforeInsert.sql
index 81b7e5e91..b886d764e 100644
--- a/db/routines/vn/triggers/ticketService_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketService_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketService_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketService_beforeInsert`
BEFORE INSERT ON `ticketService`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketService_beforeUpdate.sql b/db/routines/vn/triggers/ticketService_beforeUpdate.sql
index a24af8269..8b706d312 100644
--- a/db/routines/vn/triggers/ticketService_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketService_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketService_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketService_beforeUpdate`
BEFORE UPDATE ON `ticketService`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketTracking_afterDelete.sql b/db/routines/vn/triggers/ticketTracking_afterDelete.sql
index 2683e8d3c..aee31fe5f 100644
--- a/db/routines/vn/triggers/ticketTracking_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketTracking_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketTracking_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketTracking_afterDelete`
AFTER DELETE ON `ticketTracking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketTracking_afterInsert.sql b/db/routines/vn/triggers/ticketTracking_afterInsert.sql
index b246cd44f..c2dca56ef 100644
--- a/db/routines/vn/triggers/ticketTracking_afterInsert.sql
+++ b/db/routines/vn/triggers/ticketTracking_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketTracking_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketTracking_afterInsert`
AFTER INSERT ON `ticketTracking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketTracking_afterUpdate.sql b/db/routines/vn/triggers/ticketTracking_afterUpdate.sql
index ce5586569..fab8b3d34 100644
--- a/db/routines/vn/triggers/ticketTracking_afterUpdate.sql
+++ b/db/routines/vn/triggers/ticketTracking_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketTracking_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketTracking_afterUpdate`
AFTER UPDATE ON `ticketTracking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketTracking_beforeInsert.sql b/db/routines/vn/triggers/ticketTracking_beforeInsert.sql
index 685713aea..8c0b557ba 100644
--- a/db/routines/vn/triggers/ticketTracking_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketTracking_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketTracking_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketTracking_beforeInsert`
BEFORE INSERT ON `ticketTracking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketTracking_beforeUpdate.sql b/db/routines/vn/triggers/ticketTracking_beforeUpdate.sql
index ec875387e..3605ca360 100644
--- a/db/routines/vn/triggers/ticketTracking_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketTracking_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketTracking_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketTracking_beforeUpdate`
BEFORE UPDATE ON `ticketTracking`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketWeekly_afterDelete.sql b/db/routines/vn/triggers/ticketWeekly_afterDelete.sql
index d0ef0b8df..066ab2d08 100644
--- a/db/routines/vn/triggers/ticketWeekly_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketWeekly_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketWeekly_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketWeekly_afterDelete`
AFTER DELETE ON `ticketWeekly`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketWeekly_beforeInsert.sql b/db/routines/vn/triggers/ticketWeekly_beforeInsert.sql
index e4a61d203..a9f2780e4 100644
--- a/db/routines/vn/triggers/ticketWeekly_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketWeekly_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketWeekly_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketWeekly_beforeInsert`
BEFORE INSERT ON `ticketWeekly`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticketWeekly_beforeUpdate.sql b/db/routines/vn/triggers/ticketWeekly_beforeUpdate.sql
index 1a631bec1..76a633e23 100644
--- a/db/routines/vn/triggers/ticketWeekly_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketWeekly_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketWeekly_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticketWeekly_beforeUpdate`
BEFORE UPDATE ON `ticketWeekly`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticket_afterDelete.sql b/db/routines/vn/triggers/ticket_afterDelete.sql
index c80f3dbe1..bcde76e0a 100644
--- a/db/routines/vn/triggers/ticket_afterDelete.sql
+++ b/db/routines/vn/triggers/ticket_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticket_afterDelete`
AFTER DELETE ON `ticket`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticket_afterInsert.sql b/db/routines/vn/triggers/ticket_afterInsert.sql
index 0fad0aaee..d3936af0b 100644
--- a/db/routines/vn/triggers/ticket_afterInsert.sql
+++ b/db/routines/vn/triggers/ticket_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticket_afterInsert`
AFTER INSERT ON `ticket`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticket_afterUpdate.sql b/db/routines/vn/triggers/ticket_afterUpdate.sql
index 1c0a8be67..f6c5e6523 100644
--- a/db/routines/vn/triggers/ticket_afterUpdate.sql
+++ b/db/routines/vn/triggers/ticket_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticket_afterUpdate`
AFTER UPDATE ON `ticket`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticket_beforeDelete.sql b/db/routines/vn/triggers/ticket_beforeDelete.sql
index 02c5352e6..953fa509a 100644
--- a/db/routines/vn/triggers/ticket_beforeDelete.sql
+++ b/db/routines/vn/triggers/ticket_beforeDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_beforeDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticket_beforeDelete`
BEFORE DELETE ON `ticket`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticket_beforeInsert.sql b/db/routines/vn/triggers/ticket_beforeInsert.sql
index 7e0fc57b8..02b60b6b3 100644
--- a/db/routines/vn/triggers/ticket_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticket_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticket_beforeInsert`
BEFORE INSERT ON `ticket`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/ticket_beforeUpdate.sql b/db/routines/vn/triggers/ticket_beforeUpdate.sql
index 72831bc3d..3208a93d0 100644
--- a/db/routines/vn/triggers/ticket_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticket_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`ticket_beforeUpdate`
BEFORE UPDATE ON `ticket`
FOR EACH ROW
BEGIN
@@ -8,13 +8,22 @@ 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 AND NOT (
+ SELECT (COUNT(s.id) = COUNT(cb.saleFk)
+ AND SUM(s.quantity) = SUM(cb.quantity))
+ FROM sale s
+ LEFT JOIN claimBeginning cb ON cb.saleFk = s.id
+ WHERE s.ticketFk = NEW.id
+ ) 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
diff --git a/db/routines/vn/triggers/time_afterUpdate.sql b/db/routines/vn/triggers/time_afterUpdate.sql
index 1eb735923..e7f3551c5 100644
--- a/db/routines/vn/triggers/time_afterUpdate.sql
+++ b/db/routines/vn/triggers/time_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`time_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`time_afterUpdate`
AFTER UPDATE ON `time`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/town_afterDelete.sql b/db/routines/vn/triggers/town_afterDelete.sql
index e6ca82d80..51696b633 100644
--- a/db/routines/vn/triggers/town_afterDelete.sql
+++ b/db/routines/vn/triggers/town_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`town_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`town_afterDelete`
AFTER DELETE ON `town`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/town_afterUpdate.sql b/db/routines/vn/triggers/town_afterUpdate.sql
index 830428061..dd3fddebd 100644
--- a/db/routines/vn/triggers/town_afterUpdate.sql
+++ b/db/routines/vn/triggers/town_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`town_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`town_afterUpdate`
AFTER UPDATE ON `town`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/town_beforeInsert.sql b/db/routines/vn/triggers/town_beforeInsert.sql
index f3a060b2d..4a1ce887e 100644
--- a/db/routines/vn/triggers/town_beforeInsert.sql
+++ b/db/routines/vn/triggers/town_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`town_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`town_beforeInsert`
BEFORE INSERT ON `town`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/town_beforeUpdate.sql b/db/routines/vn/triggers/town_beforeUpdate.sql
index e607b3f41..fc1410d5c 100644
--- a/db/routines/vn/triggers/town_beforeUpdate.sql
+++ b/db/routines/vn/triggers/town_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`town_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`town_beforeUpdate`
BEFORE UPDATE ON `town`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/travelThermograph_afterDelete.sql b/db/routines/vn/triggers/travelThermograph_afterDelete.sql
index 14a875799..1e51426ef 100644
--- a/db/routines/vn/triggers/travelThermograph_afterDelete.sql
+++ b/db/routines/vn/triggers/travelThermograph_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travelThermograph_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travelThermograph_afterDelete`
AFTER DELETE ON `travelThermograph`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/travelThermograph_beforeInsert.sql b/db/routines/vn/triggers/travelThermograph_beforeInsert.sql
index 4ebe14e75..f56109fba 100644
--- a/db/routines/vn/triggers/travelThermograph_beforeInsert.sql
+++ b/db/routines/vn/triggers/travelThermograph_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travelThermograph_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travelThermograph_beforeInsert`
BEFORE INSERT ON `travelThermograph`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/travelThermograph_beforeUpdate.sql b/db/routines/vn/triggers/travelThermograph_beforeUpdate.sql
index 381e655f3..49f52f181 100644
--- a/db/routines/vn/triggers/travelThermograph_beforeUpdate.sql
+++ b/db/routines/vn/triggers/travelThermograph_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travelThermograph_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travelThermograph_beforeUpdate`
BEFORE UPDATE ON `travelThermograph`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/travel_afterDelete.sql b/db/routines/vn/triggers/travel_afterDelete.sql
index a528793e9..35fdfb4fc 100644
--- a/db/routines/vn/triggers/travel_afterDelete.sql
+++ b/db/routines/vn/triggers/travel_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travel_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travel_afterDelete`
AFTER DELETE ON `travel`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/travel_afterUpdate.sql b/db/routines/vn/triggers/travel_afterUpdate.sql
index 7cfe865f3..75de5ab4a 100644
--- a/db/routines/vn/triggers/travel_afterUpdate.sql
+++ b/db/routines/vn/triggers/travel_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travel_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travel_afterUpdate`
AFTER UPDATE ON `travel`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/travel_beforeInsert.sql b/db/routines/vn/triggers/travel_beforeInsert.sql
index e54a5d08b..4563c9a81 100644
--- a/db/routines/vn/triggers/travel_beforeInsert.sql
+++ b/db/routines/vn/triggers/travel_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travel_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travel_beforeInsert`
BEFORE INSERT ON `travel`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/travel_beforeUpdate.sql b/db/routines/vn/triggers/travel_beforeUpdate.sql
index 5e64ad5b3..33578fea1 100644
--- a/db/routines/vn/triggers/travel_beforeUpdate.sql
+++ b/db/routines/vn/triggers/travel_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travel_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travel_beforeUpdate`
BEFORE UPDATE ON `travel`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/vehicle_beforeInsert.sql b/db/routines/vn/triggers/vehicle_beforeInsert.sql
index 046e11703..22505ffb0 100644
--- a/db/routines/vn/triggers/vehicle_beforeInsert.sql
+++ b/db/routines/vn/triggers/vehicle_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`vehicle_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`vehicle_beforeInsert`
BEFORE INSERT ON `vehicle`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/vehicle_beforeUpdate.sql b/db/routines/vn/triggers/vehicle_beforeUpdate.sql
index d61005468..b435c90a4 100644
--- a/db/routines/vn/triggers/vehicle_beforeUpdate.sql
+++ b/db/routines/vn/triggers/vehicle_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`vehicle_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`vehicle_beforeUpdate`
BEFORE UPDATE ON `vehicle`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/warehouse_afterInsert.sql b/db/routines/vn/triggers/warehouse_afterInsert.sql
index 97a8c4152..9063d8e15 100644
--- a/db/routines/vn/triggers/warehouse_afterInsert.sql
+++ b/db/routines/vn/triggers/warehouse_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`warehouse_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`warehouse_afterInsert`
BEFORE UPDATE ON `warehouse`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerDocument_afterDelete.sql b/db/routines/vn/triggers/workerDocument_afterDelete.sql
index b266d3bf6..8d4878248 100644
--- a/db/routines/vn/triggers/workerDocument_afterDelete.sql
+++ b/db/routines/vn/triggers/workerDocument_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerDocument_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerDocument_afterDelete`
AFTER DELETE ON `workerDocument`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerDocument_beforeInsert.sql b/db/routines/vn/triggers/workerDocument_beforeInsert.sql
index 2a795ba38..f0675e68f 100644
--- a/db/routines/vn/triggers/workerDocument_beforeInsert.sql
+++ b/db/routines/vn/triggers/workerDocument_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerDocument_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerDocument_beforeInsert`
BEFORE INSERT ON `workerDocument`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerDocument_beforeUpdate.sql b/db/routines/vn/triggers/workerDocument_beforeUpdate.sql
index ffa137b3a..ffb6efd74 100644
--- a/db/routines/vn/triggers/workerDocument_beforeUpdate.sql
+++ b/db/routines/vn/triggers/workerDocument_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerDocument_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerDocument_beforeUpdate`
BEFORE UPDATE ON `workerDocument`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerIncome_afterDelete.sql b/db/routines/vn/triggers/workerIncome_afterDelete.sql
index e19df59a8..42580061e 100644
--- a/db/routines/vn/triggers/workerIncome_afterDelete.sql
+++ b/db/routines/vn/triggers/workerIncome_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerIncome_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerIncome_afterDelete`
AFTER DELETE ON `workerIncome`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerIncome_afterInsert.sql b/db/routines/vn/triggers/workerIncome_afterInsert.sql
index 8837f9c07..fcb24e42b 100644
--- a/db/routines/vn/triggers/workerIncome_afterInsert.sql
+++ b/db/routines/vn/triggers/workerIncome_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerIncome_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerIncome_afterInsert`
AFTER INSERT ON `workerIncome`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerIncome_afterUpdate.sql b/db/routines/vn/triggers/workerIncome_afterUpdate.sql
index a2584df22..f6b27c761 100644
--- a/db/routines/vn/triggers/workerIncome_afterUpdate.sql
+++ b/db/routines/vn/triggers/workerIncome_afterUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerIncome_afterUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerIncome_afterUpdate`
AFTER UPDATE ON `workerIncome`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerTimeControl_afterDelete.sql b/db/routines/vn/triggers/workerTimeControl_afterDelete.sql
index 19653c913..27432fccb 100644
--- a/db/routines/vn/triggers/workerTimeControl_afterDelete.sql
+++ b/db/routines/vn/triggers/workerTimeControl_afterDelete.sql
@@ -1,12 +1,12 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerTimeControl_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerTimeControl_afterDelete`
AFTER DELETE ON `workerTimeControl`
FOR EACH ROW
-BEGIN
- INSERT INTO workerLog
- SET `action` = 'delete',
- `changedModel` = 'WorkerTimeControl',
- `changedModelId` = OLD.id,
- `userFk` = account.myUser_getId();
+BEGIN
+ INSERT INTO workerLog
+ SET `action` = 'delete',
+ `changedModel` = 'WorkerTimeControl',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/workerTimeControl_afterInsert.sql b/db/routines/vn/triggers/workerTimeControl_afterInsert.sql
index b8b9c3b01..84e53a5cd 100644
--- a/db/routines/vn/triggers/workerTimeControl_afterInsert.sql
+++ b/db/routines/vn/triggers/workerTimeControl_afterInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerTimeControl_afterInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerTimeControl_afterInsert`
AFTER INSERT ON `workerTimeControl`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workerTimeControl_beforeInsert.sql b/db/routines/vn/triggers/workerTimeControl_beforeInsert.sql
index ad7acb784..4112c8de6 100644
--- a/db/routines/vn/triggers/workerTimeControl_beforeInsert.sql
+++ b/db/routines/vn/triggers/workerTimeControl_beforeInsert.sql
@@ -1,8 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerTimeControl_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerTimeControl_beforeInsert`
BEFORE INSERT ON `workerTimeControl`
FOR EACH ROW
-BEGIN
- SET NEW.editorFk = account.myUser_getId();
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/workerTimeControl_beforeUpdate.sql b/db/routines/vn/triggers/workerTimeControl_beforeUpdate.sql
index bb391ad61..3e673d847 100644
--- a/db/routines/vn/triggers/workerTimeControl_beforeUpdate.sql
+++ b/db/routines/vn/triggers/workerTimeControl_beforeUpdate.sql
@@ -1,8 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workerTimeControl_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workerTimeControl_beforeUpdate`
BEFORE UPDATE ON `workerTimeControl`
FOR EACH ROW
-BEGIN
- SET NEW.editorFk = account.myUser_getId();
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/worker_afterDelete.sql b/db/routines/vn/triggers/worker_afterDelete.sql
index 0104248ff..bf21547ac 100644
--- a/db/routines/vn/triggers/worker_afterDelete.sql
+++ b/db/routines/vn/triggers/worker_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`worker_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`worker_afterDelete`
AFTER DELETE ON `worker`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/worker_beforeInsert.sql b/db/routines/vn/triggers/worker_beforeInsert.sql
index 8830bd77e..24adbdbb6 100644
--- a/db/routines/vn/triggers/worker_beforeInsert.sql
+++ b/db/routines/vn/triggers/worker_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`worker_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`worker_beforeInsert`
BEFORE INSERT ON `worker`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/worker_beforeUpdate.sql b/db/routines/vn/triggers/worker_beforeUpdate.sql
index 05705d273..35b854836 100644
--- a/db/routines/vn/triggers/worker_beforeUpdate.sql
+++ b/db/routines/vn/triggers/worker_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`worker_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`worker_beforeUpdate`
BEFORE UPDATE ON `worker`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/workingHours_beforeInsert.sql b/db/routines/vn/triggers/workingHours_beforeInsert.sql
index dce726f10..57fd1e6f8 100644
--- a/db/routines/vn/triggers/workingHours_beforeInsert.sql
+++ b/db/routines/vn/triggers/workingHours_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`workingHours_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`workingHours_beforeInsert`
BEFORE INSERT ON `workingHours`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneEvent_afterDelete.sql b/db/routines/vn/triggers/zoneEvent_afterDelete.sql
index 1eecc21dc..aaf477752 100644
--- a/db/routines/vn/triggers/zoneEvent_afterDelete.sql
+++ b/db/routines/vn/triggers/zoneEvent_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneEvent_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneEvent_afterDelete`
AFTER DELETE ON `zoneEvent`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneEvent_beforeInsert.sql b/db/routines/vn/triggers/zoneEvent_beforeInsert.sql
index ae1542851..b8f5486f8 100644
--- a/db/routines/vn/triggers/zoneEvent_beforeInsert.sql
+++ b/db/routines/vn/triggers/zoneEvent_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneEvent_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneEvent_beforeInsert`
BEFORE INSERT ON `zoneEvent`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneEvent_beforeUpdate.sql b/db/routines/vn/triggers/zoneEvent_beforeUpdate.sql
index 09698a2c9..4ba7858d0 100644
--- a/db/routines/vn/triggers/zoneEvent_beforeUpdate.sql
+++ b/db/routines/vn/triggers/zoneEvent_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneEvent_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneEvent_beforeUpdate`
BEFORE UPDATE ON `zoneEvent`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneExclusion_afterDelete.sql b/db/routines/vn/triggers/zoneExclusion_afterDelete.sql
index 6c8a441aa..b701c0434 100644
--- a/db/routines/vn/triggers/zoneExclusion_afterDelete.sql
+++ b/db/routines/vn/triggers/zoneExclusion_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneExclusion_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneExclusion_afterDelete`
AFTER DELETE ON `zoneExclusion`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneExclusion_beforeInsert.sql b/db/routines/vn/triggers/zoneExclusion_beforeInsert.sql
index 6b2d2f5c7..59bd39ef5 100644
--- a/db/routines/vn/triggers/zoneExclusion_beforeInsert.sql
+++ b/db/routines/vn/triggers/zoneExclusion_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneExclusion_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneExclusion_beforeInsert`
BEFORE INSERT ON `zoneExclusion`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneExclusion_beforeUpdate.sql b/db/routines/vn/triggers/zoneExclusion_beforeUpdate.sql
index 1daa6d2f0..ac7626696 100644
--- a/db/routines/vn/triggers/zoneExclusion_beforeUpdate.sql
+++ b/db/routines/vn/triggers/zoneExclusion_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneExclusion_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneExclusion_beforeUpdate`
BEFORE UPDATE ON `zoneExclusion`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneGeo_beforeInsert.sql b/db/routines/vn/triggers/zoneGeo_beforeInsert.sql
index 1dbefbed9..7c9aa5004 100644
--- a/db/routines/vn/triggers/zoneGeo_beforeInsert.sql
+++ b/db/routines/vn/triggers/zoneGeo_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneGeo_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneGeo_beforeInsert`
BEFORE INSERT ON `zoneGeo`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneGeo_beforeUpdate.sql b/db/routines/vn/triggers/zoneGeo_beforeUpdate.sql
index 0fdd7a682..b916ee366 100644
--- a/db/routines/vn/triggers/zoneGeo_beforeUpdate.sql
+++ b/db/routines/vn/triggers/zoneGeo_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneGeo_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneGeo_beforeUpdate`
BEFORE UPDATE ON `zoneGeo`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneIncluded_afterDelete.sql b/db/routines/vn/triggers/zoneIncluded_afterDelete.sql
index 18332bb55..2990626ca 100644
--- a/db/routines/vn/triggers/zoneIncluded_afterDelete.sql
+++ b/db/routines/vn/triggers/zoneIncluded_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneIncluded_afterDelete`
AFTER DELETE ON `zoneIncluded`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneIncluded_beforeInsert.sql b/db/routines/vn/triggers/zoneIncluded_beforeInsert.sql
index 18895c9a5..614c153f6 100644
--- a/db/routines/vn/triggers/zoneIncluded_beforeInsert.sql
+++ b/db/routines/vn/triggers/zoneIncluded_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeInsert`
BEFORE INSERT ON `zoneIncluded`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneIncluded_beforeUpdate.sql b/db/routines/vn/triggers/zoneIncluded_beforeUpdate.sql
index e3f0a27e2..a718ca178 100644
--- a/db/routines/vn/triggers/zoneIncluded_beforeUpdate.sql
+++ b/db/routines/vn/triggers/zoneIncluded_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeUpdate`
BEFORE UPDATE ON `zoneIncluded`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneWarehouse_afterDelete.sql b/db/routines/vn/triggers/zoneWarehouse_afterDelete.sql
index 3befff38a..b72bc46d4 100644
--- a/db/routines/vn/triggers/zoneWarehouse_afterDelete.sql
+++ b/db/routines/vn/triggers/zoneWarehouse_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneWarehouse_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneWarehouse_afterDelete`
AFTER DELETE ON `zoneWarehouse`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneWarehouse_beforeInsert.sql b/db/routines/vn/triggers/zoneWarehouse_beforeInsert.sql
index 099e66587..68218d09b 100644
--- a/db/routines/vn/triggers/zoneWarehouse_beforeInsert.sql
+++ b/db/routines/vn/triggers/zoneWarehouse_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneWarehouse_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneWarehouse_beforeInsert`
BEFORE INSERT ON `zoneWarehouse`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zoneWarehouse_beforeUpdate.sql b/db/routines/vn/triggers/zoneWarehouse_beforeUpdate.sql
index 2a6563dc5..de63c802e 100644
--- a/db/routines/vn/triggers/zoneWarehouse_beforeUpdate.sql
+++ b/db/routines/vn/triggers/zoneWarehouse_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneWarehouse_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zoneWarehouse_beforeUpdate`
BEFORE UPDATE ON `zoneWarehouse`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zone_afterDelete.sql b/db/routines/vn/triggers/zone_afterDelete.sql
index 463fa89e8..036f657e6 100644
--- a/db/routines/vn/triggers/zone_afterDelete.sql
+++ b/db/routines/vn/triggers/zone_afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zone_afterDelete`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zone_afterDelete`
AFTER DELETE ON `zone`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zone_beforeInsert.sql b/db/routines/vn/triggers/zone_beforeInsert.sql
index e0449a989..c87e548d9 100644
--- a/db/routines/vn/triggers/zone_beforeInsert.sql
+++ b/db/routines/vn/triggers/zone_beforeInsert.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zone_beforeInsert`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zone_beforeInsert`
BEFORE INSERT ON `zone`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/zone_beforeUpdate.sql b/db/routines/vn/triggers/zone_beforeUpdate.sql
index f945ad32c..fe017ce6a 100644
--- a/db/routines/vn/triggers/zone_beforeUpdate.sql
+++ b/db/routines/vn/triggers/zone_beforeUpdate.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zone_beforeUpdate`
+CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zone_beforeUpdate`
BEFORE UPDATE ON `zone`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/views/NewView.sql b/db/routines/vn/views/NewView.sql
index 389564966..5276456d1 100644
--- a/db/routines/vn/views/NewView.sql
+++ b/db/routines/vn/views/NewView.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`NewView`
AS SELECT `c`.`id` AS `clientFk`,
diff --git a/db/routines/vn/views/agencyTerm.sql b/db/routines/vn/views/agencyTerm.sql
index 5f54cf39f..dbd80cad8 100644
--- a/db/routines/vn/views/agencyTerm.sql
+++ b/db/routines/vn/views/agencyTerm.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`agencyTerm`
AS SELECT `sat`.`agencyFk` AS `agencyFk`,
diff --git a/db/routines/vn/views/annualAverageInvoiced.sql b/db/routines/vn/views/annualAverageInvoiced.sql
index 30e81e1ec..4c74572d1 100644
--- a/db/routines/vn/views/annualAverageInvoiced.sql
+++ b/db/routines/vn/views/annualAverageInvoiced.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`annualAverageInvoiced`
AS SELECT `cec`.`clientFk` AS `clientFk`,
diff --git a/db/routines/vn/views/awbVolume.sql b/db/routines/vn/views/awbVolume.sql
index df3b1ed1a..fd0a12ca2 100644
--- a/db/routines/vn/views/awbVolume.sql
+++ b/db/routines/vn/views/awbVolume.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`awbVolume`
AS SELECT `t`.`awbFk` AS `awbFk`,
diff --git a/db/routines/vn/views/businessCalendar.sql b/db/routines/vn/views/businessCalendar.sql
index feda22793..3981a91d2 100644
--- a/db/routines/vn/views/businessCalendar.sql
+++ b/db/routines/vn/views/businessCalendar.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`businessCalendar`
AS SELECT `c`.`id` AS `id`,
diff --git a/db/routines/vn/views/buyer.sql b/db/routines/vn/views/buyer.sql
index 7114c50bc..4f668d35d 100644
--- a/db/routines/vn/views/buyer.sql
+++ b/db/routines/vn/views/buyer.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`buyer`
AS SELECT DISTINCT `u`.`id` AS `userFk`,
diff --git a/db/routines/vn/views/buyerSales.sql b/db/routines/vn/views/buyerSales.sql
index b67e17569..97c181419 100644
--- a/db/routines/vn/views/buyerSales.sql
+++ b/db/routines/vn/views/buyerSales.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`buyerSales`
AS SELECT `v`.`importe` AS `importe`,
diff --git a/db/routines/vn/views/clientLost.sql b/db/routines/vn/views/clientLost.sql
index 764782d08..e445776ce 100644
--- a/db/routines/vn/views/clientLost.sql
+++ b/db/routines/vn/views/clientLost.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`clientLost`
AS SELECT `c`.`id` AS `clientFk`,
diff --git a/db/routines/vn/views/clientPhoneBook.sql b/db/routines/vn/views/clientPhoneBook.sql
index 7ab2a99db..6fe2a5a5e 100644
--- a/db/routines/vn/views/clientPhoneBook.sql
+++ b/db/routines/vn/views/clientPhoneBook.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`clientPhoneBook`
AS SELECT `c`.`id` AS `clientFk`,
diff --git a/db/routines/vn/views/companyL10n.sql b/db/routines/vn/views/companyL10n.sql
index fa5c4c5d8..20292c4be 100644
--- a/db/routines/vn/views/companyL10n.sql
+++ b/db/routines/vn/views/companyL10n.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`companyL10n`
AS SELECT `c`.`id` AS `id`,
diff --git a/db/routines/vn/views/defaulter.sql b/db/routines/vn/views/defaulter.sql
index 9d48978b2..d98d6ccd7 100644
--- a/db/routines/vn/views/defaulter.sql
+++ b/db/routines/vn/views/defaulter.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`defaulter`
AS SELECT `d`.`clientFk` AS `clientFk`,
diff --git a/db/routines/vn/views/departmentTree.sql b/db/routines/vn/views/departmentTree.sql
index 6f5a1205a..36a21cb51 100644
--- a/db/routines/vn/views/departmentTree.sql
+++ b/db/routines/vn/views/departmentTree.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`departmentTree`
AS SELECT `node`.`id` AS `id`,
diff --git a/db/routines/vn/views/ediGenus.sql b/db/routines/vn/views/ediGenus.sql
index 4546afa33..bb56d54a8 100644
--- a/db/routines/vn/views/ediGenus.sql
+++ b/db/routines/vn/views/ediGenus.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ediGenus`
AS SELECT `g`.`genus_id` AS `id`,
diff --git a/db/routines/vn/views/ediSpecie.sql b/db/routines/vn/views/ediSpecie.sql
index 9587cb530..9d5893aa8 100644
--- a/db/routines/vn/views/ediSpecie.sql
+++ b/db/routines/vn/views/ediSpecie.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ediSpecie`
AS SELECT `s`.`specie_id` AS `id`,
diff --git a/db/routines/vn/views/ektSubAddress.sql b/db/routines/vn/views/ektSubAddress.sql
index 11f6e2e70..6684a9812 100644
--- a/db/routines/vn/views/ektSubAddress.sql
+++ b/db/routines/vn/views/ektSubAddress.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ektSubAddress`
AS SELECT `eea`.`sub` AS `sub`,
diff --git a/db/routines/vn/views/especialPrice.sql b/db/routines/vn/views/especialPrice.sql
index 79d3e1384..a5631544e 100644
--- a/db/routines/vn/views/especialPrice.sql
+++ b/db/routines/vn/views/especialPrice.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`especialPrice`
AS SELECT `sp`.`id` AS `id`,
diff --git a/db/routines/vn/views/exchangeInsuranceEntry.sql b/db/routines/vn/views/exchangeInsuranceEntry.sql
index e9c7a7bbe..dc103eed4 100644
--- a/db/routines/vn/views/exchangeInsuranceEntry.sql
+++ b/db/routines/vn/views/exchangeInsuranceEntry.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`exchangeInsuranceEntry`
AS SELECT max(`tr`.`landed`) AS `dated`,
diff --git a/db/routines/vn/views/exchangeInsuranceIn.sql b/db/routines/vn/views/exchangeInsuranceIn.sql
index aa27cfb4c..93ca8e2da 100644
--- a/db/routines/vn/views/exchangeInsuranceIn.sql
+++ b/db/routines/vn/views/exchangeInsuranceIn.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`exchangeInsuranceIn`
AS SELECT `exchangeInsuranceInPrevious`.`dated` AS `dated`,
diff --git a/db/routines/vn/views/exchangeInsuranceInPrevious.sql b/db/routines/vn/views/exchangeInsuranceInPrevious.sql
index 3f997e8bf..afafe76e3 100644
--- a/db/routines/vn/views/exchangeInsuranceInPrevious.sql
+++ b/db/routines/vn/views/exchangeInsuranceInPrevious.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`exchangeInsuranceInPrevious`
AS SELECT `ei`.`dueDated` AS `dated`,
diff --git a/db/routines/vn/views/exchangeInsuranceOut.sql b/db/routines/vn/views/exchangeInsuranceOut.sql
index 5c41dbb24..1975ba594 100644
--- a/db/routines/vn/views/exchangeInsuranceOut.sql
+++ b/db/routines/vn/views/exchangeInsuranceOut.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`exchangeInsuranceOut`
AS SELECT `p`.`received` AS `received`,
diff --git a/db/routines/vn/views/expeditionCommon.sql b/db/routines/vn/views/expeditionCommon.sql
index fcf36a7d8..5687bc348 100644
--- a/db/routines/vn/views/expeditionCommon.sql
+++ b/db/routines/vn/views/expeditionCommon.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionCommon`
AS SELECT `rs`.`id` AS `truckFk`,
diff --git a/db/routines/vn/views/expeditionPallet_Print.sql b/db/routines/vn/views/expeditionPallet_Print.sql
index aab725ebe..7b933a0a1 100644
--- a/db/routines/vn/views/expeditionPallet_Print.sql
+++ b/db/routines/vn/views/expeditionPallet_Print.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionPallet_Print`
AS SELECT `rs2`.`description` AS `truck`,
diff --git a/db/routines/vn/views/expeditionRoute_Monitor.sql b/db/routines/vn/views/expeditionRoute_Monitor.sql
index 7eef40425..9b46c8237 100644
--- a/db/routines/vn/views/expeditionRoute_Monitor.sql
+++ b/db/routines/vn/views/expeditionRoute_Monitor.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionRoute_Monitor`
AS SELECT `r`.`id` AS `routeFk`,
diff --git a/db/routines/vn/views/expeditionRoute_freeTickets.sql b/db/routines/vn/views/expeditionRoute_freeTickets.sql
index 85e6297c9..d49cee22e 100644
--- a/db/routines/vn/views/expeditionRoute_freeTickets.sql
+++ b/db/routines/vn/views/expeditionRoute_freeTickets.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionRoute_freeTickets`
AS SELECT `t`.`routeFk` AS `routeFk`,
diff --git a/db/routines/vn/views/expeditionScan_Monitor.sql b/db/routines/vn/views/expeditionScan_Monitor.sql
index 94bda1863..6d2e855de 100644
--- a/db/routines/vn/views/expeditionScan_Monitor.sql
+++ b/db/routines/vn/views/expeditionScan_Monitor.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionScan_Monitor`
AS SELECT `rs`.`id` AS `truckFk`,
diff --git a/db/routines/vn/views/expeditionSticker.sql b/db/routines/vn/views/expeditionSticker.sql
index ef0743527..f9855d764 100644
--- a/db/routines/vn/views/expeditionSticker.sql
+++ b/db/routines/vn/views/expeditionSticker.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionSticker`
AS SELECT `e`.`id` AS `expeditionFk`,
diff --git a/db/routines/vn/views/expeditionTicket_NoBoxes.sql b/db/routines/vn/views/expeditionTicket_NoBoxes.sql
index 75218c7a9..be3619b21 100644
--- a/db/routines/vn/views/expeditionTicket_NoBoxes.sql
+++ b/db/routines/vn/views/expeditionTicket_NoBoxes.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionTicket_NoBoxes`
AS SELECT `t`.`id` AS `ticketFk`,
diff --git a/db/routines/vn/views/expeditionTimeExpended.sql b/db/routines/vn/views/expeditionTimeExpended.sql
index 65aeb72b2..3666f51d9 100644
--- a/db/routines/vn/views/expeditionTimeExpended.sql
+++ b/db/routines/vn/views/expeditionTimeExpended.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionTimeExpended`
AS SELECT `e`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/expeditionTruck.sql b/db/routines/vn/views/expeditionTruck.sql
index 065869de0..a5e0cf350 100644
--- a/db/routines/vn/views/expeditionTruck.sql
+++ b/db/routines/vn/views/expeditionTruck.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionTruck`
AS SELECT `rs`.`id` AS `id`,
diff --git a/db/routines/vn/views/firstTicketShipped.sql b/db/routines/vn/views/firstTicketShipped.sql
index c01a17976..c2e9f55e6 100644
--- a/db/routines/vn/views/firstTicketShipped.sql
+++ b/db/routines/vn/views/firstTicketShipped.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`firstTicketShipped`
AS SELECT min(`vn`.`ticket`.`shipped`) AS `shipped`,
diff --git a/db/routines/vn/views/floraHollandBuyedItems.sql b/db/routines/vn/views/floraHollandBuyedItems.sql
index b695c49fd..b8699a889 100644
--- a/db/routines/vn/views/floraHollandBuyedItems.sql
+++ b/db/routines/vn/views/floraHollandBuyedItems.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`floraHollandBuyedItems`
AS SELECT `b`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/inkL10n.sql b/db/routines/vn/views/inkL10n.sql
index 14958ff0a..dfe449d96 100644
--- a/db/routines/vn/views/inkL10n.sql
+++ b/db/routines/vn/views/inkL10n.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`inkL10n`
AS SELECT `k`.`id` AS `id`,
diff --git a/db/routines/vn/views/invoiceCorrectionDataSource.sql b/db/routines/vn/views/invoiceCorrectionDataSource.sql
index d401c20f1..34dc39d85 100644
--- a/db/routines/vn/views/invoiceCorrectionDataSource.sql
+++ b/db/routines/vn/views/invoiceCorrectionDataSource.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`invoiceCorrectionDataSource`
AS SELECT `s`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/itemBotanicalWithGenus.sql b/db/routines/vn/views/itemBotanicalWithGenus.sql
index 3bc0b943d..fda6e6cc4 100644
--- a/db/routines/vn/views/itemBotanicalWithGenus.sql
+++ b/db/routines/vn/views/itemBotanicalWithGenus.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemBotanicalWithGenus`
AS SELECT `ib`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/itemCategoryL10n.sql b/db/routines/vn/views/itemCategoryL10n.sql
index 08a7c7321..8d47ca662 100644
--- a/db/routines/vn/views/itemCategoryL10n.sql
+++ b/db/routines/vn/views/itemCategoryL10n.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemCategoryL10n`
AS SELECT `c`.`id` AS `id`,
diff --git a/db/routines/vn/views/itemColor.sql b/db/routines/vn/views/itemColor.sql
index 5ab8a4c4f..f2c3f87e0 100644
--- a/db/routines/vn/views/itemColor.sql
+++ b/db/routines/vn/views/itemColor.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemColor`
AS SELECT `it`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/itemEntryIn.sql b/db/routines/vn/views/itemEntryIn.sql
index 184ccbf59..4f7855d2b 100644
--- a/db/routines/vn/views/itemEntryIn.sql
+++ b/db/routines/vn/views/itemEntryIn.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemEntryIn`
AS SELECT `t`.`warehouseInFk` AS `warehouseInFk`,
diff --git a/db/routines/vn/views/itemEntryOut.sql b/db/routines/vn/views/itemEntryOut.sql
index 82b065985..1e8718c53 100644
--- a/db/routines/vn/views/itemEntryOut.sql
+++ b/db/routines/vn/views/itemEntryOut.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemEntryOut`
AS SELECT `t`.`warehouseOutFk` AS `warehouseOutFk`,
diff --git a/db/routines/vn/views/itemInk.sql b/db/routines/vn/views/itemInk.sql
index d13a862e7..6a5a10388 100644
--- a/db/routines/vn/views/itemInk.sql
+++ b/db/routines/vn/views/itemInk.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemInk`
AS SELECT `i`.`longName` AS `longName`,
diff --git a/db/routines/vn/views/itemPlacementSupplyList.sql b/db/routines/vn/views/itemPlacementSupplyList.sql
index 10e7ae3ef..d8d3cc705 100644
--- a/db/routines/vn/views/itemPlacementSupplyList.sql
+++ b/db/routines/vn/views/itemPlacementSupplyList.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemPlacementSupplyList`
AS SELECT `ips`.`id` AS `id`,
diff --git a/db/routines/vn/views/itemProductor.sql b/db/routines/vn/views/itemProductor.sql
index f6cb0eb19..8d7833489 100644
--- a/db/routines/vn/views/itemProductor.sql
+++ b/db/routines/vn/views/itemProductor.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemProductor`
AS SELECT `it`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/itemSearch.sql b/db/routines/vn/views/itemSearch.sql
index 6a21b9e92..0b51b7397 100644
--- a/db/routines/vn/views/itemSearch.sql
+++ b/db/routines/vn/views/itemSearch.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemSearch`
AS SELECT `s`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/itemShelvingAvailable.sql b/db/routines/vn/views/itemShelvingAvailable.sql
index 868d6a963..561569285 100644
--- a/db/routines/vn/views/itemShelvingAvailable.sql
+++ b/db/routines/vn/views/itemShelvingAvailable.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemShelvingAvailable`
AS SELECT `s`.`id` AS `saleFk`,
diff --git a/db/routines/vn/views/itemShelvingList.sql b/db/routines/vn/views/itemShelvingList.sql
index 570bf0be6..457d6f28a 100644
--- a/db/routines/vn/views/itemShelvingList.sql
+++ b/db/routines/vn/views/itemShelvingList.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemShelvingList`
AS SELECT `ish`.`shelvingFk` AS `shelvingFk`,
diff --git a/db/routines/vn/views/itemShelvingPlacementSupplyStock.sql b/db/routines/vn/views/itemShelvingPlacementSupplyStock.sql
index 217aaf6ac..fa1c11314 100644
--- a/db/routines/vn/views/itemShelvingPlacementSupplyStock.sql
+++ b/db/routines/vn/views/itemShelvingPlacementSupplyStock.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemShelvingPlacementSupplyStock`
AS SELECT `ish`.`id` AS `itemShelvingFk`,
diff --git a/db/routines/vn/views/itemShelvingSaleSum.sql b/db/routines/vn/views/itemShelvingSaleSum.sql
index 566e20a69..9a402d6f4 100644
--- a/db/routines/vn/views/itemShelvingSaleSum.sql
+++ b/db/routines/vn/views/itemShelvingSaleSum.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemShelvingSaleSum`
AS SELECT `iss`.`id` AS `id`,
diff --git a/db/routines/vn/views/itemShelvingStock.sql b/db/routines/vn/views/itemShelvingStock.sql
index e0825eae5..41777eaec 100644
--- a/db/routines/vn/views/itemShelvingStock.sql
+++ b/db/routines/vn/views/itemShelvingStock.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemShelvingStock`
AS SELECT `ish`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/itemShelvingStockFull.sql b/db/routines/vn/views/itemShelvingStockFull.sql
index 71ce5ed79..c767823d6 100644
--- a/db/routines/vn/views/itemShelvingStockFull.sql
+++ b/db/routines/vn/views/itemShelvingStockFull.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemShelvingStockFull`
AS SELECT `ish`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/itemShelvingStockRemoved.sql b/db/routines/vn/views/itemShelvingStockRemoved.sql
index fb201e0f1..7baf3a6c6 100644
--- a/db/routines/vn/views/itemShelvingStockRemoved.sql
+++ b/db/routines/vn/views/itemShelvingStockRemoved.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemShelvingStockRemoved`
AS SELECT `ish`.`id` AS `itemShelvingFk`,
diff --git a/db/routines/vn/views/itemTagged.sql b/db/routines/vn/views/itemTagged.sql
index c22354bda..db7460fcc 100644
--- a/db/routines/vn/views/itemTagged.sql
+++ b/db/routines/vn/views/itemTagged.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemTagged`
AS SELECT DISTINCT `vn`.`itemTag`.`itemFk` AS `itemFk`
diff --git a/db/routines/vn/views/itemTaxCountrySpain.sql b/db/routines/vn/views/itemTaxCountrySpain.sql
index 9dfaf0b41..992535bdc 100644
--- a/db/routines/vn/views/itemTaxCountrySpain.sql
+++ b/db/routines/vn/views/itemTaxCountrySpain.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemTaxCountrySpain`
AS SELECT `i`.`id` AS `id`,
diff --git a/db/routines/vn/views/itemTicketOut.sql b/db/routines/vn/views/itemTicketOut.sql
index d9bbd54bd..7a5e17d76 100644
--- a/db/routines/vn/views/itemTicketOut.sql
+++ b/db/routines/vn/views/itemTicketOut.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemTicketOut`
AS SELECT `t`.`warehouseFk` AS `warehouseFk`,
diff --git a/db/routines/vn/views/itemTypeL10n.sql b/db/routines/vn/views/itemTypeL10n.sql
index 03d72f0d4..66ef9ac90 100644
--- a/db/routines/vn/views/itemTypeL10n.sql
+++ b/db/routines/vn/views/itemTypeL10n.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`itemTypeL10n`
AS SELECT `t`.`id` AS `id`,
diff --git a/db/routines/vn/views/item_Free_Id.sql b/db/routines/vn/views/item_Free_Id.sql
index 36464004c..d148a18e6 100644
--- a/db/routines/vn/views/item_Free_Id.sql
+++ b/db/routines/vn/views/item_Free_Id.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`item_Free_Id`
AS SELECT `i1`.`id` + 1 AS `newId`
diff --git a/db/routines/vn/views/labelInfo.sql b/db/routines/vn/views/labelInfo.sql
index ccc6fc6ac..eef0145fb 100644
--- a/db/routines/vn/views/labelInfo.sql
+++ b/db/routines/vn/views/labelInfo.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`labelInfo`
AS SELECT `i`.`id` AS `itemId`,
diff --git a/db/routines/vn/views/lastHourProduction.sql b/db/routines/vn/views/lastHourProduction.sql
index 90bc0cd76..e0b66481d 100644
--- a/db/routines/vn/views/lastHourProduction.sql
+++ b/db/routines/vn/views/lastHourProduction.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`lastHourProduction`
AS SELECT `t`.`warehouseFk` AS `warehouseFk`,
diff --git a/db/routines/vn/views/lastPurchases.sql b/db/routines/vn/views/lastPurchases.sql
index 04a9f8c05..3099acd00 100644
--- a/db/routines/vn/views/lastPurchases.sql
+++ b/db/routines/vn/views/lastPurchases.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`lastPurchases`
AS SELECT `tr`.`landed` AS `landed`,
diff --git a/db/routines/vn/views/lastTopClaims.sql b/db/routines/vn/views/lastTopClaims.sql
index 0bc36e3c2..93dbc4b45 100644
--- a/db/routines/vn/views/lastTopClaims.sql
+++ b/db/routines/vn/views/lastTopClaims.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`lastTopClaims`
AS SELECT `s`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/mistake.sql b/db/routines/vn/views/mistake.sql
index 0ed4dccf2..ca9223c3b 100644
--- a/db/routines/vn/views/mistake.sql
+++ b/db/routines/vn/views/mistake.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`mistake`
AS SELECT `wr`.`code` AS `revisador`,
diff --git a/db/routines/vn/views/mistakeRatio.sql b/db/routines/vn/views/mistakeRatio.sql
index 4b7fd5a1f..0aa80a966 100644
--- a/db/routines/vn/views/mistakeRatio.sql
+++ b/db/routines/vn/views/mistakeRatio.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`mistakeRatio`
AS SELECT `wr`.`code` AS `revisador`,
diff --git a/db/routines/vn/views/newBornSales.sql b/db/routines/vn/views/newBornSales.sql
index d34eff4ef..b4aac208c 100644
--- a/db/routines/vn/views/newBornSales.sql
+++ b/db/routines/vn/views/newBornSales.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`newBornSales`
AS SELECT `v`.`importe` AS `amount`,
diff --git a/db/routines/vn/views/operatorWorkerCode.sql b/db/routines/vn/views/operatorWorkerCode.sql
index 340d833a7..343f74254 100644
--- a/db/routines/vn/views/operatorWorkerCode.sql
+++ b/db/routines/vn/views/operatorWorkerCode.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`operatorWorkerCode`
AS SELECT `o`.`workerFk` AS `workerFk`,
diff --git a/db/routines/vn/views/originL10n.sql b/db/routines/vn/views/originL10n.sql
index 2ff368e14..ffceccd50 100644
--- a/db/routines/vn/views/originL10n.sql
+++ b/db/routines/vn/views/originL10n.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`originL10n`
AS SELECT `o`.`id` AS `id`,
diff --git a/db/routines/vn/views/packageEquivalentItem.sql b/db/routines/vn/views/packageEquivalentItem.sql
index ba2897c14..767fa326e 100644
--- a/db/routines/vn/views/packageEquivalentItem.sql
+++ b/db/routines/vn/views/packageEquivalentItem.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`packageEquivalentItem`
AS SELECT `p`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/paymentExchangeInsurance.sql b/db/routines/vn/views/paymentExchangeInsurance.sql
index f3e07eaaf..c5800e48b 100644
--- a/db/routines/vn/views/paymentExchangeInsurance.sql
+++ b/db/routines/vn/views/paymentExchangeInsurance.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`paymentExchangeInsurance`
AS SELECT `ei`.`id` AS `pago_sdc_id`,
diff --git a/db/routines/vn/views/payrollCenter.sql b/db/routines/vn/views/payrollCenter.sql
index dfe7e4728..f06dc702f 100644
--- a/db/routines/vn/views/payrollCenter.sql
+++ b/db/routines/vn/views/payrollCenter.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`payrollCenter`
AS SELECT `b`.`workCenterFkA3` AS `codCenter`,
diff --git a/db/routines/vn/views/personMedia.sql b/db/routines/vn/views/personMedia.sql
index d17410ef1..367f67c8e 100644
--- a/db/routines/vn/views/personMedia.sql
+++ b/db/routines/vn/views/personMedia.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`personMedia`
AS SELECT `c`.`id` AS `workerFk`,
diff --git a/db/routines/vn/views/phoneBook.sql b/db/routines/vn/views/phoneBook.sql
index 5fcafe99c..c51b912aa 100644
--- a/db/routines/vn/views/phoneBook.sql
+++ b/db/routines/vn/views/phoneBook.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`phoneBook`
AS SELECT 'C' AS `Tipo`,
diff --git a/db/routines/vn/views/productionVolume.sql b/db/routines/vn/views/productionVolume.sql
index fd83b96bc..14cf5518b 100644
--- a/db/routines/vn/views/productionVolume.sql
+++ b/db/routines/vn/views/productionVolume.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`productionVolume`
AS SELECT HOUR(`e`.`created`) AS `hora`,
diff --git a/db/routines/vn/views/productionVolume_LastHour.sql b/db/routines/vn/views/productionVolume_LastHour.sql
index 561a23f9b..bafb5a67a 100644
--- a/db/routines/vn/views/productionVolume_LastHour.sql
+++ b/db/routines/vn/views/productionVolume_LastHour.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`productionVolume_LastHour`
AS SELECT cast(
diff --git a/db/routines/vn/views/role.sql b/db/routines/vn/views/role.sql
index 310951570..db2fa109e 100644
--- a/db/routines/vn/views/role.sql
+++ b/db/routines/vn/views/role.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`role`
AS SELECT `account`.`role`.`id` AS `id`,
diff --git a/db/routines/vn/views/routesControl.sql b/db/routines/vn/views/routesControl.sql
index 282dd21e3..9f9e23da1 100644
--- a/db/routines/vn/views/routesControl.sql
+++ b/db/routines/vn/views/routesControl.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`routesControl`
AS SELECT `t`.`routeFk` AS `routeFk`,
diff --git a/db/routines/vn/views/saleCost.sql b/db/routines/vn/views/saleCost.sql
index 304b9e3a3..27f492abd 100644
--- a/db/routines/vn/views/saleCost.sql
+++ b/db/routines/vn/views/saleCost.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`saleCost`
AS SELECT `s`.`itemFk` AS `itemFk`,
diff --git a/db/routines/vn/views/saleMistakeList.sql b/db/routines/vn/views/saleMistakeList.sql
index d362e0d97..0cad951fe 100644
--- a/db/routines/vn/views/saleMistakeList.sql
+++ b/db/routines/vn/views/saleMistakeList.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`saleMistakeList`
AS SELECT `st`.`saleFk` AS `saleFk`,
diff --git a/db/routines/vn/views/saleMistake_list__2.sql b/db/routines/vn/views/saleMistake_list__2.sql
index 1f40a89d9..e65761c75 100644
--- a/db/routines/vn/views/saleMistake_list__2.sql
+++ b/db/routines/vn/views/saleMistake_list__2.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`saleMistake_list__2`
AS SELECT `st`.`saleFk` AS `saleFk`,
diff --git a/db/routines/vn/views/saleSaleTracking.sql b/db/routines/vn/views/saleSaleTracking.sql
index 9ada798cf..7e6531a01 100644
--- a/db/routines/vn/views/saleSaleTracking.sql
+++ b/db/routines/vn/views/saleSaleTracking.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`saleSaleTracking`
AS SELECT DISTINCT `st`.`saleFk` AS `saleFk`
diff --git a/db/routines/vn/views/saleValue.sql b/db/routines/vn/views/saleValue.sql
index 2dee4695e..84741990f 100644
--- a/db/routines/vn/views/saleValue.sql
+++ b/db/routines/vn/views/saleValue.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`saleValue`
AS SELECT `wh`.`name` AS `warehouse`,
diff --git a/db/routines/vn/views/saleVolume.sql b/db/routines/vn/views/saleVolume.sql
index ffc6714c6..a1a1b2925 100644
--- a/db/routines/vn/views/saleVolume.sql
+++ b/db/routines/vn/views/saleVolume.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`saleVolume`
AS SELECT `s`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/saleVolume_Today_VNH.sql b/db/routines/vn/views/saleVolume_Today_VNH.sql
index c36779146..f81253a76 100644
--- a/db/routines/vn/views/saleVolume_Today_VNH.sql
+++ b/db/routines/vn/views/saleVolume_Today_VNH.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`saleVolume_Today_VNH`
AS SELECT `t`.`nickname` AS `Cliente`,
diff --git a/db/routines/vn/views/sale_freightComponent.sql b/db/routines/vn/views/sale_freightComponent.sql
index 269a8cca1..a76a8666c 100644
--- a/db/routines/vn/views/sale_freightComponent.sql
+++ b/db/routines/vn/views/sale_freightComponent.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`sale_freightComponent`
AS SELECT `t`.`id` AS `ticketFk`,
diff --git a/db/routines/vn/views/salesPersonSince.sql b/db/routines/vn/views/salesPersonSince.sql
index 4234ecac4..0e1646f1b 100644
--- a/db/routines/vn/views/salesPersonSince.sql
+++ b/db/routines/vn/views/salesPersonSince.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`salesPersonSince`
AS SELECT `b`.`workerFk` AS `workerFk`,
diff --git a/db/routines/vn/views/salesPreparedLastHour.sql b/db/routines/vn/views/salesPreparedLastHour.sql
index caa7866cb..33e86b29c 100644
--- a/db/routines/vn/views/salesPreparedLastHour.sql
+++ b/db/routines/vn/views/salesPreparedLastHour.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`salesPreparedLastHour`
AS SELECT `t`.`warehouseFk` AS `warehouseFk`,
diff --git a/db/routines/vn/views/salesPreviousPreparated.sql b/db/routines/vn/views/salesPreviousPreparated.sql
index 40ae29eda..bd55862c9 100644
--- a/db/routines/vn/views/salesPreviousPreparated.sql
+++ b/db/routines/vn/views/salesPreviousPreparated.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`salesPreviousPreparated`
AS SELECT `st`.`saleFk` AS `saleFk`
diff --git a/db/routines/vn/views/supplierPackaging.sql b/db/routines/vn/views/supplierPackaging.sql
index 45a9d46d3..01c9c69e7 100644
--- a/db/routines/vn/views/supplierPackaging.sql
+++ b/db/routines/vn/views/supplierPackaging.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`supplierPackaging`
AS SELECT `e`.`supplierFk` AS `supplierFk`,
diff --git a/db/routines/vn/views/tagL10n.sql b/db/routines/vn/views/tagL10n.sql
index 982122b13..68ed9541c 100644
--- a/db/routines/vn/views/tagL10n.sql
+++ b/db/routines/vn/views/tagL10n.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`tagL10n`
AS SELECT `t`.`id` AS `id`,
diff --git a/db/routines/vn/views/ticketDownBuffer.sql b/db/routines/vn/views/ticketDownBuffer.sql
index 4d157f20c..e951de9e0 100644
--- a/db/routines/vn/views/ticketDownBuffer.sql
+++ b/db/routines/vn/views/ticketDownBuffer.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketDownBuffer`
AS SELECT `td`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/ticketLastUpdated.sql b/db/routines/vn/views/ticketLastUpdated.sql
index 96b6eaa17..8a6a66c8e 100644
--- a/db/routines/vn/views/ticketLastUpdated.sql
+++ b/db/routines/vn/views/ticketLastUpdated.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketLastUpdated`
AS SELECT `ticketLastUpdatedList`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/ticketLastUpdatedList.sql b/db/routines/vn/views/ticketLastUpdatedList.sql
index bfc769e47..5d087a596 100644
--- a/db/routines/vn/views/ticketLastUpdatedList.sql
+++ b/db/routines/vn/views/ticketLastUpdatedList.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketLastUpdatedList`
AS SELECT `s`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/ticketNotInvoiced.sql b/db/routines/vn/views/ticketNotInvoiced.sql
index c35b414ce..f966bf85d 100644
--- a/db/routines/vn/views/ticketNotInvoiced.sql
+++ b/db/routines/vn/views/ticketNotInvoiced.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketNotInvoiced`
AS SELECT `t`.`companyFk` AS `companyFk`,
diff --git a/db/routines/vn/views/ticketPackingList.sql b/db/routines/vn/views/ticketPackingList.sql
index bafe3c00c..c185bb7c0 100644
--- a/db/routines/vn/views/ticketPackingList.sql
+++ b/db/routines/vn/views/ticketPackingList.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketPackingList`
AS SELECT `t`.`nickname` AS `nickname`,
diff --git a/db/routines/vn/views/ticketPreviousPreparingList.sql b/db/routines/vn/views/ticketPreviousPreparingList.sql
index cd18b3a7c..4e19c0bb8 100644
--- a/db/routines/vn/views/ticketPreviousPreparingList.sql
+++ b/db/routines/vn/views/ticketPreviousPreparingList.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketPreviousPreparingList`
AS SELECT `s`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/ticketState.sql b/db/routines/vn/views/ticketState.sql
index 118a58b34..588c5c61a 100644
--- a/db/routines/vn/views/ticketState.sql
+++ b/db/routines/vn/views/ticketState.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketState`
AS SELECT `tt`.`created` AS `updated`,
diff --git a/db/routines/vn/views/ticketStateToday.sql b/db/routines/vn/views/ticketStateToday.sql
index 1f10aceb1..0c9e01188 100644
--- a/db/routines/vn/views/ticketStateToday.sql
+++ b/db/routines/vn/views/ticketStateToday.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`ticketStateToday`
AS SELECT `ts`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/tr2.sql b/db/routines/vn/views/tr2.sql
index 5abc2bfa8..525554f04 100644
--- a/db/routines/vn/views/tr2.sql
+++ b/db/routines/vn/views/tr2.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`tr2`
AS SELECT `vn`.`travel`.`id` AS `id`,
diff --git a/db/routines/vn/views/traceabilityBuy.sql b/db/routines/vn/views/traceabilityBuy.sql
index 0257c2f5d..8189a8b0e 100644
--- a/db/routines/vn/views/traceabilityBuy.sql
+++ b/db/routines/vn/views/traceabilityBuy.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`traceabilityBuy`
AS SELECT `b`.`id` AS `buyFk`,
diff --git a/db/routines/vn/views/traceabilitySale.sql b/db/routines/vn/views/traceabilitySale.sql
index 9caf11d5e..a251e11d5 100644
--- a/db/routines/vn/views/traceabilitySale.sql
+++ b/db/routines/vn/views/traceabilitySale.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`traceabilitySale`
AS SELECT `s`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/workerBusinessDated.sql b/db/routines/vn/views/workerBusinessDated.sql
index 83d6eb48c..783c18ffd 100644
--- a/db/routines/vn/views/workerBusinessDated.sql
+++ b/db/routines/vn/views/workerBusinessDated.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerBusinessDated`
AS SELECT `t`.`dated` AS `dated`,
diff --git a/db/routines/vn/views/workerDepartment.sql b/db/routines/vn/views/workerDepartment.sql
index 4be3122da..e4f3bbe90 100644
--- a/db/routines/vn/views/workerDepartment.sql
+++ b/db/routines/vn/views/workerDepartment.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerDepartment`
AS SELECT `b`.`workerFk` AS `workerFk`,
diff --git a/db/routines/vn/views/workerLabour.sql b/db/routines/vn/views/workerLabour.sql
index 2f4067c2d..633d95c4a 100644
--- a/db/routines/vn/views/workerLabour.sql
+++ b/db/routines/vn/views/workerLabour.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerLabour`
AS SELECT `b`.`id` AS `businessFk`,
diff --git a/db/routines/vn/views/workerMedia.sql b/db/routines/vn/views/workerMedia.sql
index 72ee04299..bc6961422 100644
--- a/db/routines/vn/views/workerMedia.sql
+++ b/db/routines/vn/views/workerMedia.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerMedia`
AS SELECT `w`.`id` AS `workerFk`,
diff --git a/db/routines/vn/views/workerSpeedExpedition.sql b/db/routines/vn/views/workerSpeedExpedition.sql
index db13cf16a..0bbd250b3 100644
--- a/db/routines/vn/views/workerSpeedExpedition.sql
+++ b/db/routines/vn/views/workerSpeedExpedition.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerSpeedExpedition`
AS SELECT `sv`.`ticketFk` AS `ticketFk`,
diff --git a/db/routines/vn/views/workerSpeedSaleTracking.sql b/db/routines/vn/views/workerSpeedSaleTracking.sql
index 21f07ea8a..d426af3a5 100644
--- a/db/routines/vn/views/workerSpeedSaleTracking.sql
+++ b/db/routines/vn/views/workerSpeedSaleTracking.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerSpeedSaleTracking`
AS SELECT `salesPreparedLastHour`.`warehouseFk` AS `warehouseFk`,
diff --git a/db/routines/vn/views/workerTeamCollegues.sql b/db/routines/vn/views/workerTeamCollegues.sql
index dbe245a16..c43bb6a4a 100644
--- a/db/routines/vn/views/workerTeamCollegues.sql
+++ b/db/routines/vn/views/workerTeamCollegues.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerTeamCollegues`
AS SELECT DISTINCT `w`.`workerFk` AS `workerFk`,
diff --git a/db/routines/vn/views/workerTimeControlUserInfo.sql b/db/routines/vn/views/workerTimeControlUserInfo.sql
index eea8ffd7c..5d122fc09 100644
--- a/db/routines/vn/views/workerTimeControlUserInfo.sql
+++ b/db/routines/vn/views/workerTimeControlUserInfo.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerTimeControlUserInfo`
AS SELECT `u`.`id` AS `userFk`,
diff --git a/db/routines/vn/views/workerTimeJourneyNG.sql b/db/routines/vn/views/workerTimeJourneyNG.sql
index b45b855b7..e55062e64 100644
--- a/db/routines/vn/views/workerTimeJourneyNG.sql
+++ b/db/routines/vn/views/workerTimeJourneyNG.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerTimeJourneyNG`
AS SELECT `wtc`.`userFk` AS `userFk`,
diff --git a/db/routines/vn/views/workerWithoutTractor.sql b/db/routines/vn/views/workerWithoutTractor.sql
index e0c0978a5..205c66599 100644
--- a/db/routines/vn/views/workerWithoutTractor.sql
+++ b/db/routines/vn/views/workerWithoutTractor.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`workerWithoutTractor`
AS SELECT `c`.`workerFk` AS `workerFk`,
diff --git a/db/routines/vn/views/zoneEstimatedDelivery.sql b/db/routines/vn/views/zoneEstimatedDelivery.sql
index 90c7381d8..953a2b25a 100644
--- a/db/routines/vn/views/zoneEstimatedDelivery.sql
+++ b/db/routines/vn/views/zoneEstimatedDelivery.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
+CREATE OR REPLACE DEFINER=`vn`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`zoneEstimatedDelivery`
AS SELECT `t`.`zoneFk` AS `zoneFk`,
diff --git a/db/routines/vn2008/views/mandato_tipo.sql b/db/routines/vn2008/views/mandato_tipo.sql
index a1b5b0a9f..bc3f74632 100644
--- a/db/routines/vn2008/views/mandato_tipo.sql
+++ b/db/routines/vn2008/views/mandato_tipo.sql
@@ -2,5 +2,5 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `vn2008`.`mandato_tipo`
AS SELECT `m`.`id` AS `idmandato_tipo`,
- `m`.`name` AS `Nombre`
+ `m`.`code` AS `Nombre`
FROM `vn`.`mandateType` `m`
diff --git a/db/versions/11042-turquoiseAspidistra/00-firstScript.sql b/db/versions/11042-turquoiseAspidistra/00-firstScript.sql
new file mode 100644
index 000000000..43038ab6d
--- /dev/null
+++ b/db/versions/11042-turquoiseAspidistra/00-firstScript.sql
@@ -0,0 +1,53 @@
+ALTER TABLE bs.waste ADD buyerFk int(10) unsigned NOT NULL;
+USE vn;
+CREATE OR REPLACE TEMPORARY TABLE tBuyers
+ ENGINE = MEMORY
+ WITH tDistinctBuyers AS (
+ SELECT DISTINCT buyer
+ FROM bs.waste w
+ )
+ SELECT buyer, u.id
+ FROM tDistinctBuyers tdb
+ JOIN account.`user` u ON u.name = tdb.buyer COLLATE utf8mb3_unicode_ci;
+
+UPDATE bs.waste w
+ JOIN tBuyers tb ON tb.buyer = w.buyer
+ SET w.buyerFk = tb.id;
+
+DROP TEMPORARY TABLE tBuyers;
+
+ALTER TABLE bs.waste
+ DROP PRIMARY KEY,
+ DROP COLUMN family,
+ DROP COLUMN rate,
+ DROP COLUMN buyer;
+
+ALTER TABLE bs.waste CHANGE buyerFk buyerFk int(10) unsigned NOT NULL AFTER `week`;
+ALTER TABLE bs.waste ADD CONSTRAINT waste_user_FK FOREIGN KEY (buyerFk) REFERENCES account.user(id) ON DELETE RESTRICT ON UPDATE RESTRICT;
+ALTER TABLE bs.waste ADD saleQuantity int(11) DEFAULT NULL NULL;
+ALTER TABLE bs.waste MODIFY COLUMN saleTotal decimal(10,2) DEFAULT NULL NULL;
+ALTER TABLE bs.waste MODIFY COLUMN saleWaste decimal(10,2) DEFAULT NULL NULL;
+ALTER TABLE bs.waste CHANGE saleWaste saleInternalWaste decimal(10,2) DEFAULT NULL NULL;
+ALTER TABLE bs.waste ADD saleExternalWaste decimal(10,2) DEFAULT NULL NULL;
+ALTER TABLE bs.waste CHANGE saleQuantity saleQuantity decimal(10,2) DEFAULT NULL NULL AFTER itemTypeFk;
+ALTER TABLE bs.waste CHANGE itemFk itemFk int(11) DEFAULT 0 NOT NULL AFTER itemTypeFk;
+
+CREATE OR REPLACE TEMPORARY TABLE tWasteUnique
+ SELECT *
+ FROM bs.waste
+ GROUP BY `year`, `week`, buyerFk, itemTypeFk, itemFk
+ HAVING COUNT(*) > 1;
+
+DELETE w.* FROM bs.waste w
+ JOIN tWasteUnique twu ON twu.`year` = w.`year`
+ AND twu.`week` = w.`week`
+ AND twu.`buyerFk` = w.`buyerFk`
+ AND twu.`itemTypeFk` = w.`itemTypeFk`
+ AND twu.`itemFk` = w.`itemFk`;
+
+INSERT INTO bs.waste
+ SELECT * FROM tWasteUnique;
+
+ALTER TABLE bs.waste ADD CONSTRAINT waste_pk PRIMARY KEY (`year`, `week`, buyerFk, itemTypeFk, itemFk);
+
+DROP TEMPORARY TABLE tWasteUnique;
diff --git a/db/versions/11108-redRose/00-firstScript.sql b/db/versions/11108-redRose/00-firstScript.sql
new file mode 100644
index 000000000..e70291e8f
--- /dev/null
+++ b/db/versions/11108-redRose/00-firstScript.sql
@@ -0,0 +1,6 @@
+-- Place your SQL code here
+INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
+ VALUES
+ ('MedicalReview', '*', '*', 'ALLOW', 'ROLE', 'hr'),
+ ('MedicalCenter', '*', '*', 'ALLOW', 'ROLE', 'hr'),
+ ('Worker', '__get__medicalReview', '*', 'ALLOW', 'ROLE', 'hr');
diff --git a/db/versions/11118-limeCymbidium/00-firstScript.sql b/db/versions/11118-limeCymbidium/00-firstScript.sql
index 3921a8a13..b15dfbd41 100644
--- a/db/versions/11118-limeCymbidium/00-firstScript.sql
+++ b/db/versions/11118-limeCymbidium/00-firstScript.sql
@@ -16,6 +16,4 @@ INSERT IGNORE INTO account.roleInherit (`role`,`inheritsFrom`)
UPDATE salix.ACL
SET principalId='$authenticated'
- WHERE id=264;
-
-
+ WHERE id=(SELECT id FROM salix.ACL WHERE model='StarredModule' and property='*' and `accessType`='*');
diff --git a/db/versions/11124-greenBamboo/00-firstScript.sql b/db/versions/11124-greenBamboo/00-firstScript.sql
new file mode 100644
index 000000000..6f47cbc21
--- /dev/null
+++ b/db/versions/11124-greenBamboo/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.ticket ADD volume decimal(10,6) DEFAULT NULL NULL COMMENT 'Unidad en m3';
diff --git a/db/versions/11124-greenBamboo/01-firstScript.sql b/db/versions/11124-greenBamboo/01-firstScript.sql
new file mode 100644
index 000000000..9cacbd5ff
--- /dev/null
+++ b/db/versions/11124-greenBamboo/01-firstScript.sql
@@ -0,0 +1,16 @@
+-- Calculamos todos los volumenes de todos los tickets una sola vez
+CREATE OR REPLACE TEMPORARY TABLE tmp.tTicketVolume
+ (PRIMARY KEY (id))
+ ENGINE = MEMORY
+ SELECT t.id, SUM(s.quantity * ic.cm3delivery / 1000000) volume
+ FROM vn.sale s
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ JOIN vn.itemCost ic ON ic.itemFk = s.itemFk
+ AND ic.warehouseFk = t.warehouseFk
+ GROUP BY t.id;
+
+UPDATE vn.ticket t
+ JOIN tmp.tTicketVolume tv ON tv.id = t.id
+ SET t.volume = tv.volume;
+
+DROP TEMPORARY TABLE tmp.tTicketVolume;
diff --git a/db/versions/11141-azureRoebelini/00-firstScript.sql b/db/versions/11141-azureRoebelini/00-firstScript.sql
new file mode 100644
index 000000000..fd6d79cfb
--- /dev/null
+++ b/db/versions/11141-azureRoebelini/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE srt.moving DROP INDEX moving_fk1_idx;
diff --git a/db/versions/11142-aquaGerbera/00-invoiceOutSerialColumn.sql b/db/versions/11142-aquaGerbera/00-invoiceOutSerialColumn.sql
new file mode 100644
index 000000000..09ac00401
--- /dev/null
+++ b/db/versions/11142-aquaGerbera/00-invoiceOutSerialColumn.sql
@@ -0,0 +1,4 @@
+ALTER TABLE vn.invoiceOutSerial
+ MODIFY COLUMN `type` enum('global','quick','multiple') CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL;
+
+CREATE UNIQUE INDEX invoiceOutSerial_taxAreaFk_IDX USING BTREE ON vn.invoiceOutSerial (taxAreaFk,`type`);
diff --git a/db/versions/11142-aquaGerbera/01-invoiceOutSerialUpdate.sql b/db/versions/11142-aquaGerbera/01-invoiceOutSerialUpdate.sql
new file mode 100644
index 000000000..fad33b5dc
--- /dev/null
+++ b/db/versions/11142-aquaGerbera/01-invoiceOutSerialUpdate.sql
@@ -0,0 +1,3 @@
+UPDATE vn.invoiceOutSerial
+ SET `type`='multiple'
+ WHERE `description` LIKE '%Múltiple%';
diff --git a/db/versions/11146-maroonCordyline/00-firstScript.sql b/db/versions/11146-maroonCordyline/00-firstScript.sql
new file mode 100644
index 000000000..1b41422f0
--- /dev/null
+++ b/db/versions/11146-maroonCordyline/00-firstScript.sql
@@ -0,0 +1,11 @@
+RENAME TABLE hedera.shelfConfig TO hedera.shelfMultiConfig ;
+RENAME TABLE pbx.queueConfig TO pbx.queueMultiConfig ;
+RENAME TABLE salix.defaultViewConfig TO salix.defaultViewMultiConfig;
+RENAME TABLE edi.fileConfig TO edi.fileMultiConfig;
+RENAME TABLE edi.imapConfig TO edi.imapMultiConfig;
+RENAME TABLE edi.tableConfig TO edi.tableMultiConfig;
+RENAME TABLE vn.invoiceOutTaxConfig TO vn.invoiceOutTaxMultiConfig;
+RENAME TABLE vn.userConfig TO vn.userMultiConfig;
+RENAME TABLE vn.conveyorConfig TO vn.conveyorMultiConfig;
+
+GRANT SELECT ON TABLE hedera.shelfMultiConfig TO employee;
diff --git a/db/versions/11152-goldenRaphis/00-firstScript.sql b/db/versions/11152-goldenRaphis/00-firstScript.sql
new file mode 100644
index 000000000..ad58a570a
--- /dev/null
+++ b/db/versions/11152-goldenRaphis/00-firstScript.sql
@@ -0,0 +1,3 @@
+-- Place your SQL code here
+ALTER TABLE vn.ticketSms__ DROP FOREIGN KEY IF EXISTS ticketSms_FK;
+ALTER TABLE vn.ticketSms__ ADD CONSTRAINT ticketSms_FK FOREIGN KEY (smsFk) REFERENCES vn.sms(id) ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/db/versions/11155-purpleMoss/00-firstScript.sql b/db/versions/11155-purpleMoss/00-firstScript.sql
new file mode 100644
index 000000000..fec63b193
--- /dev/null
+++ b/db/versions/11155-purpleMoss/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.invoiceInConfig
+ ADD dueDateMarginDays INT UNSIGNED DEFAULT 2 NULL;
diff --git a/db/versions/11157-limeDendro/00-firstScript.sql b/db/versions/11157-limeDendro/00-firstScript.sql
new file mode 100644
index 000000000..fa13f14a2
--- /dev/null
+++ b/db/versions/11157-limeDendro/00-firstScript.sql
@@ -0,0 +1,11 @@
+
+ALTER TABLE IF EXISTS vn.sectorCollectionSaleGroup DROP FOREIGN KEY sectorCollectionSaleGroup_ibfk_3;
+ALTER TABLE IF EXISTS vn.sectorCollectionSaleGroup DROP FOREIGN KEY sectorCollectionSaleGroup_ibfk_2;
+ALTER TABLE IF EXISTS vn.sectorCollectionSaleGroup DROP KEY saleGroupFk;
+
+
+ALTER TABLE IF EXISTS vn.sectorCollectionSaleGroup ADD CONSTRAINT sectorCollectionSaleGroup_saleGroup_FK
+ FOREIGN KEY (saleGroupFk) REFERENCES vn.saleGroup(id) ON DELETE CASCADE ON UPDATE CASCADE;
+
+
+ALTER TABLE IF EXISTS vn.sectorCollectionSaleGroup ADD CONSTRAINT sectorCollectionSaleGroup_unique UNIQUE KEY (sectorCollectionFk,saleGroupFk);
\ No newline at end of file
diff --git a/db/versions/11158-redRaphis/00-firstScript.sql b/db/versions/11158-redRaphis/00-firstScript.sql
new file mode 100644
index 000000000..7fe41b32b
--- /dev/null
+++ b/db/versions/11158-redRaphis/00-firstScript.sql
@@ -0,0 +1,11 @@
+-- Place your SQL code here
+
+ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve
+ADD IF NOT EXISTS sectorFk int(11) NULL;
+
+ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve
+DROP FOREIGN KEY IF EXISTS itemShelvingSaleReserve_sector_FK;
+
+ALTER TABLE IF EXISTS vn.itemShelvingSaleReserve
+ADD CONSTRAINT itemShelvingSaleReserve_sector_FK FOREIGN KEY (id)
+REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE;
\ No newline at end of file
diff --git a/db/versions/11159-redIvy/00-firstScript.sql b/db/versions/11159-redIvy/00-firstScript.sql
new file mode 100644
index 000000000..d0b563b7a
--- /dev/null
+++ b/db/versions/11159-redIvy/00-firstScript.sql
@@ -0,0 +1,3 @@
+
+
+ALTER TABLE vn.itemShelvingSale MODIFY COLUMN IF EXISTS isPicked tinyint(1) DEFAULT 1 NOT NULL;
diff --git a/db/versions/11160-blueRoebelini/00-firstScript.sql b/db/versions/11160-blueRoebelini/00-firstScript.sql
new file mode 100644
index 000000000..235eda7fd
--- /dev/null
+++ b/db/versions/11160-blueRoebelini/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.state DROP FOREIGN KEY state_ibfk_1;
+ALTER TABLE vn.state ADD CONSTRAINT state_ibfk_1 FOREIGN KEY (alertLevel) REFERENCES vn.alertLevel(id) ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/db/versions/11161-limeOak/00-firstScript.sql b/db/versions/11161-limeOak/00-firstScript.sql
new file mode 100644
index 000000000..aab05fa49
--- /dev/null
+++ b/db/versions/11161-limeOak/00-firstScript.sql
@@ -0,0 +1,8 @@
+
+ALTER TABLE dipole.expedition_PrintOut ADD isChecked BOOL DEFAULT FALSE NOT NULL COMMENT 'Indica si la expedición ha sido revisada por un revisor';
+
+DELETE FROM salix.ACL
+ WHERE model = 'Expedition_PrintOut';
+
+INSERT INTO salix.ACL ( model, property, accessType, permission, principalType, principalId)
+VALUES( 'Expedition_PrintOut', '*', '*', 'ALLOW', 'ROLE', 'production');
\ No newline at end of file
diff --git a/db/versions/11164-turquoiseRoebelini/00-firstScript.sql b/db/versions/11164-turquoiseRoebelini/00-firstScript.sql
new file mode 100644
index 000000000..be45d9e95
--- /dev/null
+++ b/db/versions/11164-turquoiseRoebelini/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.productionConfigLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.agencyLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
diff --git a/db/versions/11165-grayAralia/00-firstScript.sql b/db/versions/11165-grayAralia/00-firstScript.sql
new file mode 100644
index 000000000..652b2343a
--- /dev/null
+++ b/db/versions/11165-grayAralia/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.productionConfig
+ DROP COLUMN scannableCodeType,
+ DROP COLUMN scannablePreviusCodeType;
diff --git a/db/versions/11166-azureDracena/00-firstScript.sql b/db/versions/11166-azureDracena/00-firstScript.sql
new file mode 100644
index 000000000..ba087b5a8
--- /dev/null
+++ b/db/versions/11166-azureDracena/00-firstScript.sql
@@ -0,0 +1,25 @@
+CREATE OR REPLACE TABLE `salix`.`ACLLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('Acl') NOT NULL DEFAULT 'Acl',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `logRateuserFk` (`userFk`),
+ KEY `ACLLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `ACLLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `aclUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+ALTER TABLE salix.ACL
+ ADD editorFk int(10) unsigned DEFAULT NULL NULL;
+
+ALTER TABLE vn.ticket
+ CHANGE editorFk editorFk int(10) unsigned DEFAULT NULL NULL AFTER risk;
diff --git a/db/versions/11168-redFern/00-firstScript.sql b/db/versions/11168-redFern/00-firstScript.sql
new file mode 100644
index 000000000..f91780e37
--- /dev/null
+++ b/db/versions/11168-redFern/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.calendar
+ ADD CONSTRAINT calendar_user_FK FOREIGN KEY (editorFk) REFERENCES account.`user`(id);
diff --git a/db/versions/11169-azureCyca/00-firstScript.sql b/db/versions/11169-azureCyca/00-firstScript.sql
new file mode 100644
index 000000000..49adcfc05
--- /dev/null
+++ b/db/versions/11169-azureCyca/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE IF EXISTS vn.itemShelving
+MODIFY COLUMN IF EXISTS isSplit tinyint(1) DEFAULT 0 NOT NULL COMMENT 'Este valor cambia al splitar un carro que se ha quedado en holanda';
diff --git a/db/versions/11170-redPaniculata/00-firstScript.sql b/db/versions/11170-redPaniculata/00-firstScript.sql
new file mode 100644
index 000000000..b5d34c082
--- /dev/null
+++ b/db/versions/11170-redPaniculata/00-firstScript.sql
@@ -0,0 +1,6 @@
+-- Place your SQL code here
+
+ALTER TABLE vn.packingSite DROP COLUMN IF EXISTS hasNewLabelMrwMethod;
+
+ALTER TABLE vn.productionConfig ADD IF NOT EXISTS hasNewLabelMrwMethod BOOL DEFAULT TRUE NOT NULL
+ COMMENT 'column to activate the new mrw integration';
diff --git a/db/versions/11171-maroonMoss/00-firstScript.sql b/db/versions/11171-maroonMoss/00-firstScript.sql
new file mode 100644
index 000000000..0632239ac
--- /dev/null
+++ b/db/versions/11171-maroonMoss/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.operator
+ ADD COLUMN sizeLimit int(10) unsigned DEFAULT 90 NULL COMMENT 'Límite de altura en una colección para la asignación de pedidos' AFTER volumeLimit,
+ MODIFY COLUMN linesLimit int(10) unsigned DEFAULT 20 NULL COMMENT 'Límite de lineas en una colección para la asignación de pedidos';
diff --git a/db/versions/11172-blueFern/00-firstScript.sql b/db/versions/11172-blueFern/00-firstScript.sql
new file mode 100644
index 000000000..04e0813d5
--- /dev/null
+++ b/db/versions/11172-blueFern/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.ticket DROP FOREIGN KEY ticket_FK;
\ No newline at end of file
diff --git a/db/versions/11172-blueFern/01-firstScript.sql b/db/versions/11172-blueFern/01-firstScript.sql
new file mode 100644
index 000000000..64255f9de
--- /dev/null
+++ b/db/versions/11172-blueFern/01-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceOut DROP KEY Id_Factura;
diff --git a/db/versions/11172-blueFern/02-firstScript.sql b/db/versions/11172-blueFern/02-firstScript.sql
new file mode 100644
index 000000000..e76b7f7d6
--- /dev/null
+++ b/db/versions/11172-blueFern/02-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceOut MODIFY COLUMN id int(10) unsigned NOT NULL;
\ No newline at end of file
diff --git a/db/versions/11172-blueFern/03-firstScript.sql b/db/versions/11172-blueFern/03-firstScript.sql
new file mode 100644
index 000000000..e6def98a4
--- /dev/null
+++ b/db/versions/11172-blueFern/03-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceCorrection DROP FOREIGN KEY corrected_fk;
diff --git a/db/versions/11172-blueFern/04-firstScript.sql b/db/versions/11172-blueFern/04-firstScript.sql
new file mode 100644
index 000000000..a19bc336e
--- /dev/null
+++ b/db/versions/11172-blueFern/04-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceCorrection DROP FOREIGN KEY correcting_fk;
diff --git a/db/versions/11172-blueFern/05-firstScript.sql b/db/versions/11172-blueFern/05-firstScript.sql
new file mode 100644
index 000000000..9f5ec2871
--- /dev/null
+++ b/db/versions/11172-blueFern/05-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceOutExpense DROP FOREIGN KEY invoiceOutExpence_FK_1;
diff --git a/db/versions/11172-blueFern/06-firstScript.sql b/db/versions/11172-blueFern/06-firstScript.sql
new file mode 100644
index 000000000..2c16e9b77
--- /dev/null
+++ b/db/versions/11172-blueFern/06-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceOutTax DROP FOREIGN KEY invoiceOutFk;
diff --git a/db/versions/11172-blueFern/07-firstScript.sql b/db/versions/11172-blueFern/07-firstScript.sql
new file mode 100644
index 000000000..bec72a131
--- /dev/null
+++ b/db/versions/11172-blueFern/07-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceOut DROP PRIMARY KEY;
diff --git a/db/versions/11172-blueFern/08-firstScript.sql b/db/versions/11172-blueFern/08-firstScript.sql
new file mode 100644
index 000000000..316db2e32
--- /dev/null
+++ b/db/versions/11172-blueFern/08-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceOut ADD CONSTRAINT invoiceOut_pk PRIMARY KEY (id);
diff --git a/db/versions/11172-blueFern/09-firstScript.sql b/db/versions/11172-blueFern/09-firstScript.sql
new file mode 100644
index 000000000..553d7857e
--- /dev/null
+++ b/db/versions/11172-blueFern/09-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.invoiceOut ADD CONSTRAINT invoiceOut_unique UNIQUE KEY (`ref`);
diff --git a/db/versions/11172-blueFern/10-firstScript.sql b/db/versions/11172-blueFern/10-firstScript.sql
new file mode 100644
index 000000000..47ddaff14
--- /dev/null
+++ b/db/versions/11172-blueFern/10-firstScript.sql
@@ -0,0 +1,5 @@
+UPDATE vn.invoiceOut
+ SET id = (SELECT MAX(id) + 1 FROM vn.invoiceOut)
+ WHERE id = 0;
+
+ALTER TABLE vn.invoiceOut MODIFY COLUMN id int(10) unsigned auto_increment NOT NULL;
diff --git a/db/versions/11172-blueFern/11-firstScript.sql b/db/versions/11172-blueFern/11-firstScript.sql
new file mode 100644
index 000000000..e1847a877
--- /dev/null
+++ b/db/versions/11172-blueFern/11-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.ticket ADD CONSTRAINT ticket_invoiceOut_FK
+ FOREIGN KEY (refFk) REFERENCES vn.invoiceOut(`ref`) ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/db/versions/11172-blueFern/12-firstScript.sql b/db/versions/11172-blueFern/12-firstScript.sql
new file mode 100644
index 000000000..720b7962e
--- /dev/null
+++ b/db/versions/11172-blueFern/12-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.invoiceCorrection ADD CONSTRAINT invoiceCorrection_invoiceOut_FK
+ FOREIGN KEY (correctingFk) REFERENCES vn.invoiceOut(id) ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/db/versions/11172-blueFern/13-firstScript.sql b/db/versions/11172-blueFern/13-firstScript.sql
new file mode 100644
index 000000000..35099bd5d
--- /dev/null
+++ b/db/versions/11172-blueFern/13-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.invoiceCorrection ADD CONSTRAINT invoiceCorrection_invoiceOut_FK_1
+ FOREIGN KEY (correctedFk) REFERENCES vn.invoiceOut(id) ON DELETE CASCADE ON UPDATE CASCADE;
\ No newline at end of file
diff --git a/db/versions/11172-blueFern/14-firstScript.sql b/db/versions/11172-blueFern/14-firstScript.sql
new file mode 100644
index 000000000..f1aa0a216
--- /dev/null
+++ b/db/versions/11172-blueFern/14-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.invoiceOutExpense ADD CONSTRAINT invoiceOutExpense_invoiceOut_FK
+ FOREIGN KEY (invoiceOutFk) REFERENCES vn.invoiceOut(id) ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/db/versions/11172-blueFern/15-firstScript.sql b/db/versions/11172-blueFern/15-firstScript.sql
new file mode 100644
index 000000000..ba570e20c
--- /dev/null
+++ b/db/versions/11172-blueFern/15-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.invoiceOutTax ADD CONSTRAINT invoiceOutTax_invoiceOut_FK
+ FOREIGN KEY (invoiceOutFk) REFERENCES vn.invoiceOut(id) ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/db/versions/11175-pinkChico/00-firstScript.sql b/db/versions/11175-pinkChico/00-firstScript.sql
new file mode 100644
index 000000000..349f4c7f7
--- /dev/null
+++ b/db/versions/11175-pinkChico/00-firstScript.sql
@@ -0,0 +1,8 @@
+USE vn;
+
+CREATE TABLE IF NOT EXISTS ormConfig (
+ id int(5) NOT NULL AUTO_INCREMENT primary key,
+ selectLimit int(5) NOT NULL
+);
+
+INSERT IGNORE INTO ormConfig SET selectLimit = 1000;
\ No newline at end of file
diff --git a/db/versions/11177-crimsonPaniculata/00-firstScript.sql b/db/versions/11177-crimsonPaniculata/00-firstScript.sql
new file mode 100644
index 000000000..79bcf1291
--- /dev/null
+++ b/db/versions/11177-crimsonPaniculata/00-firstScript.sql
@@ -0,0 +1,6 @@
+-- Place your SQL code here
+
+ALTER TABLE vn.itemShelvingSaleReserve DROP FOREIGN KEY IF EXISTS itemShelvingSaleReserve_sector_FK;
+
+ALTER TABLE vn.itemShelvingSaleReserve ADD CONSTRAINT itemShelvingSaleReserve_sector_FK
+ FOREIGN KEY IF NOT EXISTS (sectorFk) REFERENCES vn.sector(id) ON DELETE RESTRICT ON UPDATE CASCADE;
\ No newline at end of file
diff --git a/db/versions/11179-whiteLaurel/00-firstScript.sql b/db/versions/11179-whiteLaurel/00-firstScript.sql
new file mode 100644
index 000000000..4a4e32c9d
--- /dev/null
+++ b/db/versions/11179-whiteLaurel/00-firstScript.sql
@@ -0,0 +1,2 @@
+RENAME TABLE vn.silexACL TO vn.silexACL__;
+ALTER TABLE vn.silexACL__ COMMENT='@deprecated 2024-08-05 refs #7820';
diff --git a/db/versions/11180-navyGerbera/00-firstScript.sql b/db/versions/11180-navyGerbera/00-firstScript.sql
new file mode 100644
index 000000000..8c5d79ce8
--- /dev/null
+++ b/db/versions/11180-navyGerbera/00-firstScript.sql
@@ -0,0 +1,2 @@
+-- Place your SQL code here
+ALTER TABLE vn.invoiceInConfig ADD balanceStartingDate DATE DEFAULT '2015-01-01' NOT NULL;
diff --git a/db/versions/11182-redAralia/00-firstScript.sql b/db/versions/11182-redAralia/00-firstScript.sql
new file mode 100644
index 000000000..72c06de65
--- /dev/null
+++ b/db/versions/11182-redAralia/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE bs.waste CHANGE saleQuantity saleWasteQuantity decimal(10,2) DEFAULT NULL NULL AFTER saleTotal;
+ALTER TABLE bs.waste MODIFY COLUMN saleTotal decimal(10,2) DEFAULT NULL NULL COMMENT 'Coste';
diff --git a/db/versions/11183-limePhormium/00-firstScript.sql b/db/versions/11183-limePhormium/00-firstScript.sql
new file mode 100644
index 000000000..a30338f9e
--- /dev/null
+++ b/db/versions/11183-limePhormium/00-firstScript.sql
@@ -0,0 +1,23 @@
+CREATE OR REPLACE TABLE `vn`.`saleGroupLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('SaleGroup', 'SaleGroupDetail') NOT NULL DEFAULT 'SaleGroup',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
+ `reason` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `saleGroupUserFk` (`userFk`),
+ KEY `saleGroupLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `saleGroupLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `saleGroupLogUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+ALTER TABLE vn.parkingLog
+ MODIFY COLUMN changedModel enum('Parking') CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT 'Parking' NOT NULL;
diff --git a/db/versions/11185-maroonArborvitae/00-firstScript.sql b/db/versions/11185-maroonArborvitae/00-firstScript.sql
new file mode 100644
index 000000000..b07126e71
--- /dev/null
+++ b/db/versions/11185-maroonArborvitae/00-firstScript.sql
@@ -0,0 +1 @@
+DROP TABLE bi.Greuges_comercial_detail;
\ No newline at end of file
diff --git a/db/versions/11187-yellowErica/00-firstScript.sql b/db/versions/11187-yellowErica/00-firstScript.sql
new file mode 100644
index 000000000..fb75b1f2f
--- /dev/null
+++ b/db/versions/11187-yellowErica/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.host ADD editorFk int(10) unsigned DEFAULT NULL NULL;
diff --git a/db/versions/11189-purplePaniculata/00-firstScript.sql b/db/versions/11189-purplePaniculata/00-firstScript.sql
new file mode 100644
index 000000000..3319bd154
--- /dev/null
+++ b/db/versions/11189-purplePaniculata/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.item
+ ADD CONSTRAINT item_itemPackingType_FK FOREIGN KEY (itemPackingTypeFk)
+ REFERENCES vn.itemPackingType(code) ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/db/versions/11190-blueLaurel/00-firstScript.sql b/db/versions/11190-blueLaurel/00-firstScript.sql
new file mode 100644
index 000000000..75e3f8e59
--- /dev/null
+++ b/db/versions/11190-blueLaurel/00-firstScript.sql
@@ -0,0 +1,9 @@
+ALTER TABLE hedera.tpvMerchantEnable
+ DROP FOREIGN KEY tpvMerchantEnable_ibfk_1,
+ DROP PRIMARY KEY,
+ ADD CONSTRAINT tpvMerchantEnable_pk PRIMARY KEY (merchantFk),
+ ADD CONSTRAINT tpvMerchantEnable_tpvMerchant_FK
+ FOREIGN KEY (merchantFk)
+ REFERENCES hedera.tpvMerchant(id)
+ ON DELETE RESTRICT
+ ON UPDATE CASCADE;
diff --git a/db/versions/11191-chocolateBirch/00-firstScript.sql b/db/versions/11191-chocolateBirch/00-firstScript.sql
new file mode 100644
index 000000000..4c9924a42
--- /dev/null
+++ b/db/versions/11191-chocolateBirch/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.mandateType
+ CHANGE name code VARCHAR(45) NOT NULL,
+ ADD UNIQUE (code);
\ No newline at end of file
diff --git a/db/versions/11191-chocolateBirch/01-firstScript.sql b/db/versions/11191-chocolateBirch/01-firstScript.sql
new file mode 100644
index 000000000..c69e92d51
--- /dev/null
+++ b/db/versions/11191-chocolateBirch/01-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.accountDetailType
+ ADD COLUMN code VARCHAR(45),
+ ADD UNIQUE (code);
\ No newline at end of file
diff --git a/db/versions/11191-chocolateBirch/02-firstScript.sql b/db/versions/11191-chocolateBirch/02-firstScript.sql
new file mode 100644
index 000000000..733cffd63
--- /dev/null
+++ b/db/versions/11191-chocolateBirch/02-firstScript.sql
@@ -0,0 +1,9 @@
+UPDATE vn.accountDetailType
+ SET code = CASE description
+ WHEN 'IBAN' THEN 'iban'
+ WHEN 'SWIFT' THEN 'swift'
+ WHEN 'Referencia Remesas' THEN 'remRef'
+ WHEN 'Referencia Transferencias' THEN 'trnRef'
+ WHEN 'Referencia Nominas' THEN 'payRef'
+ WHEN 'ABA' THEN 'aba'
+ END;
\ No newline at end of file
diff --git a/db/versions/11192-maroonSalal/00-firstScript.sql b/db/versions/11192-maroonSalal/00-firstScript.sql
new file mode 100644
index 000000000..ac35a3db3
--- /dev/null
+++ b/db/versions/11192-maroonSalal/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE hedera.tpvMerchantEnable
+ MODIFY COLUMN companyFk int(10) unsigned NOT NULL,
+ ADD CONSTRAINT tpvMerchantEnable_company_FK FOREIGN KEY (companyFk) REFERENCES vn.company(id) ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/db/versions/11193-bronzeAspidistra/00-firstScript.sql b/db/versions/11193-bronzeAspidistra/00-firstScript.sql
new file mode 100644
index 000000000..cc837d007
--- /dev/null
+++ b/db/versions/11193-bronzeAspidistra/00-firstScript.sql
@@ -0,0 +1,19 @@
+CREATE OR REPLACE TABLE `srt`.`bufferLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('Buffer', 'Config') NOT NULL DEFAULT 'Buffer',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `logBufferUserFk` (`userFk`),
+ KEY `bufferLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `bufferLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `bufferUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
diff --git a/db/versions/11193-bronzeAspidistra/01-firstScript.sql b/db/versions/11193-bronzeAspidistra/01-firstScript.sql
new file mode 100644
index 000000000..748056f3a
--- /dev/null
+++ b/db/versions/11193-bronzeAspidistra/01-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE srt.buffer ADD editorFk int(10) unsigned DEFAULT NULL NULL;
diff --git a/db/versions/11193-bronzeAspidistra/02-firstScript.sql b/db/versions/11193-bronzeAspidistra/02-firstScript.sql
new file mode 100644
index 000000000..36aa938d5
--- /dev/null
+++ b/db/versions/11193-bronzeAspidistra/02-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE srt.config ADD editorFk int(10) unsigned DEFAULT NULL NULL;
diff --git a/db/versions/11194-orangeOrchid/00-firstScript.sql b/db/versions/11194-orangeOrchid/00-firstScript.sql
new file mode 100644
index 000000000..59a616edf
--- /dev/null
+++ b/db/versions/11194-orangeOrchid/00-firstScript.sql
@@ -0,0 +1,9 @@
+CREATE TABLE vn.quadMindsApiConfig (
+ id int(10) unsigned NULL PRIMARY KEY,
+ `url` varchar(255) DEFAULT NULL NULL,
+ `key` varchar(255) DEFAULT NULL NULL,
+ CONSTRAINT quadMindsConfig_check CHECK (id = 1)
+)
+ENGINE=InnoDB
+DEFAULT CHARSET=utf8mb3
+COLLATE=utf8mb3_unicode_ci;
diff --git a/db/versions/11195-salmonPalmetto/00-firstScript.sql b/db/versions/11195-salmonPalmetto/00-firstScript.sql
new file mode 100644
index 000000000..980b66c8d
--- /dev/null
+++ b/db/versions/11195-salmonPalmetto/00-firstScript.sql
@@ -0,0 +1,6 @@
+ALTER TABLE vn.roadmap
+ ADD COLUMN m3 INT UNSIGNED NULL,
+ ADD COLUMN driver2Fk INT UNSIGNED NULL,
+ ADD COLUMN driver1Fk INT UNSIGNED NULL,
+ ADD CONSTRAINT roadmap_worker_FK FOREIGN KEY (driver1Fk) REFERENCES vn.worker(id) ON DELETE RESTRICT ON UPDATE CASCADE,
+ ADD CONSTRAINT roadmap_worker_FK_2 FOREIGN KEY (driver2Fk) REFERENCES vn.worker(id) ON DELETE RESTRICT ON UPDATE CASCADE;
\ No newline at end of file
diff --git a/db/versions/11197-aquaSalal/00-firstScript.sql b/db/versions/11197-aquaSalal/00-firstScript.sql
new file mode 100644
index 000000000..f07368d3e
--- /dev/null
+++ b/db/versions/11197-aquaSalal/00-firstScript.sql
@@ -0,0 +1,24 @@
+DELETE FROM `salix`.`ACL`
+ WHERE `model` = 'Ticket'
+ AND `property` = 'refund'
+ AND `accessType` = 'WRITE'
+ AND `permission` = 'ALLOW'
+ AND `principalType` = 'ROLE'
+ AND `principalId` = 'salesAssistant';
+
+UPDATE `salix`.`ACL`
+ SET `property` = 'cloneAll'
+ WHERE `model` = 'Ticket'
+ AND `property` = 'refund'
+ AND `accessType` = 'WRITE'
+ AND `permission` = 'ALLOW'
+ AND `principalType` = 'ROLE'
+ AND `principalId` IN ('invoicing', 'claimManager', 'logistic');
+
+DELETE FROM `salix`.`ACL`
+ WHERE `model` = 'Ticket'
+ AND `property` = 'clone'
+ AND `accessType` = 'WRITE'
+ AND `permission` = 'ALLOW'
+ AND `principalType` = 'ROLE'
+ AND `principalId` = 'administrative';
diff --git a/db/versions/11201-limeChrysanthemum/00-firstScript.sql b/db/versions/11201-limeChrysanthemum/00-firstScript.sql
new file mode 100644
index 000000000..943368b06
--- /dev/null
+++ b/db/versions/11201-limeChrysanthemum/00-firstScript.sql
@@ -0,0 +1,4 @@
+-- Place your SQL code here
+ALTER TABLE vn.saleGroup ADD stateFk TINYINT(3) UNSIGNED;
+
+ALTER TABLE vn.saleGroup ADD CONSTRAINT saleGroup_state_FK FOREIGN KEY (stateFk) REFERENCES vn.state(id) ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/db/versions/11204-navyMonstera/00-firstScript.sql b/db/versions/11204-navyMonstera/00-firstScript.sql
new file mode 100644
index 000000000..492e3d607
--- /dev/null
+++ b/db/versions/11204-navyMonstera/00-firstScript.sql
@@ -0,0 +1,5 @@
+ALTER TABLE vn.ormConfig
+MODIFY COLUMN id INT NOT NULL,
+DROP PRIMARY KEY,
+ADD CONSTRAINT ormConfig_check CHECK (id = 1),
+ADD PRIMARY KEY (id);
\ No newline at end of file
diff --git a/db/versions/11205-grayCymbidium/00-firstScript.sql b/db/versions/11205-grayCymbidium/00-firstScript.sql
new file mode 100644
index 000000000..ba3ab60e1
--- /dev/null
+++ b/db/versions/11205-grayCymbidium/00-firstScript.sql
@@ -0,0 +1,2 @@
+-- Place your SQL code here
+ALTER TABLE dipole.expedition_PrintOut MODIFY COLUMN isPrinted int(11) DEFAULT 0 NOT NULL COMMENT '0.- Not Printed ; 1.- Printed; 2.- Selected ; 3.- Error ; 4.- Waiting to be printed';
diff --git a/db/versions/11206-turquoiseCyca/00-firstScript.sql b/db/versions/11206-turquoiseCyca/00-firstScript.sql
new file mode 100644
index 000000000..ab6b35a0f
--- /dev/null
+++ b/db/versions/11206-turquoiseCyca/00-firstScript.sql
@@ -0,0 +1,2 @@
+INSERT IGNORE INTO salix.ACL (model,property,principalId)
+ VALUES ('Entry','getBuysCsv','supplier');
diff --git a/db/versions/11207-turquoiseMastic/00-firstScript.sql b/db/versions/11207-turquoiseMastic/00-firstScript.sql
new file mode 100644
index 000000000..d1fd184aa
--- /dev/null
+++ b/db/versions/11207-turquoiseMastic/00-firstScript.sql
@@ -0,0 +1,2 @@
+INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId)
+ VALUES ('InvoiceOut','refundAndInvoice','WRITE','ALLOW','ROLE','administrative');
diff --git a/db/versions/11208-limeRoebelini/00-firstScript.vn.sql b/db/versions/11208-limeRoebelini/00-firstScript.vn.sql
new file mode 100644
index 000000000..22b3dc924
--- /dev/null
+++ b/db/versions/11208-limeRoebelini/00-firstScript.vn.sql
@@ -0,0 +1,7 @@
+UPDATE vn.packaging SET id='25E' WHERE id='cactus200';
+UPDATE vn.packaging SET id='35E' WHERE id='kalan330';
+UPDATE vn.packaging SET id='45E' WHERE id='kalan400';
+UPDATE vn.packaging SET id='60E' WHERE id='kalan577';
+UPDATE vn.packaging SET id='60A' WHERE id='guzma650';
+UPDATE vn.packaging SET id='120A' WHERE id='guzma1200';
+UPDATE vn.packaging SET id='140A' WHERE id='guzma1400';
diff --git a/db/versions/11209-pinkOrchid/00-firstScript.sql b/db/versions/11209-pinkOrchid/00-firstScript.sql
new file mode 100644
index 000000000..92a7a7569
--- /dev/null
+++ b/db/versions/11209-pinkOrchid/00-firstScript.sql
@@ -0,0 +1,6 @@
+ALTER TABLE vn.operator
+ MODIFY COLUMN sizeLimit int(10) unsigned DEFAULT NULL NULL COMMENT 'Límite de altura en una colección para la asignación de pedidos';
+
+UPDATE vn.operator
+ SET sizeLimit = 90
+ WHERE itemPackingTypeFk = 'V';
diff --git a/db/versions/11211-greenCataractarum/00-firstScript.sql b/db/versions/11211-greenCataractarum/00-firstScript.sql
new file mode 100644
index 000000000..c9ba73479
--- /dev/null
+++ b/db/versions/11211-greenCataractarum/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.parking ADD COLUMN floor VARCHAR(5) DEFAULT NULL AFTER row;
diff --git a/db/versions/11213-aquaCarnation/00-firstScript.sql b/db/versions/11213-aquaCarnation/00-firstScript.sql
new file mode 100644
index 000000000..9e744b66c
--- /dev/null
+++ b/db/versions/11213-aquaCarnation/00-firstScript.sql
@@ -0,0 +1,129 @@
+
+use vn;
+
+CREATE TABLE IF NOT EXISTS `material` (
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `name_UNIQUE` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+INSERT IGNORE INTO `material` (`name`) VALUES ('Abedul');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Acacia');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Acero');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Acero Galvanizado');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Acetato');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Acrílico');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Alambre');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Algodón');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Aluminio');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Antracita');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Arcilla');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Bambú');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Banano');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Canneté');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cartón');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cartulina');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Celofán');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cemento');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cera');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cerámica');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Chapa');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Chenilla');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cloruro de polivinilo');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cobre');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Corcho');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cordel');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cotton');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cotton Chess');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cristal');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cubo Asa');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cuerda');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Cuero');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Doble Raso');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Doble Velvet');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Eco Glass');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Encaje');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Esparto');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Espuma');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Felpa');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Fibra');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Fibra de Coco');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Fibra de Vidrio y Resina');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Fieltro');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Foam');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Gamuza');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Gasa');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Glass');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Goma');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Grafito');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Hierro');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Hoja Carbono');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Hoja de Mirto');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Hormigón');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Jute');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Kraft');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Lana');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Látex');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Latrix');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Lienzo');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Lino');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Lurex');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Madera');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Metacrilato');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Metal');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Mimbre');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Musgo');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Nonwoven');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Nylon');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Organza');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Paja');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Pana');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Papel');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Paperweb');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Paulownia');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Peluche');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Piedra');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Pizarra');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Plástico');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Poliestireno');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Polipropileno');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Poliresina');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Polyester');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Porcelana');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Puntilla');
+INSERT IGNORE INTO `material` (`name`) VALUES ('PVC');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Rafia');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Rama');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Raso');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Rattan');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Rayon');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Reciclable');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Red');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Resina');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Roca');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Rope');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Saco');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Salim');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Seagrass');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Silicona');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Sisal');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Tejido');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Tela');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Terciopelo');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Terracota');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Textil');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Titanio');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Tul');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Velvet');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Vidrio');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Yute');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Zinc');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Base de goma');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Base de madera');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Plumas');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Protección Uva');
+INSERT IGNORE INTO `material` (`name`) VALUES ('Purpurina');
+
+UPDATE vn.tag SET isFree=0,sourceTable='material' WHERE name= 'Material';
+UPDATE vn.tag SET isFree=0,sourceTable='material' WHERE name='Material secundario';
\ No newline at end of file
diff --git a/db/versions/11215-purpleIvy/00-firstScript.sql b/db/versions/11215-purpleIvy/00-firstScript.sql
new file mode 100644
index 000000000..ac82b7773
--- /dev/null
+++ b/db/versions/11215-purpleIvy/00-firstScript.sql
@@ -0,0 +1,4 @@
+-- Place your SQL code here
+INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
+ VALUES ('Worker', '__get__descriptor', 'READ', 'ALLOW', 'ROLE', 'employee'),
+ ('Worker', 'findById', 'READ', 'ALLOW', 'ROLE', '$subordinate');
\ No newline at end of file
diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js
index 685345273..097c6e1ab 100644
--- a/e2e/helpers/selectors.js
+++ b/e2e/helpers/selectors.js
@@ -738,69 +738,6 @@ export default {
worker: 'vn-worker-autocomplete[ng-model="$ctrl.userFk"]',
saveStateButton: `button[type=submit]`
},
- claimsIndex: {
- searchResult: 'vn-claim-index vn-card > vn-table > div > vn-tbody > a'
- },
- claimDescriptor: {
- moreMenu: 'vn-claim-descriptor vn-icon-button[icon=more_vert]',
- moreMenuDeleteClaim: '.vn-menu [name="deleteClaim"]',
- acceptDeleteClaim: '.vn-confirm.shown button[response="accept"]'
- },
- claimSummary: {
- header: 'vn-claim-summary > vn-card > h5',
- state: 'vn-claim-summary vn-label-value[label="State"] > section > span',
- observation: 'vn-claim-summary vn-horizontal.text',
- firstSaleItemId: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(1) > span',
- firstSaleDescriptorImage: '.vn-popover.shown vn-item-descriptor img',
- itemDescriptorPopover: '.vn-popover.shown vn-item-descriptor',
- itemDescriptorPopoverItemDiaryButton: '.vn-popover vn-item-descriptor vn-quick-link[icon="icon-transaction"] > a',
- firstDevelopmentWorker: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(4) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > span',
- firstDevelopmentWorkerGoToClientButton: '.vn-popover vn-worker-descriptor vn-quick-link[icon="person"] > a',
- firstActionTicketId: 'vn-claim-summary > vn-card > vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span',
- firstActionTicketDescriptor: '.vn-popover.shown vn-ticket-descriptor'
- },
- claimBasicData: {
- claimState: 'vn-claim-basic-data vn-autocomplete[ng-model="$ctrl.claim.claimStateFk"]',
- packages: 'vn-input-number[ng-model="$ctrl.claim.packages"]',
- saveButton: `button[type=submit]`
- },
- claimDetail: {
- secondItemDiscount: 'vn-claim-detail > vn-vertical > vn-card > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(6) > span',
- discount: '.vn-popover.shown vn-input-number[ng-model="$ctrl.newDiscount"]',
- discoutPopoverMana: '.vn-popover.shown .content > div > vn-horizontal > h5',
- addItemButton: 'vn-claim-detail a vn-float-button',
- firstClaimableSaleFromTicket: '.vn-dialog.shown vn-tbody > vn-tr',
- claimDetailLine: 'vn-claim-detail > vn-vertical > vn-card > vn-vertical > vn-table > div > vn-tbody > vn-tr',
- totalClaimed: 'vn-claim-detail > vn-vertical > vn-card > vn-vertical > vn-horizontal > div > vn-label-value:nth-child(2) > section > span',
- secondItemDeleteButton: 'vn-claim-detail > vn-vertical > vn-card > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(8) > vn-icon-button > button > vn-icon > i'
- },
- claimDevelopment: {
- addDevelopmentButton: 'vn-claim-development > vn-vertical > vn-card > vn-vertical > vn-one > vn-icon-button > button > vn-icon',
- firstDeleteDevelopmentButton: 'vn-claim-development > vn-vertical > vn-card > vn-vertical > form > vn-horizontal:nth-child(2) > vn-icon-button > button > vn-icon',
- firstClaimReason: 'vn-claim-development vn-horizontal:nth-child(1) vn-autocomplete[ng-model="claimDevelopment.claimReasonFk"]',
- firstClaimResult: 'vn-claim-development vn-horizontal:nth-child(1) vn-autocomplete[ng-model="claimDevelopment.claimResultFk"]',
- firstClaimResponsible: 'vn-claim-development vn-horizontal:nth-child(1) vn-autocomplete[ng-model="claimDevelopment.claimResponsibleFk"]',
- firstClaimWorker: 'vn-claim-development vn-horizontal:nth-child(1) vn-worker-autocomplete[ng-model="claimDevelopment.workerFk"]',
- firstClaimRedelivery: 'vn-claim-development vn-horizontal:nth-child(1) vn-autocomplete[ng-model="claimDevelopment.claimRedeliveryFk"]',
- secondClaimReason: 'vn-claim-development vn-horizontal:nth-child(2) vn-autocomplete[ng-model="claimDevelopment.claimReasonFk"]',
- secondClaimResult: 'vn-claim-development vn-horizontal:nth-child(2) vn-autocomplete[ng-model="claimDevelopment.claimResultFk"]',
- secondClaimResponsible: 'vn-claim-development vn-horizontal:nth-child(2) vn-autocomplete[ng-model="claimDevelopment.claimResponsibleFk"]',
- secondClaimWorker: 'vn-claim-development vn-horizontal:nth-child(2) vn-worker-autocomplete[ng-model="claimDevelopment.workerFk"]',
- secondClaimRedelivery: 'vn-claim-development vn-horizontal:nth-child(2) vn-autocomplete[ng-model="claimDevelopment.claimRedeliveryFk"]',
- saveDevelopmentButton: 'button[type=submit]'
- },
- claimNote: {
- addNoteFloatButton: 'vn-float-button',
- note: 'vn-textarea[ng-model="$ctrl.note.text"]',
- saveButton: 'button[type=submit]',
- firstNoteText: 'vn-claim-note .text'
- },
- claimAction: {
- importClaimButton: 'vn-claim-action vn-button[label="Import claim"]',
- anyLine: 'vn-claim-action vn-tbody > vn-tr',
- firstDeleteLine: 'vn-claim-action tr:nth-child(2) vn-icon-button[icon="delete"]',
- isPaidWithManaCheckbox: 'vn-claim-action vn-check[ng-model="$ctrl.claim.isChargedToMana"]'
- },
ordersIndex: {
secondSearchResultTotal: 'vn-order-index vn-card > vn-table > div > vn-tbody .vn-tr:nth-child(2) vn-td:nth-child(9)',
advancedSearchButton: 'vn-order-search-panel vn-submit[label="Search"]',
diff --git a/e2e/paths/03-worker/01-department/01_summary.spec.js b/e2e/paths/03-worker/01-department/01_summary.spec.js
deleted file mode 100644
index e4bf8fc2d..000000000
--- a/e2e/paths/03-worker/01-department/01_summary.spec.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import selectors from '../../../helpers/selectors.js';
-import getBrowser from '../../../helpers/puppeteer';
-
-describe('department summary path', () => {
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('hr', 'worker');
- await page.accessToSection('worker.department');
- await page.doSearch('INFORMATICA');
- await page.click(selectors.department.firstDepartment);
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should reach the employee summary section and check all properties', async() => {
- expect(await page.waitToGetProperty(selectors.departmentSummary.header, 'innerText')).toEqual('INFORMATICA');
- expect(await page.getProperty(selectors.departmentSummary.name, 'innerText')).toEqual('INFORMATICA');
- expect(await page.getProperty(selectors.departmentSummary.code, 'innerText')).toEqual('it');
- expect(await page.getProperty(selectors.departmentSummary.chat, 'innerText')).toEqual('informatica-cau');
- expect(await page.getProperty(selectors.departmentSummary.bossDepartment, 'innerText')).toEqual('');
- expect(await page.getProperty(selectors.departmentSummary.email, 'innerText')).toEqual('-');
- expect(await page.getProperty(selectors.departmentSummary.clientFk, 'innerText')).toEqual('-');
- });
-});
diff --git a/e2e/paths/03-worker/01-department/02-basicData.spec.js b/e2e/paths/03-worker/01-department/02-basicData.spec.js
deleted file mode 100644
index 219d1426c..000000000
--- a/e2e/paths/03-worker/01-department/02-basicData.spec.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import getBrowser from '../../../helpers/puppeteer';
-import selectors from '../../../helpers/selectors.js';
-
-const $ = {
- form: 'vn-worker-department-basic-data form',
-};
-
-describe('department summary path', () => {
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('hr', 'worker');
- await page.accessToSection('worker.department');
- await page.doSearch('INFORMATICA');
- await page.click(selectors.department.firstDepartment);
- });
-
- beforeEach(async() => {
- await page.accessToSection('worker.department.card.basicData');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it(`should edit the department basic data and confirm the department data was edited`, async() => {
- const values = {
- Name: 'Informatica',
- Code: 'IT',
- Chat: 'informatica-cau',
- Email: 'it@verdnatura.es',
- };
-
- await page.fillForm($.form, values);
- const formValues = await page.fetchForm($.form, Object.keys(values));
- const message = await page.sendForm($.form, values);
-
- expect(message.isSuccess).toBeTrue();
- expect(formValues).toEqual(values);
- });
-});
diff --git a/e2e/paths/03-worker/01_summary.spec.js b/e2e/paths/03-worker/01_summary.spec.js
deleted file mode 100644
index 51992b41d..000000000
--- a/e2e/paths/03-worker/01_summary.spec.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker summary path', () => {
- const workerId = 3;
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('employee', 'worker');
- const httpDataResponse = page.waitForResponse(response => {
- return response.status() === 200 && response.url().includes(`Workers/${workerId}`);
- });
- await page.accessToSearchResult('agencyNick');
- await httpDataResponse;
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should reach the employee summary section and check all properties', async() => {
- expect(await page.getProperty(selectors.workerSummary.header, 'innerText')).toEqual('agency agency');
- expect(await page.getProperty(selectors.workerSummary.id, 'innerText')).toEqual('3');
- expect(await page.getProperty(selectors.workerSummary.email, 'innerText')).toEqual('agency@verdnatura.es');
- expect(await page.getProperty(selectors.workerSummary.department, 'innerText')).toEqual('CAMARA');
- expect(await page.getProperty(selectors.workerSummary.userId, 'innerText')).toEqual('3');
- expect(await page.getProperty(selectors.workerSummary.userName, 'innerText')).toEqual('agency');
- expect(await page.getProperty(selectors.workerSummary.role, 'innerText')).toEqual('agency');
- expect(await page.getProperty(selectors.workerSummary.extension, 'innerText')).toEqual('1101');
- expect(await page.getProperty(selectors.workerSummary.locker, 'innerText')).toEqual('-');
- });
-});
diff --git a/e2e/paths/03-worker/02_basicData.spec.js b/e2e/paths/03-worker/02_basicData.spec.js
deleted file mode 100644
index 66a597dd1..000000000
--- a/e2e/paths/03-worker/02_basicData.spec.js
+++ /dev/null
@@ -1,40 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker basic data path', () => {
- const workerId = 1106;
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('hr', 'worker');
- const httpDataResponse = page.waitForResponse(response => {
- return response.status() === 200 && response.url().includes(`Workers/${workerId}`);
- });
- await page.accessToSearchResult('David Charles Haller');
- await httpDataResponse;
- await page.accessToSection('worker.card.basicData');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should edit the form and then reload the section and check the data was edited', async() => {
- await page.overwrite(selectors.workerBasicData.name, 'David C.');
- await page.overwrite(selectors.workerBasicData.surname, 'H.');
- await page.overwrite(selectors.workerBasicData.phone, '444332211');
- await page.click(selectors.workerBasicData.saveButton);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
-
- await page.reloadSection('worker.card.basicData');
-
- expect(await page.waitToGetProperty(selectors.workerBasicData.name, 'value')).toEqual('David C.');
- expect(await page.waitToGetProperty(selectors.workerBasicData.surname, 'value')).toEqual('H.');
- expect(await page.waitToGetProperty(selectors.workerBasicData.phone, 'value')).toEqual('444332211');
- });
-});
diff --git a/e2e/paths/03-worker/03_pbx.spec.js b/e2e/paths/03-worker/03_pbx.spec.js
deleted file mode 100644
index 0e8003c47..000000000
--- a/e2e/paths/03-worker/03_pbx.spec.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker pbx path', () => {
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('hr', 'worker');
- await page.accessToSearchResult('employee');
- await page.accessToSection('worker.card.pbx');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should receive an error when the extension exceeds 4 characters and then sucessfully save the changes', async() => {
- await page.write(selectors.workerPbx.extension, '55555');
- await page.click(selectors.workerPbx.saveButton);
- let message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Extension format is invalid');
-
- await page.overwrite(selectors.workerPbx.extension, '4444');
- await page.click(selectors.workerPbx.saveButton);
- message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved! User must access web');
- });
-});
diff --git a/e2e/paths/03-worker/04_time_control.spec.js b/e2e/paths/03-worker/04_time_control.spec.js
deleted file mode 100644
index c6589d2e3..000000000
--- a/e2e/paths/03-worker/04_time_control.spec.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/* eslint max-len: ["error", { "code": 150 }]*/
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker time control path', () => {
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('salesBoss', 'worker');
- await page.accessToSearchResult('HankPym');
- await page.accessToSection('worker.card.timeControl');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- const eightAm = '08:00';
- const fourPm = '16:00';
- const hankPymId = 1107;
-
- it('should go to the next month, go to current month and go 1 month in the past', async() => {
- let date = Date.vnNew();
- date.setDate(1);
- date.setMonth(date.getMonth() + 1);
- let month = date.toLocaleString('default', {month: 'long'});
-
- await page.waitToClick(selectors.workerTimeControl.nextMonthButton);
- let result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');
-
- expect(result).toContain(month);
-
- date = Date.vnNew();
- date.setDate(1);
- month = date.toLocaleString('default', {month: 'long'});
-
- await page.waitToClick(selectors.workerTimeControl.previousMonthButton);
- result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');
-
- expect(result).toContain(month);
-
- date = Date.vnNew();
- date.setDate(1);
- date.setMonth(date.getMonth() - 1);
- const timestamp = Math.round(date.getTime() / 1000);
- month = date.toLocaleString('default', {month: 'long'});
-
- await page.loginAndModule('salesBoss', 'worker');
- await page.goto(`http://localhost:5000/#!/worker/${hankPymId}/time-control?timestamp=${timestamp}`);
- await page.waitToClick(selectors.workerTimeControl.secondWeekDay);
-
- result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');
-
- expect(result).toContain(month);
- });
-
- it('should change week of month', async() => {
- await page.click(selectors.workerTimeControl.thrirdWeekDay);
- const result = await page.getProperty(selectors.workerTimeControl.mondayWorkedHours, 'innerText');
-
- expect(result).toEqual('00:00 h.');
- });
-});
diff --git a/e2e/paths/03-worker/05_calendar.spec.js b/e2e/paths/03-worker/05_calendar.spec.js
deleted file mode 100644
index f0af0a053..000000000
--- a/e2e/paths/03-worker/05_calendar.spec.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/* eslint-disable max-len */
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker calendar path', () => {
- const reasonableTimeBetweenClicks = 300;
- const date = Date.vnNew();
- const lastYear = (date.getFullYear() - 1).toString();
-
- let browser;
- let page;
-
- async function accessAs(user) {
- await page.loginAndModule(user, 'worker');
- await page.accessToSearchResult('Charles Xavier');
- await page.accessToSection('worker.card.calendar');
- }
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- accessAs('hr');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- describe('as hr', () => {
- it('should set two days as holidays on the calendar and check the total holidays increased by 1.5', async() => {
- await page.waitToClick(selectors.workerCalendar.holidays);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.penultimateMondayOfJanuary);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.absence);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.lastMondayOfMarch);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.halfHoliday);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.fistMondayOfMay);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.furlough);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.secondTuesdayOfMay);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.secondWednesdayOfMay);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.secondThursdayOfMay);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.halfFurlough);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.click(selectors.workerCalendar.secondFridayOfJun);
-
- expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 1.5 ');
- });
- });
-
- describe(`as salesBoss`, () => {
- it(`should log in, get to Charles Xavier's calendar, undo what was done here, and check the total holidays used are back to what it was`, async() => {
- accessAs('salesBoss');
-
- await page.waitToClick(selectors.workerCalendar.holidays);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.penultimateMondayOfJanuary);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.absence);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.lastMondayOfMarch);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.halfHoliday);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.fistMondayOfMay);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.furlough);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.secondTuesdayOfMay);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.secondWednesdayOfMay);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.secondThursdayOfMay);
-
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.halfFurlough);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
- await page.waitToClick(selectors.workerCalendar.secondFridayOfJun);
-
- expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 0 ');
- });
- });
-
- describe(`as Charles Xavier`, () => {
- it('should log in and get to his calendar, make a futile attempt to add holidays, check the total holidays used are now the initial ones and use the year selector to go to the previous year', async() => {
- accessAs('CharlesXavier');
- await page.waitToClick(selectors.workerCalendar.holidays);
- await page.waitForTimeout(reasonableTimeBetweenClicks);
-
- await page.click(selectors.workerCalendar.penultimateMondayOfJanuary);
-
- expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 0 ');
-
- await page.autocompleteSearch(selectors.workerCalendar.year, lastYear);
-
- expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 0 ');
- });
- });
-});
diff --git a/e2e/paths/03-worker/06_create.spec.js b/e2e/paths/03-worker/06_create.spec.js
deleted file mode 100644
index 2accdfc31..000000000
--- a/e2e/paths/03-worker/06_create.spec.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker create path', () => {
- let browser;
- let page;
- let newWorker;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('hr', 'worker');
- await page.waitToClick(selectors.workerCreate.newWorkerButton);
- await page.waitForState('worker.create');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should insert default data', async() => {
- await page.write(selectors.workerCreate.firstname, 'Victor');
- await page.write(selectors.workerCreate.lastname, 'Von Doom');
- await page.write(selectors.workerCreate.fi, '78457139E');
- await page.write(selectors.workerCreate.phone, '12356789');
- await page.write(selectors.workerCreate.postcode, '46680');
- await page.write(selectors.workerCreate.street, 'S/ DOOMSTADT');
- await page.write(selectors.workerCreate.email, 'doctorDoom@marvel.com');
- await page.write(selectors.workerCreate.iban, 'ES9121000418450200051332');
-
- // should check for autocompleted worker code and worker user name
- const workerCode = await page
- .waitToGetProperty(selectors.workerCreate.code, 'value');
-
- newWorker = await page
- .waitToGetProperty(selectors.workerCreate.user, 'value');
-
- expect(workerCode).toEqual('VVD');
- expect(newWorker).toContain('victorvd');
-
- // should fail if necessary data is void
- await page.waitToClick(selectors.workerCreate.createButton);
- let message = await page.waitForSnackbar();
-
- expect(message.text).toContain('is a required argument');
-
- // should create a new worker and go to worker basic data'
- await page.pickDate(selectors.workerCreate.birth, new Date(1962, 8, 5));
- await page.autocompleteSearch(selectors.workerCreate.boss, 'deliveryAssistant');
- await page.waitToClick(selectors.workerCreate.createButton);
- message = await page.waitForSnackbar();
- await page.waitForState('worker.card.basicData');
-
- expect(message.text).toContain('Data saved!');
-
- // 'rollback'
- await page.loginAndModule('itManagement', 'account');
- await page.accessToSearchResult(newWorker);
-
- await page.waitToClick(selectors.accountDescriptor.menuButton);
- await page.waitToClick(selectors.accountDescriptor.deactivateUser);
- await page.waitToClick(selectors.accountDescriptor.acceptButton);
- message = await page.waitForSnackbar();
-
- expect(message.text).toContain('User deactivated!');
-
- await page.waitToClick(selectors.accountDescriptor.menuButton);
- await page.waitToClick(selectors.accountDescriptor.disableAccount);
- await page.waitToClick(selectors.accountDescriptor.acceptButton);
- message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Account disabled!');
- });
-});
diff --git a/e2e/paths/03-worker/08_add_notes.spec.js b/e2e/paths/03-worker/08_add_notes.spec.js
deleted file mode 100644
index bdc475c90..000000000
--- a/e2e/paths/03-worker/08_add_notes.spec.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import selectors from '../../helpers/selectors';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker Add notes path', () => {
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('hr', 'worker');
- await page.accessToSearchResult('Bruce Banner');
- await page.accessToSection('worker.card.note.index');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it(`should reach the notes index`, async() => {
- await page.waitForState('worker.card.note.index');
- });
-
- it(`should click on the add note button`, async() => {
- await page.waitToClick(selectors.workerNotes.addNoteFloatButton);
- await page.waitForState('worker.card.note.create');
- });
-
- it(`should create a note`, async() => {
- await page.waitForSelector(selectors.workerNotes.note);
- await page.type(`${selectors.workerNotes.note} textarea`, 'Meeting with Black Widow 21st 9am');
- await page.waitToClick(selectors.workerNotes.saveButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should confirm the note was created', async() => {
- const result = await page.waitToGetProperty(selectors.workerNotes.firstNoteText, 'innerText');
-
- expect(result).toEqual('Meeting with Black Widow 21st 9am');
- });
-});
diff --git a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
index e0f32fc3a..d9689e31a 100644
--- a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
+++ b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
@@ -19,7 +19,9 @@ describe('Ticket Edit sale path', () => {
it(`should click on the first sale claim icon to navigate over there`, async() => {
await page.waitToClick(selectors.ticketSales.firstSaleClaimIcon);
- await page.waitForState('claim.card.basicData');
+ await page.waitForNavigation();
+ await page.goBack();
+ await page.goBack();
});
it('should navigate to the tickets index', async() => {
@@ -243,29 +245,13 @@ describe('Ticket Edit sale path', () => {
await page.waitToClick(selectors.ticketSales.moreMenu);
await page.waitToClick(selectors.ticketSales.moreMenuCreateClaim);
await page.waitToClick(selectors.globalItems.acceptButton);
- await page.waitForState('claim.card.basicData');
- });
-
- it('should click on the Claims button of the top bar menu', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.claimsButton);
- await page.waitForState('claim.index');
- });
-
- it('should search for the claim with id 4', async() => {
- await page.accessToSearchResult('4');
- await page.waitForState('claim.card.summary');
- });
-
- it('should click the Tickets button of the top bar menu', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.ticketsButton);
- await page.waitForState('ticket.index');
+ await page.waitForNavigation();
});
it('should search for a ticket then access to the sales section', async() => {
+ await page.goBack();
+ await page.goBack();
+ await page.loginAndModule('salesPerson', 'ticket');
await page.accessToSearchResult('16');
await page.accessToSection('ticket.card.sale');
});
diff --git a/e2e/paths/06-claim/01_basic_data.spec.js b/e2e/paths/06-claim/01_basic_data.spec.js
deleted file mode 100644
index 33c68183f..000000000
--- a/e2e/paths/06-claim/01_basic_data.spec.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Claim edit basic data path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it(`should log in as claimManager then reach basic data of the target claim`, async() => {
- await page.loginAndModule('claimManager', 'claim');
- await page.accessToSearchResult('1');
- await page.accessToSection('claim.card.basicData');
- });
-
- it(`should edit claim state and observation fields`, async() => {
- await page.autocompleteSearch(selectors.claimBasicData.claimState, 'Resuelto');
- await page.clearInput(selectors.claimBasicData.packages);
- await page.write(selectors.claimBasicData.packages, '2');
- await page.waitToClick(selectors.claimBasicData.saveButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should have been redirected to the next section of claims as the role is claimManager`, async() => {
- await page.waitForState('claim.card.detail');
- });
-
- it('should confirm the claim state was edited', async() => {
- await page.reloadSection('claim.card.basicData');
- await page.waitForSelector(selectors.claimBasicData.claimState);
- const result = await page.waitToGetProperty(selectors.claimBasicData.claimState, 'value');
-
- expect(result).toEqual('Resuelto');
- });
-
- it('should confirm the claim packages was edited', async() => {
- const result = await page
- .waitToGetProperty(selectors.claimBasicData.packages, 'value');
-
- expect(result).toEqual('2');
- });
-
- it(`should edit the claim to leave it untainted`, async() => {
- await page.autocompleteSearch(selectors.claimBasicData.claimState, 'Pendiente');
- await page.clearInput(selectors.claimBasicData.packages);
- await page.write(selectors.claimBasicData.packages, '0');
- await page.waitToClick(selectors.claimBasicData.saveButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-});
diff --git a/e2e/paths/06-claim/03_claim_action.spec.js b/e2e/paths/06-claim/03_claim_action.spec.js
deleted file mode 100644
index ac6f72e37..000000000
--- a/e2e/paths/06-claim/03_claim_action.spec.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer.js';
-
-describe('Claim action path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('claimManager', 'claim');
- await page.accessToSearchResult('2');
- await page.accessToSection('claim.card.action');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should import the claim', async() => {
- await page.waitToClick(selectors.claimAction.importClaimButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should delete the first line', async() => {
- await page.waitToClick(selectors.claimAction.firstDeleteLine);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should refresh the view to check not have lines', async() => {
- await page.reloadSection('claim.card.action');
- const result = await page.countElement(selectors.claimAction.anyLine);
-
- expect(result).toEqual(0);
- });
-
- it('should check the "is paid with mana" checkbox', async() => {
- await page.waitToClick(selectors.claimAction.isPaidWithManaCheckbox);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should confirm the "is paid with mana" is checked', async() => {
- await page.reloadSection('claim.card.action');
- const isPaidWithManaCheckbox = await page.checkboxState(selectors.claimAction.isPaidWithManaCheckbox);
-
- expect(isPaidWithManaCheckbox).toBe('checked');
- });
-});
diff --git a/e2e/paths/06-claim/04_summary.spec.js b/e2e/paths/06-claim/04_summary.spec.js
deleted file mode 100644
index dda8484a6..000000000
--- a/e2e/paths/06-claim/04_summary.spec.js
+++ /dev/null
@@ -1,96 +0,0 @@
-
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer.js';
-
-describe('Claim summary path', () => {
- let browser;
- let page;
- const claimId = '4';
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should navigate to the target claim summary section', async() => {
- await page.loginAndModule('salesPerson', 'claim');
- await page.accessToSearchResult(claimId);
- await page.waitForState('claim.card.summary');
- });
-
- it(`should display details from the claim and it's client on the top of the header`, async() => {
- await page.waitForTextInElement(selectors.claimSummary.header, 'Tony Stark');
- const result = await page.waitToGetProperty(selectors.claimSummary.header, 'innerText');
-
- expect(result).toContain('4 -');
- expect(result).toContain('Tony Stark');
- });
-
- it('should display the claim state', async() => {
- const result = await page.waitToGetProperty(selectors.claimSummary.state, 'innerText');
-
- expect(result).toContain('Resuelto');
- });
-
- it('should display the observation', async() => {
- const result = await page.waitToGetProperty(selectors.claimSummary.observation, 'innerText');
-
- expect(result).toContain('Wisi forensibus mnesarchum in cum. Per id impetus abhorreant');
- });
-
- it('should display the claimed line(s)', async() => {
- const result = await page.waitToGetProperty(selectors.claimSummary.firstSaleItemId, 'innerText');
-
- expect(result).toContain('2');
- });
-
- it(`should click on the first sale ID making the item descriptor visible`, async() => {
- const firstItem = selectors.claimSummary.firstSaleItemId;
- await page.evaluate(selectors => {
- document.querySelector(selectors).scrollIntoView();
- }, firstItem);
- await page.click(firstItem);
- await page.waitImgLoad(selectors.claimSummary.firstSaleDescriptorImage);
- const visible = await page.isVisible(selectors.claimSummary.itemDescriptorPopover);
-
- expect(visible).toBeTruthy();
- });
-
- it(`should check the url for the item diary link of the descriptor is for the right item id`, async() => {
- await page.waitForSelector(selectors.claimSummary.itemDescriptorPopoverItemDiaryButton, {visible: true});
-
- await page.closePopup();
- });
-
- it('should display the claim development details', async() => {
- const result = await page.waitToGetProperty(selectors.claimSummary.firstDevelopmentWorker, 'innerText');
-
- expect(result).toContain('salesAssistantNick');
- });
-
- it(`should click on the first development worker making the worker descriptor visible`, async() => {
- await page.waitToClick(selectors.claimSummary.firstDevelopmentWorker);
-
- const visible = await page.isVisible(selectors.claimSummary.firstDevelopmentWorkerGoToClientButton);
-
- expect(visible).toBeTruthy();
- });
-
- it(`should check the url for the go to clientlink of the descriptor is for the right client id`, async() => {
- await page.waitForSelector(selectors.claimSummary.firstDevelopmentWorkerGoToClientButton, {visible: true});
-
- await page.closePopup();
- });
-
- it(`should click on the first action ticket ID making the ticket descriptor visible`, async() => {
- await page.waitToClick(selectors.claimSummary.firstActionTicketId);
- await page.waitForSelector(selectors.claimSummary.firstActionTicketDescriptor);
- const visible = await page.isVisible(selectors.claimSummary.firstActionTicketDescriptor);
-
- expect(visible).toBeTruthy();
- });
-});
diff --git a/e2e/paths/06-claim/05_descriptor.spec.js b/e2e/paths/06-claim/05_descriptor.spec.js
deleted file mode 100644
index 49912b26a..000000000
--- a/e2e/paths/06-claim/05_descriptor.spec.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer.js';
-
-describe('Claim descriptor path', () => {
- let browser;
- let page;
- const claimId = '1';
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should now navigate to the target claim summary section', async() => {
- await page.loginAndModule('salesPerson', 'claim');
- await page.accessToSearchResult(claimId);
- await page.waitForState('claim.card.summary');
- });
-
- it(`should not be able to see the delete claim button of the descriptor more menu`, async() => {
- await page.waitToClick(selectors.claimDescriptor.moreMenu);
- await page.waitForSelector(selectors.claimDescriptor.moreMenuDeleteClaim, {hidden: true});
- });
-
- it(`should log in as claimManager and navigate to the target claim`, async() => {
- await page.loginAndModule('claimManager', 'claim');
- await page.accessToSearchResult(claimId);
- await page.waitForState('claim.card.summary');
- });
-
- it(`should be able to see the delete claim button of the descriptor more menu`, async() => {
- await page.waitToClick(selectors.claimDescriptor.moreMenu);
- await page.waitForSelector(selectors.claimDescriptor.moreMenuDeleteClaim, {visible: true});
- });
-
- it(`should delete the claim`, async() => {
- await page.waitToClick(selectors.claimDescriptor.moreMenuDeleteClaim);
- await page.waitToClick(selectors.claimDescriptor.acceptDeleteClaim);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Claim deleted!');
- });
-
- it(`should have been relocated to the claim index`, async() => {
- await page.waitForState('claim.index');
- });
-
- it(`should search for the deleted claim to find no results`, async() => {
- await page.doSearch(claimId);
- const nResults = await page.countElement(selectors.claimsIndex.searchResult);
-
- expect(nResults).toEqual(0);
- });
-});
diff --git a/e2e/paths/06-claim/06_note.spec.js b/e2e/paths/06-claim/06_note.spec.js
deleted file mode 100644
index 830f77cbe..000000000
--- a/e2e/paths/06-claim/06_note.spec.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import selectors from '../../helpers/selectors';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Claim Add note path', () => {
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('salesPerson', 'claim');
- await page.accessToSearchResult('2');
- await page.accessToSection('claim.card.note.index');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it(`should reach the claim note index`, async() => {
- await page.waitForState('claim.card.note.index');
- });
-
- it(`should click on the add new note button`, async() => {
- await page.waitToClick(selectors.claimNote.addNoteFloatButton);
- await page.waitForState('claim.card.note.create');
- });
-
- it(`should create a new note`, async() => {
- await page.waitForSelector(selectors.claimNote.note);
- await page.type(`${selectors.claimNote.note} textarea`, 'The delivery was unsuccessful');
- await page.waitToClick(selectors.claimNote.saveButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should redirect back to the claim notes page`, async() => {
- await page.waitForState('claim.card.note.index');
- });
-
- it('should confirm the note was created', async() => {
- const result = await page.waitToGetProperty(selectors.claimNote.firstNoteText, 'innerText');
-
- expect(result).toEqual('The delivery was unsuccessful');
- });
-});
diff --git a/e2e/paths/08-route/01_summary.spec.js b/e2e/paths/08-route/01_summary.spec.js
deleted file mode 100644
index 44f66ba2d..000000000
--- a/e2e/paths/08-route/01_summary.spec.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Route summary path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('employee', 'route');
- await page.waitToClick(selectors.routeIndex.previewButton);
- await page.waitToClick(selectors.routeSummary.goToRouteSummaryButton);
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should reach the first route summary section', async() => {
- await page.waitForState('route.card.summary');
- });
-
- it(`should display details from the route on the header`, async() => {
- await page.waitForTextInElement(selectors.routeSummary.header, 'first route');
- const result = await page.waitToGetProperty(selectors.routeSummary.header, 'innerText');
-
- expect(result).toContain('first route');
- });
-
- it('should display some route details like the cost', async() => {
- const result = await page.waitToGetProperty(selectors.routeSummary.cost, 'innerText');
-
- expect(result).toContain('€10.00');
- });
-
- it('should click on the first ticket ID making the descriptor popover visible', async() => {
- await page.waitForState('route.card.summary');
- await page.waitForTimeout(250);
- await page.waitToClick(selectors.routeSummary.firstTicketID);
- await page.waitForSelector(selectors.routeSummary.firstTicketDescriptor);
- const visible = await page.isVisible(selectors.routeSummary.firstTicketDescriptor);
-
- expect(visible).toBe(true);
- });
-
- it('should close the ticket descriptor', async() => {
- await page.closePopup();
- });
-
- it('should click on the first alias making the client descriptor popover visible', async() => {
- await page.waitToClick(selectors.routeSummary.firstAlias);
- await page.waitForSelector(selectors.routeSummary.firstClientDescriptor);
- const visible = await page.isVisible(selectors.routeSummary.firstClientDescriptor);
-
- expect(visible).toBe(true);
- });
-
- it('should close the client descriptor', async() => {
- await page.closePopup();
- });
-});
diff --git a/e2e/paths/08-route/02_basic_data.spec.js b/e2e/paths/08-route/02_basic_data.spec.js
deleted file mode 100644
index 7ab7dda42..000000000
--- a/e2e/paths/08-route/02_basic_data.spec.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Route basic Data path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('delivery', 'route');
- await page.accessToSearchResult('1');
- await page.accessToSection('route.card.basicData');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should edit the route basic data and confirm the route was edited', async() => {
- const nextMonth = Date.vnNew();
- nextMonth.setMonth(nextMonth.getMonth() + 1);
- nextMonth.setUTCHours(0, 0, 0, 0);
-
- const form = 'vn-route-basic-data form';
- const values = {
- worker: 'adminBossNick',
- vehicle: '1111-IMK',
- created: nextMonth,
- kmStart: 1,
- kmEnd: 2,
- started: '08:00',
- finished: '12:30',
- };
-
- const message = await page.sendForm(form, values);
- await page.reloadSection('route.card.basicData');
- const formValues = await page.fetchForm(form, Object.keys(values));
-
- expect(message.isSuccess).toBeTrue();
- expect(formValues).toEqual(values);
- });
-});
diff --git a/e2e/paths/08-route/03_create_and_clone.spec.js b/e2e/paths/08-route/03_create_and_clone.spec.js
deleted file mode 100644
index 31c0cfc18..000000000
--- a/e2e/paths/08-route/03_create_and_clone.spec.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Route create path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('employee', 'route');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- describe('as employee', () => {
- it('should click on the add new route button and open the creation form', async() => {
- await page.waitToClick(selectors.routeIndex.addNewRouteButton);
- await page.waitForState('route.create');
- });
-
- it(`should attempt to create a new route but fail since employee has no access rights`, async() => {
- await page.write(selectors.createRouteView.description, 'faster faster!!');
- await page.waitToClick(selectors.createRouteView.submitButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Access Denied');
- });
- });
-
- describe('as delivery', () => {
- beforeAll(async() => {
- await page.login('delivery');
- await page.selectModule('route');
- });
-
- it('should again click on the add new route button and open the creation form', async() => {
- await page.waitToClick(selectors.routeIndex.addNewRouteButton);
- await page.waitForState('route.create');
- });
-
- it(`should create a new route`, async() => {
- await page.autocompleteSearch(selectors.createRouteView.worker, 'teamManagerNick');
- await page.pickDate(selectors.createRouteView.createdDatePicker);
- await page.autocompleteSearch(selectors.createRouteView.vehicleAuto, '4444-IMK');
- await page.autocompleteSearch(selectors.createRouteView.agency, 'Teleportation device');
- await page.write(selectors.createRouteView.description, 'faster faster!!');
- await page.waitToClick(selectors.createRouteView.submitButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should confirm the redirection to the created route summary`, async() => {
- await page.waitForState('route.card.summary');
- });
-
- it(`should navigate back to the route index`, async() => {
- await page.waitToClick(selectors.globalItems.returnToModuleIndexButton);
- await page.waitForState('route.index');
- });
-
- let count;
- it(`should count the amount of routes before clonation`, async() => {
- await page.waitForFunction(selector => {
- return document.querySelectorAll(selector).length > 6;
- }, {}, selectors.routeIndex.anyResult);
- count = await page.countElement(selectors.routeIndex.anyResult);
-
- expect(count).toBeGreaterThanOrEqual(7);
- });
-
- it(`should clone the first route`, async() => {
- await page.waitToClick(selectors.routeIndex.firstRouteCheckbox);
- await page.waitToClick(selectors.routeIndex.cloneButton);
- await page.waitToClick(selectors.routeIndex.submitClonationButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should reload the section and count the amount of routes after clonation`, async() => {
- await page.waitForNumberOfElements(selectors.routeIndex.anyResult, count + 1);
- const result = await page.countElement(selectors.routeIndex.anyResult);
-
- expect(result).toEqual(count + 1);
- });
- });
-});
diff --git a/e2e/paths/08-route/04_tickets.spec.js b/e2e/paths/08-route/04_tickets.spec.js
deleted file mode 100644
index c890162a1..000000000
--- a/e2e/paths/08-route/04_tickets.spec.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Route tickets path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('delivery', 'route');
- await page.accessToSearchResult('2');
- await page.accessToSection('route.card.tickets');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should modify the first ticket priority', async() => {
- await page.writeOnEditableTD(selectors.routeTickets.firstTicketPriority, '9');
- await page.keyboard.press('Enter');
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should confirm the buscaman button is disabled', async() => {
- await page.waitForSelector(`${selectors.routeTickets.buscamanButton}.disabled`);
- });
-
- it('should check the first ticket checkbox and confirm the buscamanButton button is no longer disabled', async() => {
- await page.waitForSelector(`${selectors.routeTickets.buscamanButton}.disabled`, {visible: false});
- });
-
- it('should check the route volume on the descriptor', async() => {
- const result = await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');
-
- expect(result).toEqual('0.2 / 50 m³');
- });
-
- it('should count how many tickets are in route', async() => {
- const result = await page.countElement(selectors.routeTickets.anyTicket);
-
- expect(result).toEqual(1);
- });
-
- it('should delete the first ticket in route', async() => {
- await page.waitToClick(selectors.routeTickets.firstTicketDeleteButton);
- await page.waitToClick(selectors.routeTickets.confirmButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Ticket removed from route');
- });
-
- it('should now count how many tickets are in route to find one less', async() => {
- await page.waitForNumberOfElements(selectors.routeTickets.anyTicket, 0);
- });
-});
diff --git a/e2e/paths/09-invoice-in/01_summary.spec.js b/e2e/paths/09-invoice-in/01_summary.spec.js
deleted file mode 100644
index d5932efd0..000000000
--- a/e2e/paths/09-invoice-in/01_summary.spec.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceIn summary path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceIn');
- await page.accessToSearchResult('1');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should reach the summary section', async() => {
- await page.waitForState('invoiceIn.card.summary');
- });
-
- it('should contain some basic data from the invoice', async() => {
- const result = await page.waitToGetProperty(selectors.invoiceInSummary.supplierRef, 'innerText');
-
- expect(result).toEqual('1234');
- });
-});
diff --git a/e2e/paths/09-invoice-in/02_descriptor.spec.js b/e2e/paths/09-invoice-in/02_descriptor.spec.js
deleted file mode 100644
index 02bbce7ac..000000000
--- a/e2e/paths/09-invoice-in/02_descriptor.spec.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceIn descriptor path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceIn');
- await page.accessToSearchResult('10');
- await page.accessToSection('invoiceIn.card.basicData');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should clone the invoiceIn using the descriptor more menu', async() => {
- await page.waitToClick(selectors.invoiceInDescriptor.moreMenu);
- await page.waitToClick(selectors.invoiceInDescriptor.moreMenuCloneInvoiceIn);
- await page.waitToClick(selectors.invoiceInDescriptor.acceptButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('InvoiceIn cloned');
- });
-
- it('should have been redirected to the created invoiceIn summary', async() => {
- await page.waitForState('invoiceIn.card.summary');
- });
-
- it('should delete the cloned invoiceIn using the descriptor more menu', async() => {
- await page.waitToClick(selectors.invoiceInDescriptor.moreMenu);
- await page.waitToClick(selectors.invoiceInDescriptor.moreMenuDeleteInvoiceIn);
- await page.waitToClick(selectors.invoiceInDescriptor.acceptButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('InvoiceIn deleted');
- });
-
- it('should have been relocated to the invoiceOut index', async() => {
- await page.waitForState('invoiceIn.index');
- });
-
- it(`should search for the deleted invouceOut to find no results`, async() => {
- await page.doSearch('10');
- const nResults = await page.countElement(selectors.invoiceOutIndex.searchResult);
-
- expect(nResults).toEqual(0);
- });
-});
diff --git a/e2e/paths/09-invoice-in/03_basic_data.spec.js b/e2e/paths/09-invoice-in/03_basic_data.spec.js
deleted file mode 100644
index 50fe18830..000000000
--- a/e2e/paths/09-invoice-in/03_basic_data.spec.js
+++ /dev/null
@@ -1,196 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceIn basic data path', () => {
- let browser;
- let page;
- let newDms;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceIn');
- await page.accessToSearchResult('1');
- await page.accessToSection('invoiceIn.card.basicData');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it(`should edit the invoiceIn basic data`, async() => {
- const now = Date.vnNew();
- await page.pickDate(selectors.invoiceInBasicData.issued, now);
- await page.pickDate(selectors.invoiceInBasicData.operated, now);
- await page.autocompleteSearch(selectors.invoiceInBasicData.supplier, 'Verdnatura');
- await page.clearInput(selectors.invoiceInBasicData.supplierRef);
- await page.write(selectors.invoiceInBasicData.supplierRef, '9999');
- await page.clearInput(selectors.invoiceInBasicData.dms);
- await page.write(selectors.invoiceInBasicData.dms, '2');
- await page.pickDate(selectors.invoiceInBasicData.bookEntried, now);
- await page.pickDate(selectors.invoiceInBasicData.booked, now);
- await page.autocompleteSearch(selectors.invoiceInBasicData.currency, 'USD');
- await page.autocompleteSearch(selectors.invoiceInBasicData.company, 'ORN');
- await page.waitToClick(selectors.invoiceInBasicData.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should confirm the invoiceIn supplier was edited`, async() => {
- await page.reloadSection('invoiceIn.card.basicData');
- const result = await page.waitToGetProperty(selectors.invoiceInBasicData.supplier, 'value');
-
- expect(result).toContain('Verdnatura');
- });
-
- it(`should confirm the invoiceIn supplierRef was edited`, async() => {
- const result = await page
- .waitToGetProperty(selectors.invoiceInBasicData.supplierRef, 'value');
-
- expect(result).toEqual('9999');
- });
-
- it(`should confirm the invoiceIn currency was edited`, async() => {
- const result = await page
- .waitToGetProperty(selectors.invoiceInBasicData.currency, 'value');
-
- expect(result).toEqual('USD');
- });
-
- it(`should confirm the invoiceIn company was edited`, async() => {
- const result = await page
- .waitToGetProperty(selectors.invoiceInBasicData.company, 'value');
-
- expect(result).toEqual('ORN');
- });
-
- it(`should confirm the invoiceIn dms was edited`, async() => {
- const result = await page
- .waitToGetProperty(selectors.invoiceInBasicData.dms, 'value');
-
- expect(result).toEqual('2');
- });
-
- it(`should create a new invoiceIn dms and save the changes`, async() => {
- await page.clearInput(selectors.invoiceInBasicData.dms);
- await page.waitToClick(selectors.invoiceInBasicData.create);
-
- await page.clearInput(selectors.invoiceInBasicData.reference);
- await page.write(selectors.invoiceInBasicData.reference, 'New Dms');
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- let message = await page.waitForSnackbar();
-
- await page.clearInput(selectors.invoiceInBasicData.companyId);
- await page.autocompleteSearch(selectors.invoiceInBasicData.companyId, 'VNL');
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- message = await page.waitForSnackbar();
-
- await page.clearInput(selectors.invoiceInBasicData.warehouseId);
- await page.autocompleteSearch(selectors.invoiceInBasicData.warehouseId, 'Warehouse One');
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- message = await page.waitForSnackbar();
-
- await page.clearInput(selectors.invoiceInBasicData.dmsTypeId);
- await page.autocompleteSearch(selectors.invoiceInBasicData.dmsTypeId, 'Ticket');
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- message = await page.waitForSnackbar();
-
- await page.waitToClick(selectors.invoiceInBasicData.description);
- await page.write(selectors.invoiceInBasicData.description, 'Dms without edition.');
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- message = await page.waitForSnackbar();
-
- expect(message.text).toContain('The files can\'t be empty');
-
- let currentDir = process.cwd();
- let filePath = `${currentDir}/e2e/assets/thermograph.jpeg`;
-
- const [fileChooser] = await Promise.all([
- page.waitForFileChooser(),
- page.waitToClick(selectors.invoiceInBasicData.inputFile)
- ]);
- await fileChooser.accept([filePath]);
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
-
- newDms = await page
- .waitToGetProperty(selectors.invoiceInBasicData.dms, 'value');
- });
-
- it(`should confirm the invoiceIn was edited with the new dms`, async() => {
- await page.reloadSection('invoiceIn.card.basicData');
- const result = await page
- .waitToGetProperty(selectors.invoiceInBasicData.dms, 'value');
-
- expect(result).toEqual(newDms);
- });
-
- it(`should edit the invoiceIn`, async() => {
- await page.waitToClick(selectors.invoiceInBasicData.edit);
-
- await page.clearInput(selectors.invoiceInBasicData.reference);
- await page.write(selectors.invoiceInBasicData.reference, 'Dms Edited');
- await page.clearInput(selectors.invoiceInBasicData.companyId);
- await page.autocompleteSearch(selectors.invoiceInBasicData.companyId, 'CCs');
- await page.clearInput(selectors.invoiceInBasicData.warehouseId);
- await page.autocompleteSearch(selectors.invoiceInBasicData.warehouseId, 'Algemesi');
- await page.clearInput(selectors.invoiceInBasicData.dmsTypeId);
- await page.autocompleteSearch(selectors.invoiceInBasicData.dmsTypeId, 'Basura');
- await page.waitToClick(selectors.invoiceInBasicData.description);
- await page.write(selectors.invoiceInBasicData.description, ' Nevermind, now is edited.');
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- let message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should confirm the new dms has been edited`, async() => {
- await page.reloadSection('invoiceIn.card.basicData');
- await page.waitToClick(selectors.invoiceInBasicData.edit);
-
- const reference = await page
- .waitToGetProperty(selectors.invoiceInBasicData.reference, 'value');
- const companyId = await page
- .waitToGetProperty(selectors.invoiceInBasicData.companyId, 'value');
- const warehouseId = await page
- .waitToGetProperty(selectors.invoiceInBasicData.warehouseId, 'value');
- const dmsTypeId = await page
- .waitToGetProperty(selectors.invoiceInBasicData.dmsTypeId, 'value');
- const description = await page
- .waitToGetProperty(selectors.invoiceInBasicData.description, 'value');
-
- expect(reference).toEqual('Dms Edited');
- expect(companyId).toEqual('CCs');
- expect(warehouseId).toEqual('Algemesi');
- expect(dmsTypeId).toEqual('Basura');
- expect(description).toEqual('Dms without edition. Nevermind, now is edited.');
-
- await page.waitToClick(selectors.invoiceInBasicData.confirm);
- });
-
- it(`should disable edit and download if dms doesn't exists, and set back the original dms`, async() => {
- await page.clearInput(selectors.invoiceInBasicData.dms);
- await page.write(selectors.invoiceInBasicData.dms, '9999');
-
- await page.waitForSelector(`${selectors.invoiceInBasicData.download}.disabled`);
- await page.waitForSelector(`${selectors.invoiceInBasicData.edit}.disabled`);
-
- await page.clearInput(selectors.invoiceInBasicData.dms);
- await page.write(selectors.invoiceInBasicData.dms, '1');
-
- await page.waitToClick(selectors.invoiceInBasicData.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-});
diff --git a/e2e/paths/09-invoice-in/04_tax.spec.js b/e2e/paths/09-invoice-in/04_tax.spec.js
deleted file mode 100644
index d51c39048..000000000
--- a/e2e/paths/09-invoice-in/04_tax.spec.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceIn tax path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('developer', 'invoiceIn');
- await page.accessToSearchResult('2');
- await page.accessToSection('invoiceIn.card.tax');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should add a new tax and check it', async() => {
- await page.waitToClick(selectors.invoiceInTax.addTaxButton);
- await page.autocompleteSearch(selectors.invoiceInTax.thirdExpense, '6210000567');
- await page.write(selectors.invoiceInTax.thirdTaxableBase, '100');
- await page.autocompleteSearch(selectors.invoiceInTax.thirdTaxType, 'H.P. IVA');
- await page.autocompleteSearch(selectors.invoiceInTax.thirdTransactionType, 'Operaciones exentas');
- await page.waitToClick(selectors.invoiceInTax.saveButton);
- const message = await page.waitForSnackbar();
-
- await page.waitToClick(selectors.invoiceInDescriptor.summaryIcon);
- await page.waitForState('invoiceIn.card.summary');
- const total = await page.waitToGetProperty(selectors.invoiceInSummary.totalTaxableBase, 'innerText');
-
- await page.accessToSection('invoiceIn.card.tax');
-
- const thirdExpense = await page.waitToGetProperty(selectors.invoiceInTax.thirdExpense, 'value');
- const thirdTaxableBase = await page.waitToGetProperty(selectors.invoiceInTax.thirdTaxableBase, 'value');
- const thirdTaxType = await page.waitToGetProperty(selectors.invoiceInTax.thirdTaxType, 'value');
- const thirdTransactionType = await page.waitToGetProperty(selectors.invoiceInTax.thirdTransactionType, 'value');
- const thirdRate = await page.waitToGetProperty(selectors.invoiceInTax.thirdRate, 'value');
-
- expect(message.text).toContain('Data saved!');
-
- expect(total).toEqual('Taxable base €1,323.16');
-
- expect(thirdExpense).toEqual('6210000567');
- expect(thirdTaxableBase).toEqual('100');
- expect(thirdTaxType).toEqual('H.P. IVA 4% CEE');
- expect(thirdTransactionType).toEqual('Operaciones exentas');
- expect(thirdRate).toEqual('€4.00');
- });
-
- it('should delete the added line', async() => {
- await page.waitToClick(selectors.invoiceInTax.thirdDeleteButton);
- await page.waitToClick(selectors.invoiceInTax.saveButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-});
diff --git a/e2e/paths/09-invoice-in/05_serial.spec.js b/e2e/paths/09-invoice-in/05_serial.spec.js
deleted file mode 100644
index 8be5660da..000000000
--- a/e2e/paths/09-invoice-in/05_serial.spec.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceIn serial path', () => {
- let browser;
- let page;
- let httpRequest;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceIn');
- await page.accessToSection('invoiceIn.serial');
- page.on('request', req => {
- if (req.url().includes(`InvoiceIns/getSerial`))
- httpRequest = req.url();
- });
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should check that passes the correct params to back', async() => {
- await page.overwrite(selectors.invoiceInSerial.daysAgo, '30');
- await page.keyboard.press('Enter');
-
- expect(httpRequest).toContain('daysAgo=30');
-
- await page.overwrite(selectors.invoiceInSerial.serial, 'R');
- await page.keyboard.press('Enter');
-
- expect(httpRequest).toContain('serial=R');
- await page.click(selectors.invoiceInSerial.chip);
- });
-
- it('should go to index and check if the search-panel has the correct params', async() => {
- await page.waitToClick(selectors.invoiceInSerial.goToIndex);
- const params = await page.$$(selectors.invoiceInIndex.topbarSearchParams);
- const serial = await params[0].getProperty('title');
- const isBooked = await params[1].getProperty('title');
- const from = await params[2].getProperty('title');
-
- expect(await serial.jsonValue()).toContain('serial');
- expect(await isBooked.jsonValue()).toContain('not isBooked');
- expect(await from.jsonValue()).toContain('from');
- });
-});
diff --git a/e2e/paths/09-invoice-out/01_summary.spec.js b/e2e/paths/09-invoice-out/01_summary.spec.js
deleted file mode 100644
index 09ac66ffc..000000000
--- a/e2e/paths/09-invoice-out/01_summary.spec.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut summary path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('employee', 'invoiceOut');
- await page.accessToSearchResult('T1111111');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should reach the summary section', async() => {
- await page.waitForState('invoiceOut.card.summary');
- });
-
- it('should contain the company from which the invoice is emited', async() => {
- const result = await page.waitToGetProperty(selectors.invoiceOutSummary.company, 'innerText');
-
- expect(result).toEqual('Company VNL');
- });
-
- it('should contain the tax breakdown', async() => {
- const firstTax = await page.waitToGetProperty(selectors.invoiceOutSummary.taxOne, 'innerText');
- const secondTax = await page.waitToGetProperty(selectors.invoiceOutSummary.taxTwo, 'innerText');
-
- expect(firstTax).toContain('10%');
- expect(secondTax).toContain('21%');
- });
-
- it('should contain the tickets info', async() => {
- const firstTicket = await page.waitToGetProperty(selectors.invoiceOutSummary.ticketOne, 'innerText');
- const secondTicket = await page.waitToGetProperty(selectors.invoiceOutSummary.ticketTwo, 'innerText');
-
- expect(firstTicket).toContain('Bat cave');
- expect(secondTicket).toContain('Bat cave');
- });
-});
diff --git a/e2e/paths/09-invoice-out/02_descriptor.spec.js b/e2e/paths/09-invoice-out/02_descriptor.spec.js
deleted file mode 100644
index 5169345bc..000000000
--- a/e2e/paths/09-invoice-out/02_descriptor.spec.js
+++ /dev/null
@@ -1,137 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut descriptor path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'ticket');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- describe('as Administrative', () => {
- it('should search for tickets with an specific invoiceOut', async() => {
- await page.waitToClick(selectors.ticketsIndex.openAdvancedSearchButton);
- await page.clearInput(selectors.ticketsIndex.advancedSearchDaysOnward);
- await page.write(selectors.ticketsIndex.advancedSearchInvoiceOut, 'T2222222');
- await page.waitToClick(selectors.ticketsIndex.advancedSearchButton);
- await page.waitForState('ticket.card.summary');
- });
-
- it('should navigate to the invoiceOut index', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.invoiceOutButton);
- await page.waitForSelector(selectors.invoiceOutIndex.topbarSearch);
- await page.waitForState('invoiceOut.index');
- });
-
- it(`should click on the search result to access to the invoiceOut summary`, async() => {
- await page.accessToSearchResult('T2222222');
- await page.waitForState('invoiceOut.card.summary');
- });
-
- it('should delete the invoiceOut using the descriptor more menu', async() => {
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut);
- await page.waitToClick(selectors.invoiceOutDescriptor.acceptDeleteButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('InvoiceOut deleted');
- });
-
- it('should have been relocated to the invoiceOut index', async() => {
- await page.waitForState('invoiceOut.index');
- });
-
- it(`should search for the deleted invouceOut to find no results`, async() => {
- await page.doSearch('T2222222');
- const nResults = await page.countElement(selectors.invoiceOutIndex.searchResult);
-
- expect(nResults).toEqual(0);
- });
-
- it('should navigate to the ticket index', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.ticketsButton);
- await page.waitForState('ticket.index');
- });
-
- it('should search now for tickets with an specific invoiceOut to find no results', async() => {
- await page.doSearch('T2222222');
- const nResults = await page.countElement(selectors.ticketsIndex.searchResult);
-
- expect(nResults).toEqual(0);
- });
-
- it('should now navigate to the invoiceOut index', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.invoiceOutButton);
- await page.waitForState('invoiceOut.index');
- });
-
- it(`should search and access to the invoiceOut summary`, async() => {
- await page.accessToSearchResult('T1111111');
- await page.waitForState('invoiceOut.card.summary');
- });
-
- it(`should check the invoiceOut is booked in the summary data`, async() => {
- await page.waitForTextInElement(selectors.invoiceOutSummary.bookedLabel, '/');
- const result = await page.waitToGetProperty(selectors.invoiceOutSummary.bookedLabel, 'innerText');
-
- expect(result.length).toBeGreaterThan(1);
- });
-
- it('should re-book the invoiceOut using the descriptor more menu', async() => {
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenuBookInvoiceOut);
- await page.waitToClick(selectors.invoiceOutDescriptor.acceptBookingButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('InvoiceOut booked');
- });
-
- it(`should check the invoiceOut booked in the summary data`, async() => {
- let today = Date.vnNew();
-
- let day = today.getDate();
- if (day < 10) day = `0${day}`;
-
- let month = (today.getMonth() + 1);
- if (month < 10) month = `0${month}`;
-
- let expectedDate = `${day}/${month}/${today.getFullYear()}`;
-
- await page.waitForContentLoaded();
- const result = await page
- .waitToGetProperty(selectors.invoiceOutSummary.bookedLabel, 'innerText');
-
- expect(result).toEqual(expectedDate);
- });
- });
-
- describe('as salesPerson', () => {
- it(`should log in as salesPerson then go to the target invoiceOut summary`, async() => {
- await page.loginAndModule('salesPerson', 'invoiceOut');
- await page.accessToSearchResult('A1111111');
- });
-
- it(`should check the salesPerson role doens't see the book option in the more menu`, async() => {
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
- await page.waitForSelector(selectors.invoiceOutDescriptor.moreMenuShowInvoiceOutPdf);
- await page.waitForSelector(selectors.invoiceOutDescriptor.moreMenuBookInvoiceOut, {hidden: true});
- });
-
- it(`should check the salesPerson role doens't see the delete option in the more menu`, async() => {
- await page.waitForSelector(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut, {hidden: true});
- });
- });
-});
diff --git a/e2e/paths/09-invoice-out/03_manualInvoice.spec.js b/e2e/paths/09-invoice-out/03_manualInvoice.spec.js
deleted file mode 100644
index a1856f1b1..000000000
--- a/e2e/paths/09-invoice-out/03_manualInvoice.spec.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut manual invoice path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceOut');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should create an invoice from a ticket', async() => {
- await page.waitToClick(selectors.invoiceOutIndex.createInvoice);
- await page.waitForSelector(selectors.invoiceOutIndex.manualInvoiceForm);
-
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTicket, '15');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceSerial, 'Global nacional');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTaxArea, 'national');
- await page.waitToClick(selectors.invoiceOutIndex.saveInvoice);
- const message = await page.waitForSnackbar();
-
- await page.waitForState('invoiceOut.card.summary');
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should create another invoice from a client`, async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.invoiceOutButton);
- await page.waitForSelector(selectors.invoiceOutIndex.topbarSearch);
- await page.waitForState('invoiceOut.index');
-
- await page.waitToClick(selectors.invoiceOutIndex.createInvoice);
- await page.waitForSelector(selectors.invoiceOutIndex.manualInvoiceForm);
-
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceClient, 'Petter Parker');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceSerial, 'Global nacional');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTaxArea, 'national');
- await page.waitToClick(selectors.invoiceOutIndex.saveInvoice);
- const message = await page.waitForSnackbar();
-
- await page.waitForState('invoiceOut.card.summary');
-
- expect(message.text).toContain('Data saved!');
- });
-});
diff --git a/e2e/paths/09-invoice-out/04_globalInvoice.spec.js b/e2e/paths/09-invoice-out/04_globalInvoice.spec.js
deleted file mode 100644
index 64cddfa25..000000000
--- a/e2e/paths/09-invoice-out/04_globalInvoice.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut global invoice path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceOut');
- await page.waitToClick('[icon="search"]');
- await page.waitForTimeout(1000); // index search needs time to return results
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- let invoicesBeforeOneClient;
- let now = Date.vnNew();
-
- it('should count the amount of invoices listed before globla invoces are made', async() => {
- invoicesBeforeOneClient = await page.countElement(selectors.invoiceOutIndex.searchResult);
-
- expect(invoicesBeforeOneClient).toBeGreaterThanOrEqual(4);
- });
-
- it('should create a global invoice for charles xavier today', async() => {
- await page.accessToSection('invoiceOut.global-invoicing');
- await page.waitToClick(selectors.invoiceOutGlobalInvoicing.oneClient);
- await page.autocompleteSearch(selectors.invoiceOutGlobalInvoicing.clientId, 'Charles Xavier');
- await page.pickDate(selectors.invoiceOutGlobalInvoicing.invoiceDate, now);
- await page.pickDate(selectors.invoiceOutGlobalInvoicing.maxShipped, now);
- await page.autocompleteSearch(selectors.invoiceOutGlobalInvoicing.printer, '1');
- await page.waitToClick(selectors.invoiceOutGlobalInvoicing.makeInvoice);
- await page.waitForTimeout(1000);
- });
-});
diff --git a/e2e/paths/09-invoice-out/05_negative_bases.spec.js b/e2e/paths/09-invoice-out/05_negative_bases.spec.js
deleted file mode 100644
index 43ced2115..000000000
--- a/e2e/paths/09-invoice-out/05_negative_bases.spec.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut negative bases path', () => {
- let browser;
- let page;
- const httpRequests = [];
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- page.on('request', req => {
- if (req.url().includes(`InvoiceOuts/negativeBases`))
- httpRequests.push(req.url());
- });
- await page.loginAndModule('administrative', 'invoiceOut');
- await page.accessToSection('invoiceOut.negative-bases');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should show negative bases in a date range', async() => {
- const request = httpRequests.find(req =>
- req.includes(`from`) && req.includes(`to`));
-
- expect(request).toBeDefined();
- });
-});
diff --git a/e2e/paths/14-account/01_create_and_basic_data.spec.js b/e2e/paths/14-account/01_create_and_basic_data.spec.js
deleted file mode 100644
index e2c069d80..000000000
--- a/e2e/paths/14-account/01_create_and_basic_data.spec.js
+++ /dev/null
@@ -1,164 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account create and basic data path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('itManagement', 'account');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should open the new account form by clicking the add button', async() => {
- await page.waitToClick(selectors.accountIndex.addAccount);
- await page.waitForState('account.create');
- });
-
- it('should fill the form and then save it by clicking the create button', async() => {
- await page.write(selectors.accountIndex.newName, 'remy');
- await page.write(selectors.accountIndex.newNickname, 'Gambit');
- await page.write(selectors.accountIndex.newEmail, 'RemyEtienneLeBeau@verdnatura.es');
- await page.autocompleteSearch(selectors.accountIndex.newRole, 'Trainee');
- await page.write(selectors.accountIndex.newPassword, 'cestlavie');
- await page.waitToClick(selectors.accountIndex.createAccountButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should redirect the user to the created account basic data section', async() => {
- await page.waitForState('account.card.basicData');
- });
-
- it('should check the name is as expected', async() => {
- const result = await page.waitToGetProperty(selectors.accountBasicData.name, 'value');
-
- expect(result).toEqual('remy');
- });
-
- it('should check the nickname is as expected', async() => {
- const result = await page.waitToGetProperty(selectors.accountBasicData.nickname, 'value');
-
- expect(result).toEqual('Gambit');
- });
-
- it('should check the email is as expected', async() => {
- const result = await page.waitToGetProperty(selectors.accountBasicData.email, 'value');
-
- expect(result).toEqual('RemyEtienneLeBeau@verdnatura.es');
- });
-
- it('should navigate to the roles section to check the roles are correct', async() => {
- await page.accessToSection('account.card.roles');
- const rolesCount = await page.countElement(selectors.accountRoles.anyResult);
-
- expect(rolesCount).toEqual(3);
- });
-
- describe('Descriptor option', () => {
- describe('activate account', () => {
- it(`should check the active account icon isn't present in the descriptor`, async() => {
- await page.waitForNumberOfElements(selectors.accountDescriptor.activeAccountIcon, 0);
- });
-
- it('should activate the account using the descriptor menu', async() => {
- await page.waitToClick(selectors.accountDescriptor.menuButton);
- await page.waitToClick(selectors.accountDescriptor.activateAccount);
- await page.waitToClick(selectors.accountDescriptor.acceptButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Account enabled!');
- });
-
- it('should check the active account icon is now present in the descriptor', async() => {
- await page.waitForSelector(selectors.accountDescriptor.activeAccountIcon, {visible: false});
- });
- });
-
- describe('deactivate user', () => {
- it(`should check the inactive user icon isn't present in the descriptor just yet`, async() => {
- await page.waitForNumberOfElements(selectors.accountDescriptor.activeUserIcon, 0);
- });
-
- it('should deactivate the user using the descriptor menu', async() => {
- await page.waitToClick(selectors.accountDescriptor.menuButton);
- await page.waitToClick(selectors.accountDescriptor.deactivateUser);
- await page.waitToClick(selectors.accountDescriptor.acceptButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('User deactivated!');
- });
-
- it('should check the inactive user icon is now present', async() => {
- await page.waitForNumberOfElements(selectors.accountDescriptor.activeUserIcon, 1);
- });
- });
-
- describe('activate user', () => {
- it('should activate the user using the descriptor menu', async() => {
- await page.waitToClick(selectors.accountDescriptor.menuButton);
- await page.waitToClick(selectors.accountDescriptor.activateUser);
- await page.waitToClick(selectors.accountDescriptor.acceptButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('User activated!');
- });
-
- it('should check the inactive user icon is not present anymore', async() => {
- await page.waitForNumberOfElements(selectors.accountDescriptor.activeUserIcon, 0);
- });
- });
-
- describe('mail forwarding', () => {
- it('should activate the mail forwarding and set the recipent email', async() => {
- await page.accessToSection('account.card.mailForwarding');
- await page.waitToClick(selectors.accountMailForwarding.mailForwardingCheckbox);
- await page.write(selectors.accountMailForwarding.email, 'someEmail@someDomain.es');
- await page.waitToClick(selectors.accountMailForwarding.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
- });
-
- describe('Set password', () => {
- it('should set the password using the descriptor menu', async() => {
- const newPassword = 'quantum.12345';
-
- await page.waitToClick(selectors.accountDescriptor.menuButton);
- await page.waitToClick(selectors.accountDescriptor.setPassword);
- await page.write(selectors.accountDescriptor.newPassword, newPassword);
- await page.write(selectors.accountDescriptor.repeatPassword, newPassword);
- await page.waitToClick(selectors.accountDescriptor.acceptButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Password changed succesfully!');
- });
-
- // cant log into created account for unknown reasons
- // it('should login into the created account with the new password', async() => {
- // await page.loginAndModule('Remy', 'quantum.crypt0graphy');
- // });
- });
-
- describe('delete account', () => {
- // it('should navigate to the account basic data section', async() => {
- // });
-
- it('should delete the account using the descriptor menu', async() => {
- await page.waitToClick(selectors.accountDescriptor.menuButton);
- await page.waitToClick(selectors.accountDescriptor.deleteAccount);
- await page.waitToClick(selectors.accountDescriptor.acceptButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('User removed');
- });
- });
- });
-});
diff --git a/e2e/paths/14-account/02_alias_create_and_basic_data.spec.js b/e2e/paths/14-account/02_alias_create_and_basic_data.spec.js
deleted file mode 100644
index 840fb8afe..000000000
--- a/e2e/paths/14-account/02_alias_create_and_basic_data.spec.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account Alias create and basic data path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('itManagement', 'account');
- await page.accessToSection('account.alias');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should open the new account alias form by clicking the add button', async() => {
- await page.waitToClick(selectors.accountAliasIndex.addAlias);
- await page.waitForState('account.alias.create');
- });
-
- it('should fill the form and then save it by clicking the create alias button', async() => {
- await page.write(selectors.accountAliasIndex.newName, 'Boring alias');
- await page.write(selectors.accountAliasIndex.newDescription, 'Boring description');
- await page.waitToClick(selectors.accountAliasIndex.createAliasButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should redirect the user to the created account alias basic data section', async() => {
- await page.waitForState('account.alias.card.basicData');
- });
-
- it('should edit the alias basic data', async() => {
- await page.overwrite(selectors.accountAliasBasicData.name, 'Psykers');
- await page.overwrite(selectors.accountAliasBasicData.description, 'Email group for psykers');
- await page.waitToClick(selectors.accountAliasBasicData.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should reload the basicData section and check the name was edited successfully', async() => {
- await page.reloadSection('account.alias.card.basicData');
- const result = await page.waitToGetProperty(selectors.accountAliasBasicData.name, 'value');
-
- expect(result).toEqual('Psykers');
- });
-
- it('should check the alias description was edited successfully', async() => {
- const result = await page.waitToGetProperty(selectors.accountAliasBasicData.description, 'value');
-
- expect(result).toContain('psykers');
- });
-
- it('should search IT alias then access the user section to check the role listed is the expected one', async() => {
- await page.accessToSearchResult('IT');
- await page.accessToSection('account.alias.card.users');
- const rolesCount = await page.countElement(selectors.accountAliasUsers.anyResult);
-
- expect(rolesCount).toEqual(1);
- });
-});
diff --git a/e2e/paths/14-account/03_role_create_and_basic_data.spec.js b/e2e/paths/14-account/03_role_create_and_basic_data.spec.js
deleted file mode 100644
index 6acf82318..000000000
--- a/e2e/paths/14-account/03_role_create_and_basic_data.spec.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account Role create and basic data path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('it', 'account');
- await page.accessToSection('account.role');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should open the new account role form by clicking the add button', async() => {
- await page.waitToClick(selectors.accountRoleIndex.addRole);
- await page.waitForState('account.role.create');
- });
-
- it('should fill the form and then save it by clicking the create role button', async() => {
- await page.write(selectors.accountRoleIndex.newName, 'boringRole');
- await page.write(selectors.accountRoleIndex.newDescription, 'Boring description');
- await page.waitToClick(selectors.accountRoleIndex.createRoleButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should redirect the user to the created role basic data section', async() => {
- await page.waitForState('account.role.card.basicData');
- });
-
- it('should edit the role basic data', async() => {
- await page.overwrite(selectors.accountRoleBasicData.name, 'psyker');
- await page.overwrite(selectors.accountRoleBasicData.description, 'A role just for psykers');
- await page.waitToClick(selectors.accountRoleBasicData.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should reload the role basicData section and check the name was edited successfully', async() => {
- await page.reloadSection('account.role.card.basicData');
- const result = await page.waitToGetProperty(selectors.accountRoleBasicData.name, 'value');
-
- expect(result).toEqual('psyker');
- });
-
- it('should check the role description was edited successfully', async() => {
- const result = await page.waitToGetProperty(selectors.accountRoleBasicData.description, 'value');
-
- expect(result).toContain('psykers');
- });
-
- it('should navigate to the subroles section', async() => {
- await page.accessToSection('account.role.card.subroles');
- });
-
- it('should asign a subrole', async() => {
- await page.waitToClick(selectors.accountSubroles.addSubrole);
- await page.autocompleteSearch(selectors.accountSubroles.role, 'teamManager');
- await page.waitToClick(selectors.accountSubroles.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Role added!');
- });
-
- it('should reload the subroles section and check a role was added', async() => {
- await page.reloadSection('account.role.card.subroles');
- const subrolesCount = await page.countElement(selectors.accountSubroles.anyResult);
-
- expect(subrolesCount).toEqual(1);
- });
-
- it('should access the employee roles inheritance then check the roles listed are the expected ones', async() => {
- await page.accessToSearchResult('employee');
- await page.accessToSection('account.role.card.inherited');
- const rolesCount = await page.countElement(selectors.accountRoleInheritance.anyResult);
-
- expect(rolesCount).toEqual(7);
- });
-});
diff --git a/e2e/paths/14-account/04_acl.spec.js b/e2e/paths/14-account/04_acl.spec.js
deleted file mode 100644
index ce2a63b14..000000000
--- a/e2e/paths/14-account/04_acl.spec.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account ACL path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('developer', 'account');
- await page.accessToSection('account.acl');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should go to create new acl', async() => {
- await page.waitToClick(selectors.accountAcl.addAcl);
- await page.waitForState('account.acl.create');
- });
-
- it('should create new acl', async() => {
- await page.autocompleteSearch(selectors.accountAcl.role, 'sysadmin');
- await page.autocompleteSearch(selectors.accountAcl.model, 'Account');
- await page.autocompleteSearch(selectors.accountAcl.accessType, '*');
- await page.autocompleteSearch(selectors.accountAcl.permission, 'ALLOW');
- await page.waitToClick(selectors.accountAcl.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should navigate to edit', async() => {
- await page.doSearch();
- await page.waitToClick(selectors.accountAcl.thirdAcl);
- await page.waitForState('account.acl.edit');
- });
-
- it('should edit the third acl', async() => {
- await page.autocompleteSearch(selectors.accountAcl.model, 'Supplier');
- await page.autocompleteSearch(selectors.accountAcl.accessType, 'READ');
- await page.waitToClick(selectors.accountAcl.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should delete the third result', async() => {
- const result = await page.waitToGetProperty(selectors.accountAcl.thirdAcl, 'innerText');
- await page.waitToClick(selectors.accountAcl.deleteThirdAcl);
- await page.waitToClick(selectors.globalItems.acceptButton);
- const message = await page.waitForSnackbar();
- const newResult = await page.waitToGetProperty(selectors.accountAcl.thirdAcl, 'innerText');
-
- expect(message.text).toContain('ACL removed');
- expect(result).not.toEqual(newResult);
- });
-});
diff --git a/e2e/paths/14-account/05_connections.spec.js b/e2e/paths/14-account/05_connections.spec.js
deleted file mode 100644
index 49d5f612d..000000000
--- a/e2e/paths/14-account/05_connections.spec.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account Connections path', () => {
- let browser;
- let page;
- const account = 'sysadmin';
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule(account, 'account');
- await page.accessToSection('account.connections');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should check this is the last connection', async() => {
- const firstResult = await page.waitToGetProperty(selectors.accountConnections.firstConnection, 'innerText');
-
- expect(firstResult).toContain(account);
- });
-});
diff --git a/e2e/paths/14-account/06_accounts.spec.js b/e2e/paths/14-account/06_accounts.spec.js
deleted file mode 100644
index 8bd6ea7d5..000000000
--- a/e2e/paths/14-account/06_accounts.spec.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account Accounts path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('sysadmin', 'account');
- await page.accessToSection('account.accounts');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should sync roles', async() => {
- await page.waitToClick(selectors.accountAccounts.syncRoles);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Roles synchronized!');
- });
-
- it('should relogin', async() => {
- await page.loginAndModule('sysadmin', 'account');
- await page.accessToSection('account.accounts');
- });
-
- it('should sync all', async() => {
- await page.waitToClick(selectors.accountAccounts.syncAll);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Synchronizing in the background');
- });
-});
diff --git a/e2e/paths/14-account/07_ldap.spec.js b/e2e/paths/14-account/07_ldap.spec.js
deleted file mode 100644
index eb22f695c..000000000
--- a/e2e/paths/14-account/07_ldap.spec.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account LDAP path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('sysadmin', 'account');
- await page.accessToSection('account.ldap');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should set data and save', async() => {
- await page.waitToClick(selectors.accountLdap.checkEnable);
- await page.write(selectors.accountLdap.server, '1234');
- await page.write(selectors.accountLdap.rdn, '1234');
- await page.write(selectors.accountLdap.password, 'nightmare');
- await page.write(selectors.accountLdap.userDn, 'sysadmin');
- await page.write(selectors.accountLdap.groupDn, '1234');
- await page.waitToClick(selectors.accountLdap.save);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should reset data', async() => {
- await page.waitToClick(selectors.accountLdap.checkEnable);
- await page.waitToClick(selectors.accountLdap.save);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-});
diff --git a/e2e/paths/14-account/08_samba.spec.js b/e2e/paths/14-account/08_samba.spec.js
deleted file mode 100644
index a92344acb..000000000
--- a/e2e/paths/14-account/08_samba.spec.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account Samba path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('sysadmin', 'account');
- await page.accessToSection('account.samba');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should set data and save', async() => {
- await page.waitToClick(selectors.accountSamba.checkEnable);
- await page.write(selectors.accountSamba.adDomain, '1234');
- await page.write(selectors.accountSamba.adController, '1234');
- await page.write(selectors.accountSamba.adUser, 'sysadmin');
- await page.write(selectors.accountSamba.adPassword, 'nightmare');
- await page.write(selectors.accountSamba.userDn, 'testDn');
- await page.waitToClick(selectors.accountSamba.verifyCert);
- await page.waitToClick(selectors.accountSamba.save);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-
- it('should reset data', async() => {
- await page.waitToClick(selectors.accountSamba.checkEnable);
- await page.waitToClick(selectors.accountSamba.save);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('Data saved!');
- });
-});
diff --git a/e2e/paths/14-account/09_privileges.spec.js b/e2e/paths/14-account/09_privileges.spec.js
deleted file mode 100644
index e4b8fb24c..000000000
--- a/e2e/paths/14-account/09_privileges.spec.js
+++ /dev/null
@@ -1,112 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Account privileges path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('developer', 'account');
- await page.accessToSearchResult('1101');
- await page.accessToSection('account.card.privileges');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- describe('as developer', () => {
- it('should throw error when give privileges', async() => {
- await page.waitToClick(selectors.accountPrivileges.checkHasGrant);
- await page.waitToClick(selectors.accountPrivileges.save);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain(`You don't have grant privilege`);
- });
-
- it('should throw error when change role', async() => {
- await page.autocompleteSearch(selectors.accountPrivileges.role, 'employee');
- await page.waitToClick(selectors.accountPrivileges.save);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain(`You don't have grant privilege`);
- });
- });
-
- describe('as sysadmin', () => {
- beforeAll(async() => {
- await page.loginAndModule('sysadmin', 'account');
- await page.accessToSearchResult('9');
- await page.accessToSection('account.card.privileges');
- });
-
- it('should give privileges', async() => {
- await page.waitToClick(selectors.accountPrivileges.checkHasGrant);
- await page.waitToClick(selectors.accountPrivileges.save);
- const message = await page.waitForSnackbar();
-
- await page.reloadSection('account.card.privileges');
- const result = await page.checkboxState(selectors.accountPrivileges.checkHasGrant);
-
- expect(message.text).toContain(`Data saved!`);
- expect(result).toBe('checked');
- });
-
- it('should throw error when change role and not own role', async() => {
- await page.autocompleteSearch(selectors.accountPrivileges.role, 'itBoss');
- await page.waitToClick(selectors.accountPrivileges.save);
-
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain(`You don't own the role and you can't assign it to another user`);
- });
-
- it('should change role to employee', async() => {
- await page.autocompleteSearch(selectors.accountPrivileges.role, 'employee');
- await page.waitToClick(selectors.accountPrivileges.save);
- const message = await page.waitForSnackbar();
-
- await page.reloadSection('account.card.privileges');
- const result = await page.waitToGetProperty(selectors.accountPrivileges.role, 'value');
-
- expect(message.text).toContain(`Data saved!`);
- expect(result).toContain('employee');
- });
-
- it('should return role to developer', async() => {
- await page.autocompleteSearch(selectors.accountPrivileges.role, 'developer');
- await page.waitToClick(selectors.accountPrivileges.save);
- const message = await page.waitForSnackbar();
-
- await page.reloadSection('account.card.privileges');
- const result = await page.waitToGetProperty(selectors.accountPrivileges.role, 'value');
-
- expect(message.text).toContain(`Data saved!`);
- expect(result).toContain('developer');
- });
- });
-
- describe('as developer again', () => {
- it('should remove privileges', async() => {
- await page.accessToSearchResult('9');
- await page.accessToSection('account.card.privileges');
-
- await page.waitToClick(selectors.accountPrivileges.checkHasGrant);
- await page.waitToClick(selectors.accountPrivileges.save);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain(`Data saved!`);
- });
-
- it('should logIn in developer', async() => {
- await page.reloadSection('account.card.privileges');
- const result = await page.checkboxState(selectors.accountPrivileges.checkHasGrant);
-
- expect(result).toBe('unchecked');
- });
- });
-});
diff --git a/e2e/tests.js b/e2e/tests.js
index 829056f4c..a9c662dc4 100644
--- a/e2e/tests.js
+++ b/e2e/tests.js
@@ -41,7 +41,6 @@ async function test() {
`./e2e/paths/03*/*[sS]pec.js`,
`./e2e/paths/04*/*[sS]pec.js`,
`./e2e/paths/05*/*[sS]pec.js`,
- `./e2e/paths/06*/*[sS]pec.js`,
`./e2e/paths/07*/*[sS]pec.js`,
`./e2e/paths/08*/*[sS]pec.js`,
`./e2e/paths/09*/*[sS]pec.js`,
diff --git a/front/core/services/app.js b/front/core/services/app.js
index 8cee66ef0..cec7bea7f 100644
--- a/front/core/services/app.js
+++ b/front/core/services/app.js
@@ -56,6 +56,8 @@ export default class App {
}
getUrl(route, appName = 'lilium') {
+ const index = window.location.hash.indexOf(route.toLowerCase());
+ const newRoute = index < 0 ? route : window.location.hash.substring(index);
const env = process.env.NODE_ENV;
const filter = {
where: {and: [
@@ -67,7 +69,7 @@ export default class App {
return this.logger.$http.get('Urls/findOne', {filter})
.then(res => {
if (res && res.data)
- return res.data.url + route;
+ return res.data.url + newRoute;
})
.catch(() => {
this.showError('Direction not found');
diff --git a/front/salix/components/user-popover/index.html b/front/salix/components/user-popover/index.html
index 06a4af1e0..cedb3383b 100644
--- a/front/salix/components/user-popover/index.html
+++ b/front/salix/components/user-popover/index.html
@@ -38,7 +38,7 @@
My account
diff --git a/front/salix/components/user-popover/index.js b/front/salix/components/user-popover/index.js
index 1d88137ff..72cb734e9 100644
--- a/front/salix/components/user-popover/index.js
+++ b/front/salix/components/user-popover/index.js
@@ -82,6 +82,9 @@ class Controller {
? {id: $search}
: {bank: {like: '%' + $search + '%'}};
}
+ async redirect(id) {
+ window.location.href = await this.vnConfig.vnApp.getUrl(`worker/${id}`);
+ }
}
Controller.$inject = ['$scope', '$translate', 'vnConfig', 'vnAuth', 'vnToken'];
diff --git a/front/salix/routes.js b/front/salix/routes.js
index be210b749..2c6f1b848 100644
--- a/front/salix/routes.js
+++ b/front/salix/routes.js
@@ -4,7 +4,17 @@ import getMainRoute from 'core/lib/get-main-route';
config.$inject = ['$stateProvider', '$urlRouterProvider'];
function config($stateProvider, $urlRouterProvider) {
$urlRouterProvider
- .otherwise('/');
+ .otherwise(async($injector, {$location}) => {
+ const prefix = '#!';
+ if (!$location.$$path) return window.location.href = `/${prefix}/`;
+
+ const url = $location.$$absUrl
+ .replace('5000', '9000')
+ .replace('salix', 'lilium')
+ .replace(prefix, '#')
+ .replace('client', 'customer');
+ window.location.href = url;
+ });
$stateProvider
.state('layout', {
diff --git a/loopback/common/models/vn-model.js b/loopback/common/models/vn-model.js
index 22b535f62..a11bed11d 100644
--- a/loopback/common/models/vn-model.js
+++ b/loopback/common/models/vn-model.js
@@ -13,7 +13,6 @@ module.exports = function(Self) {
Object.assign(Self, {
setup() {
Self.super_.setup.call(this);
-
/**
* Setting a global transaction timeout to find out if the service
* is blocked because the connection pool is empty.
@@ -28,6 +27,26 @@ module.exports = function(Self) {
};
});
+ this.beforeRemote('**', async ctx => {
+ if (!this.hasFilter(ctx)) return;
+
+ const defaultLimit = this.app.orm.selectLimit;
+ const filter = ctx.args.filter || {limit: defaultLimit};
+
+ if (filter.limit > defaultLimit) {
+ filter.limit = defaultLimit;
+ ctx.args.filter = filter;
+ }
+ });
+
+ this.afterRemote('**', async ctx => {
+ if (!this.hasFilter(ctx)) return;
+
+ const {result} = ctx;
+ const length = Array.isArray(result) ? result.length : result ? 1 : 0;
+ if (length >= this.app.orm.selectLimit) throw new UserError('Too many records');
+ });
+
// Register field ACL validation
/*
this.beforeRemote('prototype.patchAttributes', ctx => this.checkUpdateAcls(ctx));
@@ -327,6 +346,12 @@ module.exports = function(Self) {
checkInsertAcls(ctx) {
return this.checkAcls(ctx, 'insert');
+ },
+
+ hasFilter(ctx) {
+ return ctx.req.method.toUpperCase() === 'GET' &&
+ ctx.method.accepts.some(x => x.arg === 'filter' && x.type.toLowerCase() === 'object');
}
+
});
};
diff --git a/loopback/locale/en.json b/loopback/locale/en.json
index 382a2824c..d9d9c8511 100644
--- a/loopback/locale/en.json
+++ b/loopback/locale/en.json
@@ -150,7 +150,7 @@
"Receipt's bank was not found": "Receipt's bank was not found",
"This receipt was not compensated": "This receipt was not compensated",
"Client's email was not found": "Client's email was not found",
- "Tickets with associated refunds": "Tickets with associated refunds can't be deleted. This ticket is associated with refund Nº %d",
+ "Tickets with associated refunds": "Tickets with associated refunds can't be deleted. This ticket is associated with refund Nº %s",
"It is not possible to modify tracked sales": "It is not possible to modify tracked sales",
"It is not possible to modify sales that their articles are from Floramondo": "It is not possible to modify sales that their articles are from Floramondo",
"It is not possible to modify cloned sales": "It is not possible to modify cloned sales",
@@ -230,8 +230,12 @@
"This workCenter is already assigned to this agency": "This workCenter is already assigned to this agency",
"You can only have one PDA": "You can only have one PDA",
"Incoterms and Customs agent are required for a non UEE member": "Incoterms and Customs agent are required for a non UEE member",
- "It has been invoiced but the PDF could not be generated": "It has been invoiced but the PDF could not be generated",
+ "The invoices have been created but the PDFs could not be generated": "The invoices have been created but the PDFs could not be generated",
"It has been invoiced but the PDF of refund not be generated": "It has been invoiced but the PDF of refund not be generated",
"Cannot add holidays on this day": "Cannot add holidays on this day",
- "Cannot send mail": "Cannot send mail"
-}
\ No newline at end of file
+ "Cannot send mail": "Cannot send mail",
+ "CONSTRAINT `chkParkingCodeFormat` failed for `vn`.`parking`": "CONSTRAINT `chkParkingCodeFormat` failed for `vn`.`parking`",
+ "This postcode already exists": "This postcode already exists",
+ "Original invoice not found": "Original invoice not found"
+
+}
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index e2be5d013..8b443d96b 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -272,7 +272,7 @@
"Invoice date can't be less than max date": "La fecha de factura no puede ser inferior a la fecha límite",
"Warehouse inventory not set": "El almacén inventario no está establecido",
"This locker has already been assigned": "Esta taquilla ya ha sido asignada",
- "Tickets with associated refunds": "No se pueden borrar tickets con abonos asociados. Este ticket está asociado al abono Nº %d",
+ "Tickets with associated refunds": "No se pueden borrar tickets con abonos asociados. Este ticket está asociado al abono Nº %s",
"Not exist this branch": "La rama no existe",
"This ticket cannot be signed because it has not been boxed": "Este ticket no puede firmarse porque no ha sido encajado",
"Collection does not exist": "La colección no existe",
@@ -363,9 +363,14 @@
"You can not use the same password": "No puedes usar la misma contraseña",
"This PDA is already assigned to another user": "Este PDA ya está asignado a otro usuario",
"You can only have one PDA": "Solo puedes tener un PDA",
- "It has been invoiced but the PDF could not be generated": "Se ha facturado pero no se ha podido generar el PDF",
+ "The invoices have been created but the PDFs could not be generated": "Se ha facturado pero no se ha podido generar el PDF",
"It has been invoiced but the PDF of refund not be generated": "Se ha facturado pero no se ha podido generar el PDF del abono",
"Payment method is required": "El método de pago es obligatorio",
"Cannot send mail": "Não é possível enviar o email",
- "CONSTRAINT `supplierAccountTooShort` failed for `vn`.`supplier`": "La cuenta debe tener exactamente 10 dígitos"
-}
+ "CONSTRAINT `supplierAccountTooShort` failed for `vn`.`supplier`": "La cuenta debe tener exactamente 10 dígitos",
+ "The sale not exists in the item shelving": "La venta no existe en la estantería del artículo",
+ "The entry not have stickers": "La entrada no tiene etiquetas",
+ "Too many records": "Demasiados registros",
+ "Original invoice not found": "Factura original no encontrada",
+ "The entry has no lines or does not exist": "La entrada no tiene lineas o no existe"
+}
\ No newline at end of file
diff --git a/loopback/locale/fr.json b/loopback/locale/fr.json
index 49584ef0e..601fe35f5 100644
--- a/loopback/locale/fr.json
+++ b/loopback/locale/fr.json
@@ -272,7 +272,7 @@
"Invoice date can't be less than max date": "La date de la facture ne peut pas être inférieure à la date limite",
"Warehouse inventory not set": "L'inventaire de l'entrepôt n'est pas établi",
"This locker has already been assigned": "Ce casier a déjà été assigné",
- "Tickets with associated refunds": "Vous ne pouvez pas supprimer des tickets avec des remboursements associés. Ce ticket est associé au remboursement Nº %d",
+ "Tickets with associated refunds": "Vous ne pouvez pas supprimer des tickets avec des remboursements associés. Ce ticket est associé au remboursement Nº %s",
"Not exist this branch": "La branche n'existe pas",
"This ticket cannot be signed because it has not been boxed": "Ce ticket ne peut pas être signé car il n'a pas été emballé",
"Collection does not exist": "La collection n'existe pas",
@@ -358,7 +358,9 @@
"This workCenter is already assigned to this agency": "Ce centre de travail est déjà assigné à cette agence",
"Select ticket or client": "Choisissez un ticket ou un client",
"It was not able to create the invoice": "Il n'a pas été possible de créer la facture",
- "It has been invoiced but the PDF could not be generated": "La facture a été émise mais le PDF n'a pas pu être généré",
+ "The invoices have been created but the PDFs could not be generated": "La facture a été émise mais le PDF n'a pas pu être généré",
"It has been invoiced but the PDF of refund not be generated": "Il a été facturé mais le PDF de remboursement n'a pas été généré",
- "Cannot send mail": "Impossible d'envoyer le mail"
+ "Cannot send mail": "Impossible d'envoyer le mail",
+ "Original invoice not found": "Facture originale introuvable"
+
}
diff --git a/loopback/locale/pt.json b/loopback/locale/pt.json
index 95c1fff0a..6425db9ed 100644
--- a/loopback/locale/pt.json
+++ b/loopback/locale/pt.json
@@ -358,6 +358,8 @@
"This workCenter is already assigned to this agency": "Este centro de trabalho já está atribuído a esta agência",
"Select ticket or client": "Selecione um ticket ou cliente",
"It was not able to create the invoice": "Não foi possível criar a fatura",
- "It has been invoiced but the PDF could not be generated": "Foi faturado, mas o PDF não pôde ser gerado",
- "It has been invoiced but the PDF of refund not be generated": "Foi faturado mas não foi gerado o PDF do reembolso"
+ "The invoices have been created but the PDFs could not be generated": "Foi faturado, mas o PDF não pôde ser gerado",
+ "It has been invoiced but the PDF of refund not be generated": "Foi faturado mas não foi gerado o PDF do reembolso",
+ "Original invoice not found": "Fatura original não encontrada"
+
}
diff --git a/loopback/server/boot/orm.js b/loopback/server/boot/orm.js
new file mode 100644
index 000000000..8bbd969e1
--- /dev/null
+++ b/loopback/server/boot/orm.js
@@ -0,0 +1,6 @@
+module.exports = async function(app) {
+ if (!app.orm) {
+ const ormConfig = await app.models.OrmConfig.findOne();
+ app.orm = ormConfig;
+ }
+};
diff --git a/loopback/server/boot/role-resolver.js b/loopback/server/boot/role-resolver.js
new file mode 100644
index 000000000..cf70abb39
--- /dev/null
+++ b/loopback/server/boot/role-resolver.js
@@ -0,0 +1,12 @@
+const UserError = require('vn-loopback/util/user-error');
+
+module.exports = async function(app) {
+ const models = app.models;
+
+ models.VnRole.registerResolver('$subordinate', async(role, ctx) => {
+ Object.assign(ctx, {req: {accessToken: {userId: ctx.accessToken.userId}}});
+
+ const isSubordinate = await models.Worker.isSubordinate(ctx, +ctx.modelId);
+ if (!isSubordinate) throw new UserError(`You don't have enough privileges`);
+ });
+};
diff --git a/loopback/server/connectors/vn-mysql.js b/loopback/server/connectors/vn-mysql.js
index 5edef4395..2012caf37 100644
--- a/loopback/server/connectors/vn-mysql.js
+++ b/loopback/server/connectors/vn-mysql.js
@@ -342,6 +342,9 @@ exports.initialize = function initialize(dataSource, callback) {
}
};
+// Code extracted from original Loopback MySQL connector
+// since it cannot be reused, please try not to alter it.
+// https://github.com/loopbackio/loopback-connector-mysql/blob/v6.2.0/lib/mysql.js
MySQL.prototype.connect = function(callback) {
const self = this;
const options = generateOptions(this.settings);
diff --git a/loopback/server/datasources.json b/loopback/server/datasources.json
index 341d5d578..f1643e522 100644
--- a/loopback/server/datasources.json
+++ b/loopback/server/datasources.json
@@ -11,12 +11,16 @@
"port": "3306",
"username": "root",
"password": "root",
+ "connectionLimit": 100,
+ "queueLimit": 100,
"multipleStatements": true,
"legacyUtcDateProcessing": false,
"timezone": "local",
"connectTimeout": 40000,
"acquireTimeout": 90000,
- "waitForConnections": true
+ "waitForConnections": true,
+ "maxIdleTime": 60000,
+ "idleTimeout": 60000
},
"osticket": {
"connector": "memory",
diff --git a/loopback/util/flatten.js b/loopback/util/flatten.js
new file mode 100644
index 000000000..18d682d1f
--- /dev/null
+++ b/loopback/util/flatten.js
@@ -0,0 +1,42 @@
+/**
+ * Flattens an array of objects by converting each object into a flat structure.
+ *
+ * @param {Array} dataArray Array of objects to be flattened
+ * @return {Array} Array of flattened objects
+ */
+function flatten(dataArray) {
+ return dataArray.map(item => flattenObj(item.__data));
+}
+
+/**
+ * Recursively flattens an object, converting nested properties into a single level object
+ * with keys representing the original nested structure.
+ *
+ * @param {Object} data The object to be flattened
+ * @param {String} [prefix=''] Optional prefix for nested keys
+ * @return {Object} Flattened object
+ */
+function flattenObj(data, prefix = '') {
+ let result = {};
+ try {
+ for (let key in data) {
+ if (!data[key]) continue;
+
+ const newKey = prefix ? `${prefix}_${key}` : key;
+ const value = data[key];
+
+ if (typeof value === 'object' && value !== null && !Array.isArray(value))
+ Object.assign(result, flattenObj(value.__data, newKey));
+ else
+ result[newKey] = value;
+ }
+ } catch (error) {
+ console.error(error);
+ }
+
+ return result;
+}
+module.exports = {
+ flatten,
+ flattenObj,
+};
diff --git a/modules/account/front/accounts/index.html b/modules/account/front/accounts/index.html
deleted file mode 100644
index 6847e68d1..000000000
--- a/modules/account/front/accounts/index.html
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
diff --git a/modules/account/front/accounts/index.js b/modules/account/front/accounts/index.js
deleted file mode 100644
index ab19126a1..000000000
--- a/modules/account/front/accounts/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onSynchronizeAll() {
- this.vnApp.showSuccess(this.$t('Synchronizing in the background'));
- this.$http.patch(`Accounts/syncAll`);
- }
-
- onSynchronizeRoles() {
- this.$http.patch(`RoleInherits/sync`)
- .then(() => this.vnApp.showSuccess(this.$t('Roles synchronized!')));
- }
-}
-
-ngModule.component('vnAccountAccounts', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/accounts/locale/es.yml b/modules/account/front/accounts/locale/es.yml
deleted file mode 100644
index 614ade3eb..000000000
--- a/modules/account/front/accounts/locale/es.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-Accounts: Cuentas
-Homedir base: Directorio base para carpetas de usuario
-Shell: Intérprete de línea de comandos
-User and role base id: Id base usuarios y roles
-Synchronize all: Sincronizar todo
-Synchronize roles: Sincronizar roles
-If password is not specified, just user attributes are synchronized: >-
- Si la contraseña no se especifica solo se sincronizarán lo atributos del usuario
-Synchronizing in the background: Sincronizando en segundo plano
-Users synchronized!: ¡Usuarios sincronizados!
-Username: Nombre de usuario
-Synchronize: Sincronizar
-Please enter the username: Por favor introduce el nombre de usuario
-Roles synchronized!: ¡Roles sincronizados!
diff --git a/modules/account/front/acl/create/index.html b/modules/account/front/acl/create/index.html
deleted file mode 100644
index 14332f737..000000000
--- a/modules/account/front/acl/create/index.html
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
diff --git a/modules/account/front/acl/create/index.js b/modules/account/front/acl/create/index.js
deleted file mode 100644
index fea71991f..000000000
--- a/modules/account/front/acl/create/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor(...args) {
- super(...args);
- this.accessTypes = [
- {name: '*'},
- {name: 'READ'},
- {name: 'WRITE'}
- ];
- this.permissions = [
- {name: 'ALLOW'},
- {name: 'DENY'}
- ];
-
- this.models = [];
- for (let model in window.validations)
- this.models.push({name: model});
-
- this.acl = {
- property: '*',
- principalType: 'ROLE',
- accessType: 'READ',
- permission: 'ALLOW'
- };
- }
-}
-
-ngModule.component('vnAclCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/acl/index.js b/modules/account/front/acl/index.js
deleted file mode 100644
index 8393859a5..000000000
--- a/modules/account/front/acl/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import './main';
-import './index/';
-import './create';
-import './search-panel';
diff --git a/modules/account/front/acl/index/index.html b/modules/account/front/acl/index/index.html
deleted file mode 100644
index af06ec481..000000000
--- a/modules/account/front/acl/index/index.html
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
- {{::row.model}}.{{::row.property}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/acl/index/index.js b/modules/account/front/acl/index/index.js
deleted file mode 100644
index a2aec534a..000000000
--- a/modules/account/front/acl/index/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onDelete(row) {
- return this.$http.delete(`ACLs/${row.id}`)
- .then(() => this.$.model.refresh())
- .then(() => this.vnApp.showSuccess(this.$t('ACL removed')));
- }
-}
-
-ngModule.component('vnAclIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/acl/index/locale/es.yml b/modules/account/front/acl/index/locale/es.yml
deleted file mode 100644
index 8024f804c..000000000
--- a/modules/account/front/acl/index/locale/es.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-New ACL: Nuevo ACL
-Edit ACL: Editar ACL
-ACL will be removed: El ACL será eliminado
-ACL removed: ACL eliminado
diff --git a/modules/account/front/acl/locale/es.yml b/modules/account/front/acl/locale/es.yml
deleted file mode 100644
index ff6a1b41c..000000000
--- a/modules/account/front/acl/locale/es.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-Model: Modelo
-Property: Propiedad
-Access type: Tipo de acceso
-Permission: Permiso
\ No newline at end of file
diff --git a/modules/account/front/acl/main/index.html b/modules/account/front/acl/main/index.html
deleted file mode 100644
index 7767768d9..000000000
--- a/modules/account/front/acl/main/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/acl/main/index.js b/modules/account/front/acl/main/index.js
deleted file mode 100644
index a91a71cb7..000000000
--- a/modules/account/front/acl/main/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import ngModule from '../../module';
-import ModuleMain from 'salix/components/module-main';
-
-export default class ACL extends ModuleMain {
- exprBuilder(param, value) {
- switch (param) {
- case 'search':
- return {model: {like: `%${value}%`}};
- default:
- return {[param]: value};
- }
- }
-}
-
-ngModule.vnComponent('vnAclComponent', {
- controller: ACL,
- template: require('./index.html')
-});
diff --git a/modules/account/front/acl/search-panel/index.html b/modules/account/front/acl/search-panel/index.html
deleted file mode 100644
index a3efab440..000000000
--- a/modules/account/front/acl/search-panel/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
diff --git a/modules/account/front/acl/search-panel/index.js b/modules/account/front/acl/search-panel/index.js
deleted file mode 100644
index 4f571059e..000000000
--- a/modules/account/front/acl/search-panel/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import ngModule from '../../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-export default class Controller extends SearchPanel {
- constructor(...args) {
- super(...args);
- this.accessTypes = [
- {name: '*'},
- {name: 'READ'},
- {name: 'WRITE'}
- ];
- this.permissions = [
- {name: 'ALLOW'},
- {name: 'DENY'}
- ];
-
- this.models = [];
- for (let model in window.validations)
- this.models.push({name: model});
- }
-}
-
-ngModule.component('vnAclSearchPanel', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/alias/basic-data/index.html b/modules/account/front/alias/basic-data/index.html
deleted file mode 100644
index 523c9297a..000000000
--- a/modules/account/front/alias/basic-data/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/alias/basic-data/index.js b/modules/account/front/alias/basic-data/index.js
deleted file mode 100644
index b7c2db089..000000000
--- a/modules/account/front/alias/basic-data/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {}
-
-ngModule.component('vnAliasBasicData', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- alias: '<'
- }
-});
diff --git a/modules/account/front/alias/card/index.html b/modules/account/front/alias/card/index.html
deleted file mode 100644
index 712147a24..000000000
--- a/modules/account/front/alias/card/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/modules/account/front/alias/card/index.js b/modules/account/front/alias/card/index.js
deleted file mode 100644
index fd1a18f6a..000000000
--- a/modules/account/front/alias/card/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../../module';
-import ModuleCard from 'salix/components/module-card';
-
-class Controller extends ModuleCard {
- reload() {
- this.$http.get(`MailAliases/${this.$params.id}`)
- .then(res => this.alias = res.data);
- }
-}
-
-ngModule.vnComponent('vnAliasCard', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/alias/create/index.html b/modules/account/front/alias/create/index.html
deleted file mode 100644
index 4dad1b870..000000000
--- a/modules/account/front/alias/create/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
diff --git a/modules/account/front/alias/create/index.js b/modules/account/front/alias/create/index.js
deleted file mode 100644
index c058c3adf..000000000
--- a/modules/account/front/alias/create/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onSubmit() {
- return this.$.watcher.submit().then(res =>
- this.$state.go('account.alias.card.basicData', {id: res.data.id})
- );
- }
-}
-
-ngModule.component('vnAliasCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/alias/descriptor/index.html b/modules/account/front/alias/descriptor/index.html
deleted file mode 100644
index 71b98c6a3..000000000
--- a/modules/account/front/alias/descriptor/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
- Delete
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/alias/descriptor/index.js b/modules/account/front/alias/descriptor/index.js
deleted file mode 100644
index a21baae5a..000000000
--- a/modules/account/front/alias/descriptor/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import ngModule from '../../module';
-import Descriptor from 'salix/components/descriptor';
-
-class Controller extends Descriptor {
- get alias() {
- return this.entity;
- }
-
- set alias(value) {
- this.entity = value;
- }
-
- onDelete() {
- return this.$http.delete(`MailAliases/${this.id}`)
- .then(() => this.$state.go('account.alias'))
- .then(() => this.vnApp.showSuccess(this.$t('Alias removed')));
- }
-}
-
-ngModule.component('vnAliasDescriptor', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- alias: '<'
- }
-});
diff --git a/modules/account/front/alias/descriptor/locale/es.yml b/modules/account/front/alias/descriptor/locale/es.yml
deleted file mode 100644
index 9c6fa0e73..000000000
--- a/modules/account/front/alias/descriptor/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-Alias will be removed: El alias será eliminado
-Alias removed: Alias eliminado
\ No newline at end of file
diff --git a/modules/account/front/alias/index.js b/modules/account/front/alias/index.js
deleted file mode 100644
index 8eed3a3d3..000000000
--- a/modules/account/front/alias/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import './main';
-import './index/';
-import './create';
-import './summary';
-import './card';
-import './descriptor';
-import './create';
-import './basic-data';
-import './users';
diff --git a/modules/account/front/alias/index/index.html b/modules/account/front/alias/index/index.html
deleted file mode 100644
index 7343cb9bd..000000000
--- a/modules/account/front/alias/index/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
- {{::alias.alias}}
- {{::alias.description}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/alias/index/index.js b/modules/account/front/alias/index/index.js
deleted file mode 100644
index 44e146fb4..000000000
--- a/modules/account/front/alias/index/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- preview(alias) {
- this.selectedAlias = alias;
- this.$.summary.show();
- }
-}
-
-ngModule.component('vnAliasIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/alias/index/locale/es.yml b/modules/account/front/alias/index/locale/es.yml
deleted file mode 100644
index 4df41c0be..000000000
--- a/modules/account/front/alias/index/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-New alias: Nuevo alias
-View alias: Ver alias
\ No newline at end of file
diff --git a/modules/account/front/alias/locale/es.yml b/modules/account/front/alias/locale/es.yml
deleted file mode 100644
index ecc856fcf..000000000
--- a/modules/account/front/alias/locale/es.yml
+++ /dev/null
@@ -1 +0,0 @@
-Public: Público
\ No newline at end of file
diff --git a/modules/account/front/alias/main/index.html b/modules/account/front/alias/main/index.html
deleted file mode 100644
index 43f6e2f51..000000000
--- a/modules/account/front/alias/main/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/alias/main/index.js b/modules/account/front/alias/main/index.js
deleted file mode 100644
index 21eed3d85..000000000
--- a/modules/account/front/alias/main/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import ngModule from '../../module';
-import ModuleMain from 'salix/components/module-main';
-
-export default class Alias extends ModuleMain {
- exprBuilder(param, value) {
- switch (param) {
- case 'search':
- return /^\d+$/.test(value)
- ? {id: value}
- : {alias: {like: `%${value}%`}};
- }
- }
-}
-
-ngModule.vnComponent('vnAlias', {
- controller: Alias,
- template: require('./index.html')
-});
diff --git a/modules/account/front/alias/summary/index.html b/modules/account/front/alias/summary/index.html
deleted file mode 100644
index 52ee2813d..000000000
--- a/modules/account/front/alias/summary/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
- {{summary.alias}}
-
-
- Basic data
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/alias/summary/index.js b/modules/account/front/alias/summary/index.js
deleted file mode 100644
index 21bc8d9ba..000000000
--- a/modules/account/front/alias/summary/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import ngModule from '../../module';
-import Component from 'core/lib/component';
-
-class Controller extends Component {
- set alias(value) {
- this._alias = value;
- this.$.summary = null;
- if (!value) return;
-
- this.$http.get(`MailAliases/${value.id}`)
- .then(res => this.$.summary = res.data);
- }
-
- get alias() {
- return this._alias;
- }
-}
-
-ngModule.component('vnAliasSummary', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- alias: '<'
- }
-});
diff --git a/modules/account/front/alias/users/index.html b/modules/account/front/alias/users/index.html
deleted file mode 100644
index 048a702ea..000000000
--- a/modules/account/front/alias/users/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
- {{::row.user.name}}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/account/front/alias/users/index.js b/modules/account/front/alias/users/index.js
deleted file mode 100644
index b2446d71b..000000000
--- a/modules/account/front/alias/users/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- $onInit() {
- let filter = {
- include: {
- relation: 'user',
- scope: {
- fields: ['id', 'name']
- }
- }
- };
- this.$http.get(`MailAliases/${this.$params.id}/accounts`, {filter})
- .then(res => this.$.data = res.data);
- }
-
- onRemove(row) {
- return this.$http.delete(`MailAliases/${this.$params.id}/accounts/${row.id}`)
- .then(() => {
- let index = this.$.data.indexOf(row);
- if (index !== -1) this.$.data.splice(index, 1);
- this.vnApp.showSuccess(this.$t('User removed'));
- });
- }
-}
-
-ngModule.component('vnAliasUsers', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/alias/users/index.spec.js b/modules/account/front/alias/users/index.spec.js
deleted file mode 100644
index d618f1de1..000000000
--- a/modules/account/front/alias/users/index.spec.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import './index';
-
-describe('component vnAliasUsers', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- controller = $componentController('vnAliasUsers', {$element: null});
- controller.$params.id = 1;
- }));
-
- describe('$onInit()', () => {
- it('should delete entity and go to index', () => {
- $httpBackend.expectGET('MailAliases/1/accounts').respond('foo');
- controller.$onInit();
- $httpBackend.flush();
-
- expect(controller.$.data).toBe('foo');
- });
- });
-
- describe('onRemove()', () => {
- it('should call backend method to change role', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- controller.$.data = [
- {id: 1, alias: 'foo'},
- {id: 2, alias: 'bar'}
- ];
-
- $httpBackend.expectDELETE('MailAliases/1/accounts/1').respond();
- controller.onRemove(controller.$.data[0]);
- $httpBackend.flush();
-
- expect(controller.$.data).toEqual([{id: 2, alias: 'bar'}]);
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-});
diff --git a/modules/account/front/alias/users/locale/es.yml b/modules/account/front/alias/users/locale/es.yml
deleted file mode 100644
index dc24eb318..000000000
--- a/modules/account/front/alias/users/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-User will be removed from alias: El usuario será borrado del alias
-User removed: Usuario borrado
\ No newline at end of file
diff --git a/modules/account/front/aliases/index.html b/modules/account/front/aliases/index.html
deleted file mode 100644
index 4a73ec873..000000000
--- a/modules/account/front/aliases/index.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
- {{::row.alias.alias}}
-
-
- {{::row.alias.description}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Save
-
-
-
-
-
-
- Account not enabled
-
diff --git a/modules/account/front/aliases/index.js b/modules/account/front/aliases/index.js
deleted file mode 100644
index 0fc806a71..000000000
--- a/modules/account/front/aliases/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- $onInit() {
- this.refresh();
- }
-
- refresh() {
- let filter = {
- where: {account: this.$params.id},
- include: {
- relation: 'alias',
- scope: {
- fields: ['id', 'alias', 'description']
- }
- }
- };
- return this.$http.get(`MailAliasAccounts`, {filter})
- .then(res => this.$.data = res.data);
- }
-
- onAddClick() {
- this.addData = {account: this.$params.id};
- this.$.dialog.show();
- }
-
- onAddSave() {
- return this.$http.post(`MailAliasAccounts`, this.addData)
- .then(() => this.refresh())
- .then(() => this.vnApp.showSuccess(
- this.$t('Subscribed to alias!'))
- );
- }
-
- onRemove(row) {
- return this.$http.delete(`MailAliasAccounts/${row.id}`)
- .then(() => {
- this.$.data.splice(this.$.data.indexOf(row), 1);
- this.vnApp.showSuccess(this.$t('Unsubscribed from alias!'));
- });
- }
-}
-
-ngModule.component('vnUserAliases', {
- template: require('./index.html'),
- controller: Controller,
- require: {
- card: '^vnUserCard'
- }
-});
diff --git a/modules/account/front/aliases/index.spec.js b/modules/account/front/aliases/index.spec.js
deleted file mode 100644
index 466f1e1e9..000000000
--- a/modules/account/front/aliases/index.spec.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import './index';
-
-describe('component vnUserAliases', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- controller = $componentController('vnUserAliases', {$element: null});
- jest.spyOn(controller.vnApp, 'showSuccess');
- }));
-
- describe('refresh()', () => {
- it('should refresh the controller data', () => {
- $httpBackend.expectGET('MailAliasAccounts').respond('foo');
- controller.refresh();
- $httpBackend.flush();
-
- expect(controller.$.data).toBe('foo');
- });
- });
-
- describe('onAddSave()', () => {
- it('should add the new row', () => {
- controller.addData = {account: 1};
-
- $httpBackend.expectPOST('MailAliasAccounts').respond();
- $httpBackend.expectGET('MailAliasAccounts').respond('foo');
- controller.onAddSave();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('onRemove()', () => {
- it('shoud remove the passed row remote and locally', () => {
- controller.$.data = [
- {id: 1, alias: 'foo'},
- {id: 2, alias: 'bar'}
- ];
-
- $httpBackend.expectDELETE('MailAliasAccounts/1').respond();
- controller.onRemove(controller.$.data[0]);
- $httpBackend.flush();
-
- expect(controller.$.data).toEqual([{id: 2, alias: 'bar'}]);
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-});
diff --git a/modules/account/front/aliases/locale/es.yml b/modules/account/front/aliases/locale/es.yml
deleted file mode 100644
index 4d1ad76a7..000000000
--- a/modules/account/front/aliases/locale/es.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-Unsubscribe: Desuscribir
-Subscribed to alias!: ¡Suscrito al alias!
-Unsubscribed from alias!: ¡Desuscrito del alias!
\ No newline at end of file
diff --git a/modules/account/front/basic-data/index.html b/modules/account/front/basic-data/index.html
deleted file mode 100644
index 9fd3506fe..000000000
--- a/modules/account/front/basic-data/index.html
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
diff --git a/modules/account/front/basic-data/index.js b/modules/account/front/basic-data/index.js
deleted file mode 100644
index f6b266bbc..000000000
--- a/modules/account/front/basic-data/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- $onInit() {
- if (this.$params.emailConfirmed)
- this.vnApp.showSuccess(this.$t('Email verified successfully!'));
- }
-
- onSubmit() {
- this.$.watcher.submit()
- .then(() => this.card.reload());
- }
-}
-
-ngModule.component('vnUserBasicData', {
- template: require('./index.html'),
- controller: Controller,
- require: {
- card: '^vnUserCard'
- },
- bindings: {
- user: '<'
- }
-});
diff --git a/modules/account/front/basic-data/locale/es.yml b/modules/account/front/basic-data/locale/es.yml
deleted file mode 100644
index 2ca7bf698..000000000
--- a/modules/account/front/basic-data/locale/es.yml
+++ /dev/null
@@ -1 +0,0 @@
-Email verified successfully!: Correo verificado correctamente!
diff --git a/modules/account/front/card/index.html b/modules/account/front/card/index.html
deleted file mode 100644
index cba6b93c6..000000000
--- a/modules/account/front/card/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
diff --git a/modules/account/front/card/index.js b/modules/account/front/card/index.js
deleted file mode 100644
index 2c8cc7637..000000000
--- a/modules/account/front/card/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import ngModule from '../module';
-import ModuleCard from 'salix/components/module-card';
-import './style.scss';
-
-class Controller extends ModuleCard {
- reload() {
- const filter = {
- where: {id: this.$params.id},
- include: {
- relation: 'role',
- scope: {
- fields: ['id', 'name']
- }
- }
- };
-
- return Promise.all([
- this.$http.get(`VnUsers/preview`, {filter})
- .then(res => {
- const [user] = res.data;
- this.user = user;
- }),
- this.$http.get(`Accounts/${this.$params.id}/exists`)
- .then(res => this.hasAccount = res.data.exists)
- ]);
- }
-}
-
-ngModule.vnComponent('vnUserCard', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/card/index.spec.js b/modules/account/front/card/index.spec.js
deleted file mode 100644
index 712d3c1d8..000000000
--- a/modules/account/front/card/index.spec.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import './index';
-
-describe('component vnUserCard', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- controller = $componentController('vnUserCard', {$element: null});
- }));
-
- describe('reload()', () => {
- it('should reload the controller data', () => {
- controller.$params.id = 1;
-
- $httpBackend.expectGET('VnUsers/preview').respond('foo');
- $httpBackend.expectGET('Accounts/1/exists').respond({exists: true});
- controller.reload();
- $httpBackend.flush();
-
- expect(controller.user).toBe('f');
- expect(controller.hasAccount).toBeTruthy();
- });
- });
-});
diff --git a/modules/account/front/card/style.scss b/modules/account/front/card/style.scss
deleted file mode 100644
index 4d9d108a0..000000000
--- a/modules/account/front/card/style.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-@import "variables";
-
-.bg-title {
- display: block;
- text-align: center;
- padding: 24px;
- box-sizing: border-box;
- color: $color-font-secondary;
- font-size: 1.375rem;
-}
diff --git a/modules/account/front/connections/index.html b/modules/account/front/connections/index.html
deleted file mode 100644
index d634b7a9f..000000000
--- a/modules/account/front/connections/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
- {{::row.user.username}}
- {{::row.created | date:'dd/MM HH:mm'}}
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/connections/index.js b/modules/account/front/connections/index.js
deleted file mode 100644
index c4ddd5615..000000000
--- a/modules/account/front/connections/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor(...args) {
- super(...args);
- this.filter = {
- fields: ['id', 'created', 'userId'],
- include: {
- relation: 'user',
- scope: {
- fields: ['username']
- }
- },
- order: 'created DESC'
- };
- }
-
- onDisconnect(row) {
- return this.$http.delete(`AccessTokens/${row.id}`)
- .then(() => this.$.model.refresh())
- .then(() => this.vnApp.showSuccess(this.$t('Session killed')));
- }
-}
-
-ngModule.component('vnConnections', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/connections/locale/es.yml b/modules/account/front/connections/locale/es.yml
deleted file mode 100644
index 41ef18b45..000000000
--- a/modules/account/front/connections/locale/es.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-Go to user: Ir al usuario
-Refresh: Actualizar
-Session will be killed: Se va a matar la sesión
-Kill session: Matar sesión
-Session killed: Sesión matada
\ No newline at end of file
diff --git a/modules/account/front/create/index.html b/modules/account/front/create/index.html
deleted file mode 100644
index 70a518885..000000000
--- a/modules/account/front/create/index.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
diff --git a/modules/account/front/create/index.js b/modules/account/front/create/index.js
deleted file mode 100644
index 01ba7905b..000000000
--- a/modules/account/front/create/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.user = {active: true};
- }
-
- onSubmit() {
- return this.$.watcher.submit().then(res => {
- this.$state.go('account.card.basicData', {id: res.data.id});
- });
- }
-}
-
-ngModule.component('vnUserCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/descriptor/__snapshots__/index.spec.js.snap b/modules/account/front/descriptor/__snapshots__/index.spec.js.snap
deleted file mode 100644
index de5f8e8c2..000000000
--- a/modules/account/front/descriptor/__snapshots__/index.spec.js.snap
+++ /dev/null
@@ -1,5 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`component vnUserDescriptor onPassChange() should throw an error when password is empty 1`] = `"You must enter a new password"`;
-
-exports[`component vnUserDescriptor onPassChange() should throw an error when repeat password not matches new password 1`] = `"Passwords don't match"`;
diff --git a/modules/account/front/descriptor/index.spec.js b/modules/account/front/descriptor/index.spec.js
deleted file mode 100644
index 46c7e376c..000000000
--- a/modules/account/front/descriptor/index.spec.js
+++ /dev/null
@@ -1,97 +0,0 @@
-import './index';
-
-describe('component vnUserDescriptor', () => {
- let controller;
- let $httpBackend;
-
- let user = {id: 1, name: 'foo'};
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- $httpBackend.whenGET('Accounts/1/exists').respond({exists: true});
-
- controller = $componentController('vnUserDescriptor', {$element: null}, {user});
- jest.spyOn(controller, 'emit');
- jest.spyOn(controller.vnApp, 'showSuccess');
- }));
-
- describe('onDelete()', () => {
- it('should delete entity and go to index', () => {
- controller.$state.go = jest.fn();
-
- $httpBackend.expectDELETE('VnUsers/1').respond();
- controller.onDelete();
- $httpBackend.flush();
-
- expect(controller.$state.go).toHaveBeenCalledWith('account.index');
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('onPassChange()', () => {
- it('should throw an error when password is empty', () => {
- expect(() => {
- controller.onPassChange();
- }).toThrowErrorMatchingSnapshot();
- });
-
- it('should throw an error when repeat password not matches new password', () => {
- controller.newPassword = 'foo';
- controller.repeatPassword = 'bar';
-
- expect(() => {
- controller.onPassChange();
- }).toThrowErrorMatchingSnapshot();
- });
-
- it('should make a request when password checks passes', () => {
- controller.newPassword = 'foo';
- controller.repeatPassword = 'foo';
-
- $httpBackend.expectPATCH('Accounts/1/setPassword').respond();
- controller.onPassChange();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.emit).toHaveBeenCalledWith('change');
- });
- });
-
- describe('onEnableAccount()', () => {
- it('should make request to enable account', () => {
- $httpBackend.expectPOST('Accounts', {id: 1}).respond();
- controller.onEnableAccount();
- $httpBackend.flush();
-
- expect(controller.hasAccount).toBeTruthy();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.emit).toHaveBeenCalledWith('change');
- });
- });
-
- describe('onDisableAccount()', () => {
- it('should make request to disable account', () => {
- $httpBackend.expectDELETE('Accounts/1').respond();
- controller.onDisableAccount();
- $httpBackend.flush();
-
- expect(controller.hasAccount).toBeFalsy();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.emit).toHaveBeenCalledWith('change');
- });
- });
-
- describe('onSetActive()', () => {
- it('should make request to activate/deactivate the user', () => {
- $httpBackend.expectPATCH('VnUsers/1', {active: true}).respond();
- controller.onSetActive(true);
- $httpBackend.flush();
-
- expect(controller.user.active).toBeTruthy();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.emit).toHaveBeenCalledWith('change');
- });
- });
-});
diff --git a/modules/account/front/index.js b/modules/account/front/index.js
index 4d6aedcae..0f2208862 100644
--- a/modules/account/front/index.js
+++ b/modules/account/front/index.js
@@ -1,24 +1,6 @@
export * from './module';
import './main';
-import './index/';
-import './role';
-import './alias';
-import './connections';
-import './acl';
-import './summary';
-import './card';
import './descriptor';
import './descriptor-popover';
-import './search-panel';
-import './create';
-import './basic-data';
-import './mail-forwarding';
-import './aliases';
-import './roles';
-import './ldap';
-import './samba';
-import './accounts';
-import './privileges';
-import './user-log';
-import './role-log';
+import './summary';
diff --git a/modules/account/front/index/index.html b/modules/account/front/index/index.html
deleted file mode 100644
index 7502c8b3d..000000000
--- a/modules/account/front/index/index.html
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/account/front/index/index.js b/modules/account/front/index/index.js
deleted file mode 100644
index 9324ca740..000000000
--- a/modules/account/front/index/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- preview(user) {
- this.selectedUser = user;
- this.$.summary.show();
- }
-}
-
-ngModule.component('vnUserIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/index/locale/es.yml b/modules/account/front/index/locale/es.yml
deleted file mode 100644
index 074fb054e..000000000
--- a/modules/account/front/index/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-New user: Nuevo usuario
-View user: Ver usuario
\ No newline at end of file
diff --git a/modules/account/front/ldap/index.html b/modules/account/front/ldap/index.html
deleted file mode 100644
index 23356452a..000000000
--- a/modules/account/front/ldap/index.html
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
diff --git a/modules/account/front/ldap/index.js b/modules/account/front/ldap/index.js
deleted file mode 100644
index 40e1e8db1..000000000
--- a/modules/account/front/ldap/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onTestConection() {
- this.$http.get(`LdapConfigs/test`)
- .then(() => this.vnApp.showSuccess(this.$t('LDAP connection established!')));
- }
-}
-
-ngModule.component('vnAccountLdap', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/ldap/locale/es.yml b/modules/account/front/ldap/locale/es.yml
deleted file mode 100644
index 0353d6b72..000000000
--- a/modules/account/front/ldap/locale/es.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-Enable synchronization: Habilitar sincronización
-Server: Servidor
-RDN: RDN
-User DN: DN usuarios
-Filter: Filtro
-Group DN: DN grupos
-Test connection: Probar conexión
-LDAP connection established!: ¡Conexión con LDAP establecida!
diff --git a/modules/account/front/mail-forwarding/index.html b/modules/account/front/mail-forwarding/index.html
deleted file mode 100644
index df5cd80bf..000000000
--- a/modules/account/front/mail-forwarding/index.html
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
- Account not enabled
-
diff --git a/modules/account/front/mail-forwarding/index.js b/modules/account/front/mail-forwarding/index.js
deleted file mode 100644
index 5118e8eab..000000000
--- a/modules/account/front/mail-forwarding/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {}
-
-ngModule.component('vnUserMailForwarding', {
- template: require('./index.html'),
- controller: Controller,
- require: {
- card: '^vnUserCard'
- },
-});
diff --git a/modules/account/front/mail-forwarding/locale/es.yml b/modules/account/front/mail-forwarding/locale/es.yml
deleted file mode 100644
index 688ace6b5..000000000
--- a/modules/account/front/mail-forwarding/locale/es.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-Mail forwarding: Reenvío de correo
-Forward email: Dirección de reenvío
-Enable mail forwarding: Habilitar redirección de correo
-All emails will be forwarded to the specified address.: >
- Todos los correos serán reenviados a la dirección especificada, no se
- mantendrá copia de los mismos en el buzón del usuario.
-You don't have enough privileges: No tienes suficientes permisos
diff --git a/modules/account/front/main/index.html b/modules/account/front/main/index.html
index 36b493ec4..e69de29bb 100644
--- a/modules/account/front/main/index.html
+++ b/modules/account/front/main/index.html
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/account/front/main/index.js b/modules/account/front/main/index.js
index a43ffb76b..335d71b42 100644
--- a/modules/account/front/main/index.js
+++ b/modules/account/front/main/index.js
@@ -4,32 +4,10 @@ import ModuleMain from 'salix/components/module-main';
export default class User extends ModuleMain {
constructor($element, $) {
super($element, $);
- this.filter = {
- fields: ['id', 'nickname', 'name', 'role'],
- include: {
- relation: 'role',
- scope: {
- fields: ['id', 'name']
- }
- }
- };
}
-
- exprBuilder(param, value) {
- switch (param) {
- case 'search':
- return /^\d+$/.test(value)
- ? {id: value}
- : {or: [
- {name: {like: `%${value}%`}},
- {nickname: {like: `%${value}%`}}
- ]};
- case 'name':
- case 'nickname':
- return {[param]: {like: `%${value}%`}};
- case 'roleFk':
- return {[param]: value};
- }
+ async $onInit() {
+ this.$state.go('home');
+ window.location.href = await this.vnApp.getUrl(`account/`);
}
}
diff --git a/modules/account/front/main/index.spec.js b/modules/account/front/main/index.spec.js
deleted file mode 100644
index c232aa849..000000000
--- a/modules/account/front/main/index.spec.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import './index';
-
-describe('component vnUser', () => {
- let controller;
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject($componentController => {
- controller = $componentController('vnUser', {$element: null});
- }));
-
- describe('exprBuilder()', () => {
- it('should search by id when only digits string is passed', () => {
- let expr = controller.exprBuilder('search', '1');
-
- expect(expr).toEqual({id: '1'});
- });
-
- it('should search by name when non-only digits string is passed', () => {
- let expr = controller.exprBuilder('search', '1foo');
-
- expect(expr).toEqual({or: [
- {name: {like: '%1foo%'}},
- {nickname: {like: '%1foo%'}}
- ]});
- });
- });
-});
diff --git a/modules/account/front/privileges/index.html b/modules/account/front/privileges/index.html
deleted file mode 100644
index 343c179e3..000000000
--- a/modules/account/front/privileges/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
diff --git a/modules/account/front/privileges/index.js b/modules/account/front/privileges/index.js
deleted file mode 100644
index f69428666..000000000
--- a/modules/account/front/privileges/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- get user() {
- return this._user;
- }
-
- set user(value) {
- this._user = value;
- if (!value) return;
- }
-}
-
-ngModule.component('vnUserPrivileges', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- user: '<'
- }
-});
diff --git a/modules/account/front/privileges/locale/es.yml b/modules/account/front/privileges/locale/es.yml
deleted file mode 100644
index d66a7a6cf..000000000
--- a/modules/account/front/privileges/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-Privileges: Privilegios
-Has grant: Puede delegar privilegios
diff --git a/modules/account/front/role-log/index.html b/modules/account/front/role-log/index.html
deleted file mode 100644
index 9e2b151b5..000000000
--- a/modules/account/front/role-log/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/modules/account/front/role-log/index.js b/modules/account/front/role-log/index.js
deleted file mode 100644
index 02448ccaa..000000000
--- a/modules/account/front/role-log/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-ngModule.vnComponent('vnRoleLog', {
- template: require('./index.html'),
- controller: Section,
-});
diff --git a/modules/account/front/role/basic-data/index.html b/modules/account/front/role/basic-data/index.html
deleted file mode 100644
index 846f8b455..000000000
--- a/modules/account/front/role/basic-data/index.html
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
diff --git a/modules/account/front/role/basic-data/index.js b/modules/account/front/role/basic-data/index.js
deleted file mode 100644
index 4e26906ee..000000000
--- a/modules/account/front/role/basic-data/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {}
-
-ngModule.component('vnRoleBasicData', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- role: '<'
- }
-});
diff --git a/modules/account/front/role/card/index.html b/modules/account/front/role/card/index.html
deleted file mode 100644
index 2f51f88b5..000000000
--- a/modules/account/front/role/card/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/modules/account/front/role/card/index.js b/modules/account/front/role/card/index.js
deleted file mode 100644
index 3c7c758ef..000000000
--- a/modules/account/front/role/card/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../../module';
-import ModuleCard from 'salix/components/module-card';
-
-class Controller extends ModuleCard {
- reload() {
- this.$http.get(`VnRoles/${this.$params.id}`)
- .then(res => this.role = res.data);
- }
-}
-
-ngModule.vnComponent('vnRoleCard', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/role/card/index.spec.js b/modules/account/front/role/card/index.spec.js
deleted file mode 100644
index 569fe487d..000000000
--- a/modules/account/front/role/card/index.spec.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import './index';
-
-describe('component vnRoleCard', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- controller = $componentController('vnRoleCard', {$element: null});
- }));
-
- describe('reload()', () => {
- it('should reload the controller data', () => {
- controller.$params.id = 1;
-
- $httpBackend.expectGET('VnRoles/1').respond('foo');
- controller.reload();
- $httpBackend.flush();
-
- expect(controller.role).toBe('foo');
- });
- });
-});
diff --git a/modules/account/front/role/create/index.html b/modules/account/front/role/create/index.html
deleted file mode 100644
index 77d6fc2c1..000000000
--- a/modules/account/front/role/create/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
diff --git a/modules/account/front/role/create/index.js b/modules/account/front/role/create/index.js
deleted file mode 100644
index 3f7fcc9cf..000000000
--- a/modules/account/front/role/create/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onSubmit() {
- return this.$.watcher.submit().then(res =>
- this.$state.go('account.role.card.basicData', {id: res.data.id})
- );
- }
-}
-
-ngModule.component('vnRoleCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/role/descriptor/index.html b/modules/account/front/role/descriptor/index.html
deleted file mode 100644
index d8bf4857a..000000000
--- a/modules/account/front/role/descriptor/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
- Delete
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/account/front/role/descriptor/index.js b/modules/account/front/role/descriptor/index.js
deleted file mode 100644
index 17b585cb7..000000000
--- a/modules/account/front/role/descriptor/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import ngModule from '../../module';
-import Descriptor from 'salix/components/descriptor';
-
-class Controller extends Descriptor {
- get role() {
- return this.entity;
- }
-
- set role(value) {
- this.entity = value;
- }
-
- onDelete() {
- return this.$http.delete(`VnRoles/${this.id}`)
- .then(() => this.$state.go('account.role'))
- .then(() => this.vnApp.showSuccess(this.$t('Role removed')));
- }
-}
-
-ngModule.component('vnRoleDescriptor', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- role: '<'
- }
-});
diff --git a/modules/account/front/role/descriptor/index.spec.js b/modules/account/front/role/descriptor/index.spec.js
deleted file mode 100644
index f3b2e4763..000000000
--- a/modules/account/front/role/descriptor/index.spec.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import './index';
-
-describe('component vnRoleDescriptor', () => {
- let controller;
- let $httpBackend;
-
- let role = {id: 1, name: 'foo'};
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- controller = $componentController('vnRoleDescriptor', {$element: null}, {role});
- }));
-
- describe('onDelete()', () => {
- it('should delete entity and go to index', () => {
- controller.$state.go = jest.fn();
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- $httpBackend.expectDELETE('VnRoles/1').respond();
- controller.onDelete();
- $httpBackend.flush();
-
- expect(controller.$state.go).toHaveBeenCalledWith('account.role');
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-});
diff --git a/modules/account/front/role/descriptor/locale/es.yml b/modules/account/front/role/descriptor/locale/es.yml
deleted file mode 100644
index 1ca512e4f..000000000
--- a/modules/account/front/role/descriptor/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-Role will be removed: El rol va a ser eliminado
-Role removed: Rol eliminado
\ No newline at end of file
diff --git a/modules/account/front/role/index.js b/modules/account/front/role/index.js
deleted file mode 100644
index 97a20d3bc..000000000
--- a/modules/account/front/role/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import './main';
-import './index/';
-import './summary';
-import './card';
-import './descriptor';
-import './search-panel';
-import './create';
-import './basic-data';
-import './subroles';
-import './inherited';
diff --git a/modules/account/front/role/index/index.html b/modules/account/front/role/index/index.html
deleted file mode 100644
index 4c4c6b0ad..000000000
--- a/modules/account/front/role/index/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/role/index/index.js b/modules/account/front/role/index/index.js
deleted file mode 100644
index 40773b23b..000000000
--- a/modules/account/front/role/index/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- preview(role) {
- this.selectedRole = role;
- this.$.summary.show();
- }
-}
-
-ngModule.component('vnRoleIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/role/index/locale/es.yml b/modules/account/front/role/index/locale/es.yml
deleted file mode 100644
index 70932e983..000000000
--- a/modules/account/front/role/index/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-New role: Nuevo rol
-View role: Ver rol
\ No newline at end of file
diff --git a/modules/account/front/role/inherited/index.html b/modules/account/front/role/inherited/index.html
deleted file mode 100644
index 83ecbbff4..000000000
--- a/modules/account/front/role/inherited/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
- {{::row.inherits.name}}
-
-
- {{::row.inherits.description}}
-
-
-
-
-
-
diff --git a/modules/account/front/role/inherited/index.js b/modules/account/front/role/inherited/index.js
deleted file mode 100644
index 5927493ee..000000000
--- a/modules/account/front/role/inherited/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- $onInit() {
- let filter = {
- where: {role: this.$params.id},
- include: {
- relation: 'inherits',
- scope: {
- fields: ['id', 'name', 'description']
- }
- }
- };
- this.$http.get('RoleRoles', {filter})
- .then(res => this.$.data = res.data);
- }
-}
-
-ngModule.component('vnRoleInherited', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/role/inherited/index.spec.js b/modules/account/front/role/inherited/index.spec.js
deleted file mode 100644
index 16b0c53b2..000000000
--- a/modules/account/front/role/inherited/index.spec.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import './index';
-
-describe('component vnRoleInherited', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- controller = $componentController('vnRoleInherited', {$element: null});
- }));
-
- describe('$onInit()', () => {
- it('should delete entity and go to index', () => {
- $httpBackend.expectGET('RoleRoles').respond('foo');
- controller.$onInit();
- $httpBackend.flush();
-
- expect(controller.$.data).toBe('foo');
- });
- });
-});
diff --git a/modules/account/front/role/locale/es.yml b/modules/account/front/role/locale/es.yml
deleted file mode 100644
index 159fc7f16..000000000
--- a/modules/account/front/role/locale/es.yml
+++ /dev/null
@@ -1 +0,0 @@
-Subroles: Subroles
diff --git a/modules/account/front/role/main/index.html b/modules/account/front/role/main/index.html
deleted file mode 100644
index cfef28e57..000000000
--- a/modules/account/front/role/main/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/modules/account/front/role/main/index.js b/modules/account/front/role/main/index.js
deleted file mode 100644
index 77d15cf17..000000000
--- a/modules/account/front/role/main/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import ngModule from '../../module';
-import ModuleMain from 'salix/components/module-main';
-
-export default class Role extends ModuleMain {
- exprBuilder(param, value) {
- switch (param) {
- case 'search':
- return /^\d+$/.test(value)
- ? {id: value}
- : {or: [
- {name: {like: `%${value}%`}},
- {nickname: {like: `%${value}%`}}
- ]};
- case 'name':
- case 'description':
- return {[param]: {like: `%${value}%`}};
- }
- }
-}
-
-ngModule.vnComponent('vnRole', {
- controller: Role,
- template: require('./index.html')
-});
diff --git a/modules/account/front/role/search-panel/index.html b/modules/account/front/role/search-panel/index.html
deleted file mode 100644
index dfea9f01c..000000000
--- a/modules/account/front/role/search-panel/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/role/search-panel/index.js b/modules/account/front/role/search-panel/index.js
deleted file mode 100644
index 35da591ad..000000000
--- a/modules/account/front/role/search-panel/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-ngModule.component('vnRoleSearchPanel', {
- template: require('./index.html'),
- controller: SearchPanel
-});
diff --git a/modules/account/front/role/subroles/index.html b/modules/account/front/role/subroles/index.html
deleted file mode 100644
index eba1002b0..000000000
--- a/modules/account/front/role/subroles/index.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
- {{::row.inherits.name}}
-
-
- {{::row.inherits.description}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Save
-
-
-
-
diff --git a/modules/account/front/role/subroles/index.js b/modules/account/front/role/subroles/index.js
deleted file mode 100644
index b7e1caaa4..000000000
--- a/modules/account/front/role/subroles/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- $onInit() {
- this.refresh();
- }
-
- get path() {
- return `RoleInherits`;
- }
-
- refresh() {
- let filter = {
- where: {role: this.$params.id},
- include: {
- relation: 'inherits',
- scope: {
- fields: ['id', 'name', 'description']
- }
- }
- };
- this.$http.get(this.path, {filter})
- .then(res => this.$.data = res.data);
- }
-
- onAddClick() {
- this.addData = {role: this.$params.id};
- this.$.dialog.show();
- }
-
- onAddSave() {
- return this.$http.post(this.path, this.addData)
- .then(() => this.refresh())
- .then(() => this.vnApp.showSuccess(this.$t('Role added! Changes will take a while to fully propagate.')));
- }
-
- onRemove(row) {
- return this.$http.delete(`${this.path}/${row.id}`)
- .then(() => {
- let index = this.$.data.indexOf(row);
- if (index !== -1) this.$.data.splice(index, 1);
- this.vnApp.showSuccess(this.$t('Role removed. Changes will take a while to fully propagate.'));
- });
- }
-}
-
-ngModule.component('vnRoleSubroles', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/role/subroles/index.spec.js b/modules/account/front/role/subroles/index.spec.js
deleted file mode 100644
index e7d9a4d0e..000000000
--- a/modules/account/front/role/subroles/index.spec.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import './index';
-
-describe('component vnRoleSubroles', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('account'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- controller = $componentController('vnRoleSubroles', {$element: null});
- jest.spyOn(controller.vnApp, 'showSuccess');
- }));
-
- describe('refresh()', () => {
- it('should delete entity and go to index', () => {
- $httpBackend.expectGET('RoleInherits').respond('foo');
- controller.refresh();
- $httpBackend.flush();
-
- expect(controller.$.data).toBe('foo');
- });
- });
-
- describe('onAddSave()', () => {
- it('should add a subrole', () => {
- controller.addData = {role: 'foo'};
-
- $httpBackend.expectPOST('RoleInherits', {role: 'foo'}).respond();
- $httpBackend.expectGET('RoleInherits').respond();
- controller.onAddSave();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('onRemove()', () => {
- it('should remove a subrole', () => {
- controller.$.data = [
- {id: 1, name: 'foo'},
- {id: 2, name: 'bar'}
- ];
-
- $httpBackend.expectDELETE('RoleInherits/1').respond();
- controller.onRemove(controller.$.data[0]);
- $httpBackend.flush();
-
- expect(controller.$.data).toEqual([{id: 2, name: 'bar'}]);
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-});
diff --git a/modules/account/front/role/subroles/locale/es.yml b/modules/account/front/role/subroles/locale/es.yml
deleted file mode 100644
index 170882405..000000000
--- a/modules/account/front/role/subroles/locale/es.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-Role added! Changes will take a while to fully propagate.: >
- ¡Rol añadido! Los cambios tardaran un tiempo en propagarse completamente.
-Role removed. Changes will take a while to fully propagate.: >
- Rol eliminado. Los cambios tardaran un tiempo en propagarse completamente.
diff --git a/modules/account/front/role/summary/index.html b/modules/account/front/role/summary/index.html
deleted file mode 100644
index f7971190c..000000000
--- a/modules/account/front/role/summary/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
- {{summary.name}}
-
-
- Basic data
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/account/front/role/summary/index.js b/modules/account/front/role/summary/index.js
deleted file mode 100644
index 6c649a68f..000000000
--- a/modules/account/front/role/summary/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import ngModule from '../../module';
-import Component from 'core/lib/component';
-
-class Controller extends Component {
- set role(value) {
- this._role = value;
- this.$.summary = null;
- if (!value) return;
- this.$http.get(`VnRoles/${value.id}`)
- .then(res => this.$.summary = res.data);
- }
-
- get role() {
- return this._role;
- }
-}
-
-ngModule.component('vnRoleSummary', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- role: '<'
- }
-});
diff --git a/modules/account/front/roles/index.html b/modules/account/front/roles/index.html
deleted file mode 100644
index 8c8583929..000000000
--- a/modules/account/front/roles/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
- {{::row.role.name}}
-
-
- {{::row.role.description}}
-
-
-
-
-
-
diff --git a/modules/account/front/roles/index.js b/modules/account/front/roles/index.js
deleted file mode 100644
index 0982dcf10..000000000
--- a/modules/account/front/roles/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- $onInit() {
- let filter = {
- where: {
- prindicpalType: 'USER',
- principalId: this.$params.id
- },
- include: {
- relation: 'role',
- scope: {
- fields: ['id', 'name', 'description']
- }
- }
- };
- this.$http.get('RoleMappings', {filter})
- .then(res => this.$.data = res.data);
- }
-}
-
-ngModule.component('vnUserRoles', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/routes.json b/modules/account/front/routes.json
index d7845090b..9eadf2af2 100644
--- a/modules/account/front/routes.json
+++ b/modules/account/front/routes.json
@@ -7,31 +7,6 @@
"menus": {
"main": [
{"state": "account.index", "icon": "face"},
- {"state": "account.role", "icon": "group"},
- {"state": "account.alias", "icon": "email"},
- {"state": "account.accounts", "icon": "accessibility"},
- {"state": "account.ldap", "icon": "account_tree"},
- {"state": "account.samba", "icon": "preview"},
- {"state": "account.acl", "icon": "check"},
- {"state": "account.connections", "icon": "share"}
- ],
- "card": [
- {"state": "account.card.basicData", "icon": "settings"},
- {"state": "account.card.roles", "icon": "group"},
- {"state": "account.card.mailForwarding", "icon": "forward"},
- {"state": "account.card.aliases", "icon": "email"},
- {"state": "account.card.privileges", "icon": "badge"},
- {"state": "account.card.log", "icon": "history"}
- ],
- "role": [
- {"state": "account.role.card.basicData", "icon": "settings"},
- {"state": "account.role.card.subroles", "icon": "groups"},
- {"state": "account.role.card.inherited", "icon": "account_tree"},
- {"state": "account.role.card.log", "icon": "history"}
- ],
- "alias": [
- {"state": "account.alias.card.basicData", "icon": "settings"},
- {"state": "account.alias.card.users", "icon": "groups"}
]
},
"keybindings": [
@@ -50,224 +25,6 @@
"state": "account.index",
"component": "vn-user-index",
"description": "Users"
- },
- {
- "url": "/create",
- "state": "account.create",
- "component": "vn-user-create",
- "description": "New user"
- },
- {
- "url": "/:id",
- "state": "account.card",
- "component": "vn-user-card",
- "abstract": true,
- "description": "Detail"
- },
- {
- "url": "/summary",
- "state": "account.card.summary",
- "component": "vn-user-summary",
- "description": "Summary",
- "params": {
- "user": "$ctrl.user"
- }
- },
- {
- "url": "/basic-data?emailConfirmed",
- "state": "account.card.basicData",
- "component": "vn-user-basic-data",
- "description": "Basic data",
- "params": {
- "user": "$ctrl.user"
- }
- },
- {
- "url" : "/log",
- "state": "account.card.log",
- "component": "vn-user-log",
- "description": "Log"
- },
- {
- "url" : "/log",
- "state": "account.role.card.log",
- "component": "vn-role-log",
- "description": "Log"
- },
- {
- "url": "/roles",
- "state": "account.card.roles",
- "component": "vn-user-roles",
- "description": "Inherited roles"
- },
- {
- "url": "/mail-forwarding",
- "state": "account.card.mailForwarding",
- "component": "vn-user-mail-forwarding",
- "description": "Mail forwarding"
- },
- {
- "url": "/aliases",
- "state": "account.card.aliases",
- "component": "vn-user-aliases",
- "description": "Mail aliases"
- },
- {
- "url": "/privileges",
- "state": "account.card.privileges",
- "component": "vn-user-privileges",
- "description": "Privileges",
- "params": {
- "user": "$ctrl.user"
- }
- },
- {
- "url": "/role?q",
- "state": "account.role",
- "component": "vn-role",
- "description": "Roles",
- "acl": ["it"]
- },
- {
- "url": "/create",
- "state": "account.role.create",
- "component": "vn-role-create",
- "description": "New role",
- "acl": ["it"]
- },
- {
- "url": "/:id",
- "state": "account.role.card",
- "component": "vn-role-card",
- "abstract": true,
- "description": "Detail"
- },
- {
- "url": "/summary",
- "state": "account.role.card.summary",
- "component": "vn-role-summary",
- "description": "Summary",
- "params": {
- "role": "$ctrl.role"
- },
- "acl": ["it"]
- },
- {
- "url": "/basic-data",
- "state": "account.role.card.basicData",
- "component": "vn-role-basic-data",
- "description": "Basic data",
- "params": {
- "role": "$ctrl.role"
- },
- "acl": ["it"]
- },
- {
- "url": "/subroles",
- "state": "account.role.card.subroles",
- "component": "vn-role-subroles",
- "description": "Subroles",
- "acl": ["it"]
- },
- {
- "url": "/inherited",
- "state": "account.role.card.inherited",
- "component": "vn-role-inherited",
- "description": "Inherited roles",
- "acl": ["it"]
- },
- {
- "url": "/alias?q",
- "state": "account.alias",
- "component": "vn-alias",
- "description": "Mail aliases"
- },
- {
- "url": "/create",
- "state": "account.alias.create",
- "component": "vn-alias-create",
- "description": "New alias"
- },
- {
- "url": "/:id",
- "state": "account.alias.card",
- "component": "vn-alias-card",
- "abstract": true,
- "description": "Detail"
- },
- {
- "url": "/summary",
- "state": "account.alias.card.summary",
- "component": "vn-alias-summary",
- "description": "Summary",
- "params": {
- "alias": "$ctrl.alias"
- }
- },
- {
- "url": "/basic-data",
- "state": "account.alias.card.basicData",
- "component": "vn-alias-basic-data",
- "description": "Basic data",
- "params": {
- "alias": "$ctrl.alias"
- }
- },
- {
- "url": "/users",
- "state": "account.alias.card.users",
- "component": "vn-alias-users",
- "description": "Users",
- "acl": ["it"]
- },
- {
- "url": "/accounts",
- "state": "account.accounts",
- "component": "vn-account-accounts",
- "description": "Accounts",
- "acl": ["sysadmin"]
- },
- {
- "url": "/ldap",
- "state": "account.ldap",
- "component": "vn-account-ldap",
- "description": "LDAP",
- "acl": ["sysadmin"]
- },
- {
- "url": "/samba",
- "state": "account.samba",
- "component": "vn-account-samba",
- "description": "Samba",
- "acl": ["sysadmin"]
- },
- {
- "url": "/acl?q",
- "state": "account.acl",
- "component": "vn-acl-component",
- "description": "ACLs",
- "acl": ["developer"]
- },
- {
- "url": "/create",
- "state": "account.acl.create",
- "component": "vn-acl-create",
- "description": "New ACL",
- "acl": ["developer"]
- },
- {
- "url": "/:id/edit",
- "state": "account.acl.edit",
- "component": "vn-acl-create",
- "description": "Edit ACL",
- "acl": ["developer"]
- },
- {
- "url": "/connections",
- "state": "account.connections",
- "component": "vn-connections",
- "description": "Connections",
- "acl": ["developer"]
}
]
}
diff --git a/modules/account/front/samba/index.html b/modules/account/front/samba/index.html
deleted file mode 100644
index 0186cac7c..000000000
--- a/modules/account/front/samba/index.html
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
diff --git a/modules/account/front/samba/index.js b/modules/account/front/samba/index.js
deleted file mode 100644
index 6a4969893..000000000
--- a/modules/account/front/samba/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onTestConection() {
- this.$http.get(`SambaConfigs/test`)
- .then(() => this.vnApp.showSuccess(this.$t('Samba connection established!')));
- }
-}
-
-ngModule.component('vnAccountSamba', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/account/front/samba/locale/es.yml b/modules/account/front/samba/locale/es.yml
deleted file mode 100644
index efa3b1597..000000000
--- a/modules/account/front/samba/locale/es.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-Enable synchronization: Habilitar sincronización
-Domain controller: Controlador de dominio
-AD domain: Dominio AD
-AD user: Usuario AD
-AD password: Contraseña AD
-User DN (without domain part): DN usuarios (sin la parte del dominio)
-Verify certificate: Verificar certificado
-Test connection: Probar conexión
-Samba connection established!: ¡Conexión con Samba establecida!
diff --git a/modules/account/front/search-panel/index.html b/modules/account/front/search-panel/index.html
deleted file mode 100644
index a539d9657..000000000
--- a/modules/account/front/search-panel/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
diff --git a/modules/account/front/search-panel/index.js b/modules/account/front/search-panel/index.js
deleted file mode 100644
index fff3bf7b9..000000000
--- a/modules/account/front/search-panel/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-ngModule.component('vnUserSearchPanel', {
- template: require('./index.html'),
- controller: SearchPanel
-});
diff --git a/modules/account/front/summary/index.html b/modules/account/front/summary/index.html
index 41632aef6..f3c11f25f 100644
--- a/modules/account/front/summary/index.html
+++ b/modules/account/front/summary/index.html
@@ -1,6 +1,6 @@
\ No newline at end of file
+
diff --git a/modules/account/front/user-log/index.html b/modules/account/front/user-log/index.html
deleted file mode 100644
index 5a77ed7b9..000000000
--- a/modules/account/front/user-log/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/modules/account/front/user-log/index.js b/modules/account/front/user-log/index.js
deleted file mode 100644
index 7cd0bb378..000000000
--- a/modules/account/front/user-log/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-ngModule.vnComponent('vnUserLog', {
- template: require('./index.html'),
- controller: Section,
-});
diff --git a/modules/claim/front/action/index.html b/modules/claim/front/action/index.html
deleted file mode 100644
index 9da51b8de..000000000
--- a/modules/claim/front/action/index.html
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Id
- Ticket
-
- Destination
-
-
- Landed
-
-
- Quantity
-
-
- Description
-
-
- Price
-
-
- Disc.
-
- Total
-
-
-
-
-
-
-
-
-
-
- {{::saleClaimed.itemFk}}
-
-
-
-
- {{::saleClaimed.ticketFk}}
-
-
-
-
-
-
- {{::saleClaimed.landed | date: 'dd/MM/yyyy'}}
- {{::saleClaimed.quantity}}
- {{::saleClaimed.concept}}
- {{::saleClaimed.price | currency: 'EUR':2}}
- {{::saleClaimed.discount}} %
- {{saleClaimed.total | currency: 'EUR':2}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{$ctrl.$t('Change destination to all selected rows', {total: $ctrl.checked.length})}}
-
-
-
-
-
-
-
-
- Save
-
-
diff --git a/modules/claim/front/action/index.js b/modules/claim/front/action/index.js
deleted file mode 100644
index 10b629f27..000000000
--- a/modules/claim/front/action/index.js
+++ /dev/null
@@ -1,233 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.newDestination;
- this.filter = {
- include: [
- {relation: 'sale',
- scope: {
- fields: ['concept', 'ticketFk', 'price', 'quantity', 'discount', 'itemFk'],
- include: {
- relation: 'ticket'
- }
- }
- },
- {relation: 'claimBeggining'},
- {relation: 'claimDestination'}
- ]
- };
- this.getResolvedState();
- this.maxResponsibility = 5;
- this.smartTableOptions = {
- activeButtons: {
- search: true
- },
- columns: [
- {
- field: 'claimDestinationFk',
- autocomplete: {
- url: 'ClaimDestinations',
- showField: 'description',
- valueField: 'id'
- }
- },
- {
- field: 'landed',
- searchable: false
- }
- ]
- };
- }
-
- exprBuilder(param, value) {
- switch (param) {
- case 'itemFk':
- case 'ticketFk':
- case 'claimDestinationFk':
- case 'quantity':
- case 'price':
- case 'discount':
- case 'total':
- return {[param]: value};
- case 'concept':
- return {[param]: {like: `%${value}%`}};
- case 'landed':
- return {[param]: {between: this.dateRange(value)}};
- }
- }
-
- dateRange(value) {
- const minHour = new Date(value);
- minHour.setHours(0, 0, 0, 0);
- const maxHour = new Date(value);
- maxHour.setHours(23, 59, 59, 59);
-
- return [minHour, maxHour];
- }
-
- get checked() {
- const salesClaimed = this.$.model.data || [];
-
- const checkedSalesClaimed = [];
- for (let saleClaimed of salesClaimed) {
- if (saleClaimed.$checked)
- checkedSalesClaimed.push(saleClaimed);
- }
-
- return checkedSalesClaimed;
- }
-
- updateDestination(saleClaimed, claimDestinationFk) {
- const data = {rows: [saleClaimed], claimDestinationFk: claimDestinationFk};
- this.$http.post(`Claims/updateClaimDestination`, data).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- }).catch(e => {
- this.$.model.refresh();
- throw e;
- });
- }
-
- removeSales(saleClaimed) {
- const params = {sales: [saleClaimed]};
- this.$http.post(`ClaimEnds/deleteClamedSales`, params).then(() => {
- this.$.model.refresh();
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-
- getResolvedState() {
- const query = `ClaimStates/findOne`;
- const params = {
- filter: {
- where: {
- code: 'resolved'
- }
- }
- };
- this.$http.get(query, params).then(res =>
- this.resolvedStateId = res.data.id
- );
- }
-
- importToNewRefundTicket() {
- let query = `ClaimBeginnings/${this.$params.id}/importToNewRefundTicket`;
- return this.$http.post(query).then(() => {
- this.$.model.refresh();
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-
- focusLastInput() {
- let inputs = document.querySelectorAll('#claimDestinationFk');
- inputs[inputs.length - 1].querySelector('input').focus();
- this.calculateTotals();
- }
-
- calculateTotals() {
- this.claimedTotal = 0;
- this.salesClaimed.forEach(sale => {
- const price = sale.quantity * sale.price;
- const discount = (sale.discount * (sale.quantity * sale.price)) / 100;
- this.claimedTotal += price - discount;
- });
- }
-
- regularize() {
- const query = `Claims/${this.$params.id}/regularizeClaim`;
- return this.$http.post(query).then(() => {
- if (this.claim.responsibility >= Math.ceil(this.maxResponsibility) / 2)
- this.$.updateGreuge.show();
- else
- this.vnApp.showSuccess(this.$t('Data saved!'));
-
- this.card.reload();
- });
- }
-
- getGreugeTypeId() {
- const params = {filter: {where: {code: 'freightPickUp'}}};
- const query = `GreugeTypes/findOne`;
- return this.$http.get(query, {params}).then(res => {
- this.greugeTypeFreightId = res.data.id;
-
- return res;
- });
- }
-
- getGreugeConfig() {
- const query = `GreugeConfigs/findOne`;
- return this.$http.get(query).then(res => {
- this.freightPickUpPrice = res.data.freightPickUpPrice;
-
- return res;
- });
- }
-
- onUpdateGreugeAccept() {
- const promises = [];
- promises.push(this.getGreugeTypeId());
- promises.push(this.getGreugeConfig());
-
- return Promise.all(promises).then(() => {
- return this.updateGreuge({
- clientFk: this.claim.clientFk,
- description: this.$t('ClaimGreugeDescription', {
- claimId: this.claim.id
- }).toUpperCase(),
- amount: this.freightPickUpPrice,
- greugeTypeFk: this.greugeTypeFreightId,
- ticketFk: this.claim.ticketFk
- });
- });
- }
-
- updateGreuge(data) {
- return this.$http.post(`Greuges`, data).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.vnApp.showMessage(this.$t('Greuge added'));
- });
- }
-
- save(data) {
- const query = `Claims/${this.$params.id}/updateClaimAction`;
- this.$http.patch(query, data)
- .then(() => this.vnApp.showSuccess(this.$t('Data saved!')));
- }
-
- onSave() {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- }
-
- onResponse() {
- const rowsToEdit = [];
- for (let row of this.checked)
- rowsToEdit.push({id: row.id});
-
- const data = {
- rows: rowsToEdit,
- claimDestinationFk: this.newDestination
- };
-
- const query = `Claims/updateClaimDestination`;
- this.$http.post(query, data)
- .then(() => {
- this.$.model.refresh();
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-}
-
-ngModule.vnComponent('vnClaimAction', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- claim: '<'
- },
- require: {
- card: '^vnClaimCard'
- }
-});
diff --git a/modules/claim/front/action/index.spec.js b/modules/claim/front/action/index.spec.js
deleted file mode 100644
index e773511bf..000000000
--- a/modules/claim/front/action/index.spec.js
+++ /dev/null
@@ -1,167 +0,0 @@
-import './index.js';
-import crudModel from 'core/mocks/crud-model';
-
-describe('claim', () => {
- describe('Component vnClaimAction', () => {
- let controller;
- let $httpBackend;
- let $state;
-
- beforeEach(ngModule('claim'));
-
- beforeEach(inject(($componentController, _$state_, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- $state = _$state_;
- $state.params.id = 1;
-
- controller = $componentController('vnClaimAction', {$element: null});
- controller.claim = {ticketFk: 1};
- controller.$.model = {refresh: () => {}};
- controller.$.addSales = {
- hide: () => {},
- show: () => {}
- };
- controller.$.lastTicketsModel = crudModel;
- controller.$.lastTicketsPopover = {
- hide: () => {},
- show: () => {}
- };
- controller.card = {reload: () => {}};
- $httpBackend.expectGET(`ClaimStates/findOne`).respond({});
- }));
-
- describe('getResolvedState()', () => {
- it('should return the resolved state id', () => {
- $httpBackend.expectGET(`ClaimStates/findOne`).respond({id: 1});
- controller.getResolvedState();
- $httpBackend.flush();
-
- expect(controller.resolvedStateId).toEqual(1);
- });
- });
-
- describe('calculateTotals()', () => {
- it('should calculate the total price of the items claimed', () => {
- controller.salesClaimed = [
- {quantity: 5, price: 2, discount: 0},
- {quantity: 10, price: 2, discount: 0},
- {quantity: 10, price: 2, discount: 0}
- ];
- controller.calculateTotals();
-
- expect(controller.claimedTotal).toEqual(50);
- });
- });
-
- describe('importToNewRefundTicket()', () => {
- it('should perform a post query and add lines from a new ticket', () => {
- jest.spyOn(controller.$.model, 'refresh');
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- $httpBackend.expect('POST', `ClaimBeginnings/1/importToNewRefundTicket`).respond({});
- controller.importToNewRefundTicket();
- $httpBackend.flush();
-
- expect(controller.$.model.refresh).toHaveBeenCalled();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('regularize()', () => {
- it('should perform a post query and reload the claim card', () => {
- jest.spyOn(controller.card, 'reload');
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- $httpBackend.expect('POST', `Claims/1/regularizeClaim`).respond({});
- controller.regularize();
- $httpBackend.flush();
-
- expect(controller.card.reload).toHaveBeenCalledWith();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('save()', () => {
- it('should perform a patch query and show a success message', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- const data = {pickup: 'agency'};
- $httpBackend.expect('PATCH', `Claims/1/updateClaimAction`, data).respond({});
- controller.save(data);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('onUpdateGreugeAccept()', () => {
- const greugeTypeId = 7;
- const freightPickUpPrice = 11;
-
- it('should make a query and get the greugeTypeId and greuge config', () => {
- $httpBackend.expectRoute('GET', `GreugeTypes/findOne`).respond({id: greugeTypeId});
- $httpBackend.expectGET(`GreugeConfigs/findOne`).respond({freightPickUpPrice});
- controller.onUpdateGreugeAccept();
- $httpBackend.flush();
-
- expect(controller.greugeTypeFreightId).toEqual(greugeTypeId);
- expect(controller.freightPickUpPrice).toEqual(freightPickUpPrice);
- });
-
- it('should perform a insert into greuges', done => {
- jest.spyOn(controller, 'getGreugeTypeId').mockReturnValue(new Promise(resolve => {
- return resolve({id: greugeTypeId});
- }));
- jest.spyOn(controller, 'getGreugeConfig').mockReturnValue(new Promise(resolve => {
- return resolve({freightPickUpPrice});
- }));
- jest.spyOn(controller, 'updateGreuge').mockReturnValue(new Promise(resolve => {
- return resolve(true);
- }));
-
- controller.claim.clientFk = 1101;
- controller.claim.id = 11;
-
- controller.onUpdateGreugeAccept().then(() => {
- expect(controller.updateGreuge).toHaveBeenCalledWith(jasmine.any(Object));
- done();
- }).catch(done.fail);
- });
- });
-
- describe('updateGreuge()', () => {
- it('should make a query and then call to showSuccess() and showMessage() methods', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
- jest.spyOn(controller.vnApp, 'showMessage');
-
- const freightPickUpPrice = 11;
- const greugeTypeId = 7;
- const expectedData = {
- clientFk: 1101,
- description: `claim: ${controller.claim.id}`,
- amount: freightPickUpPrice,
- greugeTypeFk: greugeTypeId,
- ticketFk: controller.claim.ticketFk
- };
- $httpBackend.expect('POST', `Greuges`, expectedData).respond(200);
- controller.updateGreuge(expectedData);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!');
- expect(controller.vnApp.showMessage).toHaveBeenCalledWith('Greuge added');
- });
- });
-
- describe('onResponse()', () => {
- it('should perform a post query and show a success message', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- $httpBackend.expect('POST', `Claims/updateClaimDestination`).respond({});
- controller.onResponse();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
- });
-});
diff --git a/modules/claim/front/action/locale/en.yml b/modules/claim/front/action/locale/en.yml
deleted file mode 100644
index faab67c06..000000000
--- a/modules/claim/front/action/locale/en.yml
+++ /dev/null
@@ -1 +0,0 @@
-ClaimGreugeDescription: Claim id {{claimId}}
\ No newline at end of file
diff --git a/modules/claim/front/action/locale/es.yml b/modules/claim/front/action/locale/es.yml
deleted file mode 100644
index 97640d9dc..000000000
--- a/modules/claim/front/action/locale/es.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-Destination: Destino
-Action: Actuaciones
-Total claimed: Total Reclamado
-Import claim: Importar reclamacion
-Imports claim details: Importa detalles de la reclamacion
-Regularize: Regularizar
-Do you want to insert greuges?: Desea insertar greuges?
-Insert greuges on client card: Insertar greuges en la ficha del cliente
-Greuge added: Greuge añadido
-ClaimGreugeDescription: Reclamación id {{claimId}}
-Change destination: Cambiar destino
-Change destination to all selected rows: Cambiar destino a {{total}} fila(s) seleccionada(s)
-Add observation to all selected clients: Añadir observación a {{total}} cliente(s) seleccionado(s)
diff --git a/modules/claim/front/action/style.scss b/modules/claim/front/action/style.scss
deleted file mode 100644
index cda6779c8..000000000
--- a/modules/claim/front/action/style.scss
+++ /dev/null
@@ -1,46 +0,0 @@
-vn-claim-action {
- .header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- align-content: center;
-
- vn-tool-bar {
- flex: none
- }
-
- .vn-check {
- flex: none;
- }
- }
-
- vn-dialog[vn-id=addSales] {
- tpl-body {
- width: 950px;
- div {
- div.buttons {
- display: none;
- }
- vn-table{
- min-width: 950px;
- }
- }
- }
- }
-
- vn-popover.lastTicketsPopover {
- vn-table {
- min-width: 650px;
- overflow: auto
- }
-
- div.ticketList {
- overflow: auto;
- max-height: 350px;
- }
- }
-
- .right {
- margin-left: 370px;
- }
-}
\ No newline at end of file
diff --git a/modules/claim/front/basic-data/index.html b/modules/claim/front/basic-data/index.html
deleted file mode 100644
index 45bc1823d..000000000
--- a/modules/claim/front/basic-data/index.html
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
diff --git a/modules/claim/front/basic-data/index.js b/modules/claim/front/basic-data/index.js
deleted file mode 100644
index 818012bb9..000000000
--- a/modules/claim/front/basic-data/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-class Controller extends Section {
- onSubmit() {
- this.$.watcher.submit().then(() => {
- if (this.aclService.hasAny(['claimManager']))
- this.$state.go('claim.card.detail');
- });
- }
-}
-
-ngModule.vnComponent('vnClaimBasicData', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- claim: '<'
- }
-});
diff --git a/modules/claim/front/basic-data/index.spec.js b/modules/claim/front/basic-data/index.spec.js
deleted file mode 100644
index 638f88418..000000000
--- a/modules/claim/front/basic-data/index.spec.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import './index.js';
-import watcher from 'core/mocks/watcher';
-
-describe('Claim', () => {
- describe('Component vnClaimBasicData', () => {
- let controller;
- let $scope;
-
- beforeEach(ngModule('claim'));
-
- beforeEach(inject(($componentController, $rootScope) => {
- $scope = $rootScope.$new();
- $scope.watcher = watcher;
- const $element = angular.element(' ');
- controller = $componentController('vnClaimBasicData', {$element, $scope});
- }));
-
- describe('onSubmit()', () => {
- it(`should redirect to 'claim.card.detail' state`, () => {
- jest.spyOn(controller.aclService, 'hasAny').mockReturnValue(true);
- jest.spyOn(controller.$state, 'go');
- controller.onSubmit();
-
- expect(controller.$state.go).toHaveBeenCalledWith('claim.card.detail');
- });
- });
- });
-});
diff --git a/modules/claim/front/basic-data/locale/es.yml b/modules/claim/front/basic-data/locale/es.yml
deleted file mode 100644
index 5250d266c..000000000
--- a/modules/claim/front/basic-data/locale/es.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-Contact: Contacto
-Claim state: Estado de la reclamación
-Is paid with mana: Cargado al maná
-Responsability: Responsabilidad
-Company: Empresa
-Sales/Client: Comercial/Cliente
-Pick up: Recoger
-When checked will notify to the salesPerson: Cuando se marque enviará una notificación de recogida al comercial
-Packages received: Bultos recibidos
diff --git a/modules/claim/front/basic-data/style.scss b/modules/claim/front/basic-data/style.scss
deleted file mode 100644
index e80361ca8..000000000
--- a/modules/claim/front/basic-data/style.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-vn-claim-basic-data vn-date-picker {
- padding-left: 80px;
-}
diff --git a/modules/claim/front/card/index.html b/modules/claim/front/card/index.html
deleted file mode 100644
index 1db6b38db..000000000
--- a/modules/claim/front/card/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/modules/claim/front/card/index.js b/modules/claim/front/card/index.js
deleted file mode 100644
index 5dad0dfc2..000000000
--- a/modules/claim/front/card/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import ngModule from '../module';
-import ModuleCard from 'salix/components/module-card';
-
-class Controller extends ModuleCard {
- reload() {
- let filter = {
- include: [
- {
- relation: 'worker',
- scope: {
- fields: ['id'],
- include: {
- relation: 'user',
- scope: {
- fields: ['name']
- }
- }
- }
- }, {
- relation: 'ticket',
- scope: {
- fields: ['zoneFk', 'addressFk'],
- include: [
- {
- relation: 'zone',
- scope: {
- fields: ['name']
- }
- },
- {
- relation: 'address',
- scope: {
- fields: ['provinceFk'],
- include: {
- relation: 'province',
- scope: {
- fields: ['name']
- }
- }
- }
- }]
- }
- }, {
- relation: 'claimState',
- scope: {
- fields: ['id', 'description']
- }
- }, {
- relation: 'client',
- scope: {
- fields: ['salesPersonFk', 'name', 'email'],
- include: {
- relation: 'salesPersonUser'
- }
- }
- }
- ]
- };
-
- this.$http.get(`Claims/${this.$params.id}`, {filter})
- .then(res => this.claim = res.data);
- }
-}
-
-ngModule.vnComponent('vnClaimCard', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/claim/front/card/index.spec.js b/modules/claim/front/card/index.spec.js
deleted file mode 100644
index aa796c1e3..000000000
--- a/modules/claim/front/card/index.spec.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import './index.js';
-
-describe('Claim', () => {
- describe('Component vnClaimCard', () => {
- let controller;
- let $httpBackend;
- let data = {id: 1, name: 'fooName'};
-
- beforeEach(ngModule('claim'));
-
- beforeEach(inject(($componentController, _$httpBackend_, $stateParams) => {
- $httpBackend = _$httpBackend_;
-
- let $element = angular.element('
');
- controller = $componentController('vnClaimCard', {$element});
-
- $stateParams.id = data.id;
- $httpBackend.whenRoute('GET', 'Claims/:id').respond(data);
- }));
-
- it('should request data and set it on the controller', () => {
- controller.reload();
- $httpBackend.flush();
-
- expect(controller.claim).toEqual(data);
- });
- });
-});
-
diff --git a/modules/claim/front/descriptor/index.js b/modules/claim/front/descriptor/index.js
index 5e9ea5140..337233059 100644
--- a/modules/claim/front/descriptor/index.js
+++ b/modules/claim/front/descriptor/index.js
@@ -29,9 +29,9 @@ class Controller extends Descriptor {
deleteClaim() {
return this.$http.delete(`Claims/${this.claim.id}`)
- .then(() => {
+ .then(async() => {
this.vnApp.showSuccess(this.$t('Claim deleted!'));
- this.$state.go('claim.index');
+ window.location.href = await this.vnApp.getUrl(`claim/`);
});
}
}
diff --git a/modules/claim/front/descriptor/index.spec.js b/modules/claim/front/descriptor/index.spec.js
index e6785d3d8..03710b479 100644
--- a/modules/claim/front/descriptor/index.spec.js
+++ b/modules/claim/front/descriptor/index.spec.js
@@ -53,14 +53,12 @@ describe('Item Component vnClaimDescriptor', () => {
describe('deleteClaim()', () => {
it('should perform a query and call showSuccess if the response is accept', () => {
jest.spyOn(controller.vnApp, 'showSuccess');
- jest.spyOn(controller.$state, 'go');
$httpBackend.expectDELETE(`Claims/${claim.id}`).respond();
controller.deleteClaim();
$httpBackend.flush();
expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.$state.go).toHaveBeenCalledWith('claim.index');
});
});
});
diff --git a/modules/claim/front/detail/index.html b/modules/claim/front/detail/index.html
deleted file mode 100644
index a2a08a5db..000000000
--- a/modules/claim/front/detail/index.html
+++ /dev/null
@@ -1,178 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- Landed
- Quantity
- Claimed
- Description
- Price
- Disc.
- Total
-
-
-
-
-
- {{::saleClaimed.sale.ticket.landed | date:'dd/MM/yyyy'}}
- {{::saleClaimed.sale.quantity}}
-
-
-
-
-
-
- {{::saleClaimed.sale.concept}}
-
-
- {{::saleClaimed.sale.price | currency: 'EUR':2}}
-
-
- {{saleClaimed.sale.discount}} %
-
-
-
- {{$ctrl.getSaleTotal(saleClaimed.sale) | currency: 'EUR':2}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Claimable sales from ticket {{$ctrl.claim.ticketFk}}
-
-
-
-
-
-
- Landed
- Quantity
- Description
- Price
- Disc.
- Total
-
-
-
-
- {{sale.landed | date: 'dd/MM/yyyy'}}
- {{sale.quantity}}
-
-
- {{sale.itemFk}} - {{sale.concept}}
-
-
- {{sale.price | currency: 'EUR':2}}
- {{sale.discount}} %
-
- {{(sale.quantity * sale.price) - ((sale.discount * (sale.quantity * sale.price))/100) | currency: 'EUR':2}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Total claimed price
-
{{$ctrl.newPrice | currency: 'EUR':2}}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/claim/front/detail/index.js b/modules/claim/front/detail/index.js
deleted file mode 100644
index 56f39e074..000000000
--- a/modules/claim/front/detail/index.js
+++ /dev/null
@@ -1,203 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.edit = {};
- this.filter = {
- where: {claimFk: this.$params.id},
- include: [
- {
- relation: 'sale',
- scope: {
- fields: ['concept', 'ticketFk', 'price', 'quantity', 'discount', 'itemFk'],
- include: {
- relation: 'ticket'
- }
- }
- }
- ]
- };
- }
-
- get claim() {
- return this._claim;
- }
-
- set claim(value) {
- this._claim = value;
-
- if (value) {
- this.isClaimEditable();
- this.isTicketEditable();
- }
- }
-
- set salesClaimed(value) {
- this._salesClaimed = value;
-
- if (value) this.calculateTotals();
- }
-
- get salesClaimed() {
- return this._salesClaimed;
- }
-
- get newDiscount() {
- return this._newDiscount;
- }
-
- set newDiscount(value) {
- this._newDiscount = value;
- this.updateNewPrice();
- }
-
- get isClaimManager() {
- return this.aclService.hasAny(['claimManager']);
- }
-
- openAddSalesDialog() {
- this.getClaimableFromTicket();
- this.$.addSales.show();
- }
-
- getClaimableFromTicket() {
- let config = {params: {ticketFk: this.claim.ticketFk}};
- let query = `Sales/getClaimableFromTicket`;
- this.$http.get(query, config).then(res => {
- if (res.data)
- this.salesToClaim = res.data;
- });
- }
-
- addClaimedSale(index) {
- let sale = this.salesToClaim[index];
- let saleToAdd = {saleFk: sale.saleFk, claimFk: this.claim.id, quantity: sale.quantity};
- let query = `ClaimBeginnings/`;
- this.$http.post(query, saleToAdd).then(() => {
- this.$.addSales.hide();
- this.$.model.refresh();
- this.vnApp.showSuccess(this.$t('Data saved!'));
-
- if (this.aclService.hasAny(['claimManager']))
- this.$state.go('claim.card.development');
- });
- }
-
- showDeleteConfirm($index) {
- this.claimedIndex = $index;
- this.$.confirm.show();
- }
-
- deleteClaimedSale() {
- this.$.model.remove(this.claimedIndex);
- this.$.model.save().then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.calculateTotals();
- });
- }
-
- setClaimedQuantity(id, claimedQuantity) {
- let params = {quantity: claimedQuantity};
- let query = `ClaimBeginnings/${id}`;
- this.$http.patch(query, params).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.calculateTotals();
- });
- }
-
- calculateTotals() {
- this.paidTotal = 0.0;
- this.claimedTotal = 0.0;
- if (!this._salesClaimed) return;
-
- this._salesClaimed.forEach(sale => {
- let orgSale = sale.sale;
- this.paidTotal += this.getSaleTotal(orgSale);
-
- const price = sale.quantity * orgSale.price;
- const discount = ((orgSale.discount * price) / 100);
-
- this.claimedTotal += price - discount;
- });
- }
-
- getSaleTotal(sale) {
- let total = 0.0;
-
- const price = sale.quantity * sale.price;
- const discount = ((sale.discount * price) / 100);
-
- total += price - discount;
- return total;
- }
-
- getSalespersonMana() {
- this.$http.get(`Tickets/${this.claim.ticketFk}/getSalesPersonMana`).then(res => {
- this.mana = res.data;
- });
- }
-
- isTicketEditable() {
- if (!this.claim) return;
-
- this.$http.get(`Tickets/${this.claim.ticketFk}/isEditable`).then(res => {
- this.isEditable = res.data;
- });
- }
-
- isClaimEditable() {
- if (!this.claim) return;
-
- this.$http.get(`ClaimStates/${this.claim.claimStateFk}/isEditable`).then(res => {
- this.isRewritable = res.data;
- });
- }
-
- showEditPopover(event, saleClaimed) {
- if (this.aclService.hasAny(['claimManager'])) {
- this.saleClaimed = saleClaimed;
- this.$.editPopover.parent = event.target;
- this.$.editPopover.show();
- }
- }
-
- updateDiscount() {
- const claimedSale = this.saleClaimed.sale;
- if (this.newDiscount != claimedSale.discount) {
- const params = {salesIds: [claimedSale.id], newDiscount: this.newDiscount};
- const query = `Tickets/${claimedSale.ticketFk}/updateDiscount`;
-
- this.$http.post(query, params).then(() => {
- claimedSale.discount = this.newDiscount;
- this.calculateTotals();
- this.clearDiscount();
-
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-
- this.$.editPopover.hide();
- }
-
- updateNewPrice() {
- this.newPrice = (this.saleClaimed.quantity * this.saleClaimed.sale.price) -
- ((this.newDiscount * (this.saleClaimed.quantity * this.saleClaimed.sale.price)) / 100);
- }
-
- clearDiscount() {
- this.newDiscount = null;
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnClaimDetail', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- claim: '<'
- }
-});
diff --git a/modules/claim/front/detail/index.spec.js b/modules/claim/front/detail/index.spec.js
deleted file mode 100644
index 1ef779fd7..000000000
--- a/modules/claim/front/detail/index.spec.js
+++ /dev/null
@@ -1,150 +0,0 @@
-import './index.js';
-import crudModel from 'core/mocks/crud-model';
-
-describe('claim', () => {
- describe('Component vnClaimDetail', () => {
- let $scope;
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('claim'));
-
- beforeEach(inject(($componentController, _$httpBackend_, $rootScope) => {
- $scope = $rootScope.$new();
- $scope.descriptor = {
- show: () => {}
- };
- $httpBackend = _$httpBackend_;
- $httpBackend.whenGET('Claims/ClaimBeginnings').respond({});
- $httpBackend.whenGET(`Tickets/1/isEditable`).respond(true);
- $httpBackend.whenGET(`ClaimStates/2/isEditable`).respond(true);
- const $element = angular.element(' ');
- controller = $componentController('vnClaimDetail', {$element, $scope});
- controller.claim = {
- ticketFk: 1,
- id: 2,
- claimStateFk: 2}
- ;
- controller.salesToClaim = [{saleFk: 1}, {saleFk: 2}];
- controller.salesClaimed = [{id: 1, sale: {}}];
- controller.$.model = crudModel;
- controller.$.addSales = {
- hide: () => {},
- show: () => {}
- };
- controller.$.editPopover = {
- hide: () => {}
- };
- jest.spyOn(controller.aclService, 'hasAny').mockReturnValue(true);
- }));
-
- describe('openAddSalesDialog()', () => {
- it('should call getClaimableFromTicket and $.addSales.show', () => {
- jest.spyOn(controller, 'getClaimableFromTicket');
- jest.spyOn(controller.$.addSales, 'show');
- controller.openAddSalesDialog();
-
- expect(controller.getClaimableFromTicket).toHaveBeenCalledWith();
- expect(controller.$.addSales.show).toHaveBeenCalledWith();
- });
- });
-
- describe('getClaimableFromTicket()', () => {
- it('should make a query and set salesToClaim', () => {
- $httpBackend.expectGET(`Sales/getClaimableFromTicket?ticketFk=1`).respond(200, 1);
- controller.getClaimableFromTicket();
- $httpBackend.flush();
-
- expect(controller.salesToClaim).toEqual(1);
- });
- });
-
- describe('addClaimedSale(index)', () => {
- it('should make a post and call refresh, hide and showSuccess', () => {
- jest.spyOn(controller.$.addSales, 'hide');
- jest.spyOn(controller.$state, 'go');
- $httpBackend.expectPOST(`ClaimBeginnings/`).respond({});
- controller.addClaimedSale(1);
- $httpBackend.flush();
-
- expect(controller.$.addSales.hide).toHaveBeenCalledWith();
- expect(controller.$state.go).toHaveBeenCalledWith('claim.card.development');
- });
- });
-
- describe('deleteClaimedSale()', () => {
- it('should make a delete and call refresh and showSuccess', () => {
- const claimedIndex = 1;
- controller.claimedIndex = claimedIndex;
- jest.spyOn(controller.$.model, 'remove');
- jest.spyOn(controller.$.model, 'save');
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- controller.deleteClaimedSale();
-
- expect(controller.$.model.remove).toHaveBeenCalledWith(claimedIndex);
- expect(controller.$.model.save).toHaveBeenCalledWith();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('setClaimedQuantity(id, claimedQuantity)', () => {
- it('should make a patch and call refresh and showSuccess', () => {
- const id = 1;
- const claimedQuantity = 1;
-
- jest.spyOn(controller.vnApp, 'showSuccess');
- $httpBackend.expectPATCH(`ClaimBeginnings/${id}`).respond({});
- controller.setClaimedQuantity(id, claimedQuantity);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('calculateTotals()', () => {
- it('should set paidTotal and claimedTotal to 0 if salesClaimed has no data', () => {
- controller.salesClaimed = [];
- controller.calculateTotals();
-
- expect(controller.paidTotal).toEqual(0);
- expect(controller.claimedTotal).toEqual(0);
- });
- });
-
- describe('updateDiscount()', () => {
- it('should perform a query if the new discount differs from the claim discount', () => {
- controller.saleClaimed = {sale: {
- discount: 5,
- id: 7,
- ticketFk: 1,
- price: 2,
- quantity: 10}};
- controller.newDiscount = 10;
-
- jest.spyOn(controller.vnApp, 'showSuccess');
- jest.spyOn(controller, 'calculateTotals');
- jest.spyOn(controller, 'clearDiscount');
- jest.spyOn(controller.$.editPopover, 'hide');
-
- $httpBackend.when('POST', 'Tickets/1/updateDiscount').respond({});
- controller.updateDiscount();
- $httpBackend.flush();
-
- expect(controller.calculateTotals).toHaveBeenCalledWith();
- expect(controller.clearDiscount).toHaveBeenCalledWith();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.$.editPopover.hide).toHaveBeenCalledWith();
- });
- });
-
- describe('isTicketEditable()', () => {
- it('should check if the ticket assigned to the claim is editable', () => {
- controller.isTicketEditable();
- $httpBackend.flush();
-
- expect(controller.isEditable).toBeTruthy();
- });
- });
- });
-});
diff --git a/modules/claim/front/detail/locale/es.yml b/modules/claim/front/detail/locale/es.yml
deleted file mode 100644
index 53f9e9b1d..000000000
--- a/modules/claim/front/detail/locale/es.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-Claimed: Reclamados
-Disc.: Dto.
-Attended by: Atendida por
-Landed: F. entrega
-Price: Precio
-Claimable sales from ticket: Lineas reclamables del ticket
-Detail: Detalles
-Add sale item: Añadir artículo
-Insuficient permisos: Permisos insuficientes
-Total claimed price: Precio total reclamado
-Delete sale from claim?: ¿Borrar la linea de la reclamación?
\ No newline at end of file
diff --git a/modules/claim/front/detail/style.scss b/modules/claim/front/detail/style.scss
deleted file mode 100644
index 470c83034..000000000
--- a/modules/claim/front/detail/style.scss
+++ /dev/null
@@ -1,30 +0,0 @@
-@import "variables";
-
-.vn-popover .discount-popover {
- width: 256px;
-
- .header {
- background-color: $color-main;
- color: $color-font-dark;
-
- h5 {
- color: inherit;
- margin: 0 auto;
- }
- }
- .simulatorTitle {
- margin-bottom: 0;
- font-size: .75rem;
- color: $color-main;
- }
- vn-label-value {
- padding-bottom: 20px;
- }
- .simulator{
- text-align: center;
- }
-}
-
-.next{
- float: right;
-}
diff --git a/modules/claim/front/development/index.html b/modules/claim/front/development/index.html
deleted file mode 100644
index 7fb3b870e..000000000
--- a/modules/claim/front/development/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/modules/claim/front/development/index.js b/modules/claim/front/development/index.js
deleted file mode 100644
index 7b31bd17f..000000000
--- a/modules/claim/front/development/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- }
-
- async $onInit() {
- this.$state.go('claim.card.summary', {id: this.$params.id});
- window.location.href = await this.vnApp.getUrl(`claim/${this.$params.id}/development`);
- }
-}
-
-ngModule.vnComponent('vnClaimDevelopment', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- claim: '<'
- }
-});
diff --git a/modules/claim/front/index.js b/modules/claim/front/index.js
index 473f6a4d3..16397df28 100644
--- a/modules/claim/front/index.js
+++ b/modules/claim/front/index.js
@@ -1,16 +1,4 @@
export * from './module';
import './main';
-import './index/';
-import './action';
-import './basic-data';
-import './card';
-import './detail';
import './descriptor';
-import './development';
-import './search-panel';
-import './summary';
-import './photos';
-import './log';
-import './note/index';
-import './note/create';
diff --git a/modules/claim/front/index/index.html b/modules/claim/front/index/index.html
deleted file mode 100644
index 6b2481429..000000000
--- a/modules/claim/front/index/index.html
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
- Id
-
-
- Client
-
-
- Created
-
-
- Worker
-
-
- State
-
-
-
-
-
-
- {{::claim.id}}
-
-
- {{::claim.clientName}}
-
-
- {{::claim.created | date:'dd/MM/yyyy'}}
-
-
- {{::claim.workerName}}
-
-
-
-
- {{::claim.stateDescription}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/claim/front/index/index.js b/modules/claim/front/index/index.js
deleted file mode 100644
index e3fdabf79..000000000
--- a/modules/claim/front/index/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
-
- this.smartTableOptions = {
- activeButtons: {
- search: true
- },
- columns: [
- {
- field: 'clientName',
- autocomplete: {
- url: 'Clients',
- showField: 'name',
- valueField: 'name'
- }
- },
- {
- field: 'workerFk',
- autocomplete: {
- url: 'Workers/activeWithInheritedRole',
- where: `{role: 'salesPerson'}`,
- searchFunction: '{firstName: $search}',
- showField: 'name',
- valueField: 'id',
- }
- },
- {
- field: 'claimStateFk',
- autocomplete: {
- url: 'ClaimStates',
- showField: 'description',
- valueField: 'id',
- }
- },
- {
- field: 'created',
- searchable: false
- }
- ]
- };
- }
-
- exprBuilder(param, value) {
- switch (param) {
- case 'clientName':
- return {'cl.clientName': {like: `%${value}%`}};
- case 'clientFk':
- case 'claimStateFk':
- case 'workerFk':
- return {[`cl.${param}`]: value};
- }
- }
-
- stateColor(code) {
- switch (code) {
- case 'pending':
- return 'warning';
- case 'managed':
- return 'notice';
- case 'resolved':
- return 'success';
- }
- }
-
- preview(claim) {
- this.claimSelected = claim;
- this.$.summary.show();
- }
-
- reload() {
- this.$.model.refresh();
- }
-}
-
-ngModule.vnComponent('vnClaimIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/claim/front/log/index.html b/modules/claim/front/log/index.html
deleted file mode 100644
index 500a626d6..000000000
--- a/modules/claim/front/log/index.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/modules/claim/front/log/index.js b/modules/claim/front/log/index.js
deleted file mode 100644
index 0143a612b..000000000
--- a/modules/claim/front/log/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-ngModule.vnComponent('vnClaimLog', {
- template: require('./index.html'),
- controller: Section,
-});
diff --git a/modules/claim/front/main/index.html b/modules/claim/front/main/index.html
index f38cc573f..e69de29bb 100644
--- a/modules/claim/front/main/index.html
+++ b/modules/claim/front/main/index.html
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/claim/front/main/index.js b/modules/claim/front/main/index.js
index 0c5c7d728..c921d5a12 100644
--- a/modules/claim/front/main/index.js
+++ b/modules/claim/front/main/index.js
@@ -1,7 +1,18 @@
import ngModule from '../module';
import ModuleMain from 'salix/components/module-main';
+export default class Claim extends ModuleMain {
+ constructor($element, $) {
+ super($element, $);
+ }
+ async $onInit() {
+ this.$state.go('home');
+ window.location.href = await this.vnApp.getUrl(`claim/`);
+ }
+}
+
ngModule.vnComponent('vnClaim', {
- controller: ModuleMain,
+ controller: Claim,
template: require('./index.html')
});
+
diff --git a/modules/claim/front/note/create/index.html b/modules/claim/front/note/create/index.html
deleted file mode 100644
index 8a882a4f5..000000000
--- a/modules/claim/front/note/create/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
diff --git a/modules/claim/front/note/create/index.js b/modules/claim/front/note/create/index.js
deleted file mode 100644
index 40ae9309b..000000000
--- a/modules/claim/front/note/create/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.note = {
- claimFk: parseInt(this.$params.id),
- workerFk: window.localStorage.currentUserWorkerId,
- text: null
- };
- }
-
- cancel() {
- this.$state.go('claim.card.note.index', {id: this.$params.id});
- }
-}
-
-ngModule.vnComponent('vnClaimNoteCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/claim/front/note/index/index.html b/modules/claim/front/note/index/index.html
deleted file mode 100644
index 8ffe19c2b..000000000
--- a/modules/claim/front/note/index/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- {{::note.worker.firstName}} {{::note.worker.lastName}}
- {{::note.created | date:'dd/MM/yyyy HH:mm'}}
-
-
- {{::note.text}}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/claim/front/note/index/index.js b/modules/claim/front/note/index/index.js
deleted file mode 100644
index 5a2fd96d3..000000000
--- a/modules/claim/front/note/index/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.filter = {
- order: 'created DESC',
- };
- this.include = {
- relation: 'worker',
- scope: {
- fields: ['id', 'firstName', 'lastName']
- }
- };
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnClaimNote', {
- template: require('./index.html'),
- controller: Controller,
-});
diff --git a/modules/claim/front/note/index/style.scss b/modules/claim/front/note/index/style.scss
deleted file mode 100644
index 44ae2cee7..000000000
--- a/modules/claim/front/note/index/style.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-vn-client-note {
- .note:last-child {
- margin-bottom: 0;
- }
-}
\ No newline at end of file
diff --git a/modules/claim/front/photos/index.html b/modules/claim/front/photos/index.html
deleted file mode 100644
index 8b1378917..000000000
--- a/modules/claim/front/photos/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/modules/claim/front/photos/index.js b/modules/claim/front/photos/index.js
deleted file mode 100644
index c9fada9a4..000000000
--- a/modules/claim/front/photos/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- }
-
- async $onInit() {
- const url = await this.vnApp.getUrl(`claim/${this.$params.id}/photos`);
- window.location.href = url;
- }
-}
-
-ngModule.vnComponent('vnClaimPhotos', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- claim: '<'
- }
-});
diff --git a/modules/claim/front/search-panel/index.html b/modules/claim/front/search-panel/index.html
deleted file mode 100644
index 260f86801..000000000
--- a/modules/claim/front/search-panel/index.html
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
diff --git a/modules/claim/front/search-panel/index.js b/modules/claim/front/search-panel/index.js
deleted file mode 100644
index 2400b8ede..000000000
--- a/modules/claim/front/search-panel/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-class Controller extends SearchPanel {
- itemSearchFunc($search) {
- return /^\d+$/.test($search)
- ? {id: $search}
- : {name: {like: '%' + $search + '%'}};
- }
-}
-ngModule.vnComponent('vnClaimSearchPanel', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/claim/front/search-panel/locale/es.yml b/modules/claim/front/search-panel/locale/es.yml
deleted file mode 100644
index 1f892a742..000000000
--- a/modules/claim/front/search-panel/locale/es.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-Ticket id: Id ticket
-Client id: Id cliente
-Nickname: Alias
-From: Desde
-To: Hasta
-Agency: Agencia
-Warehouse: Almacén
\ No newline at end of file
diff --git a/modules/claim/front/summary/index.html b/modules/claim/front/summary/index.html
deleted file mode 100644
index b5225e6f4..000000000
--- a/modules/claim/front/summary/index.html
+++ /dev/null
@@ -1,273 +0,0 @@
-
-
-
-
-
-
-
- {{::$ctrl.summary.claim.id}} - {{::$ctrl.summary.claim.client.name}}
-
-
-
-
-
-
-
- Basic data
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Observations
-
-
-
- Observations
-
-
-
- {{::note.worker.firstName}} {{::note.worker.lastName}}
- {{::note.created | date:'dd/MM/yyyy HH:mm'}}
-
-
- {{::note.text}}
-
-
-
-
-
-
- Detail
-
-
-
- Detail
-
-
-
-
-
- Item
- Landed
- Quantity
- Claimed
- Description
- Price
- Disc.
- Total
-
-
-
-
-
-
- {{::saleClaimed.sale.itemFk}}
-
-
- {{::saleClaimed.sale.ticket.landed | date: 'dd/MM/yyyy'}}
- {{::saleClaimed.sale.quantity}}
- {{::saleClaimed.quantity}}
- {{::saleClaimed.sale.concept}}
- {{::saleClaimed.sale.price | currency: 'EUR':2}}
- {{::saleClaimed.sale.discount}} %
-
- {{saleClaimed.sale.quantity * saleClaimed.sale.price *
- ((100 - saleClaimed.sale.discount) / 100) | currency: 'EUR':2}}
-
-
-
-
-
-
-
- Photos
-
-
-
-
-
-
-
- Development
-
-
-
- Development
-
-
-
-
-
- Reason
- Result
- Responsible
- Worker
- Redelivery
-
-
-
-
- {{::development.claimReason.description}}
- {{::development.claimResult.description}}
- {{::development.claimResponsible.description}}
-
-
- {{::development.worker.user.nickname}}
-
-
- {{::development.claimRedelivery.description}}
-
-
-
-
-
-
-
-
- Action
-
-
-
- Action
-
-
-
-
-
-
-
-
-
-
-
- Item
- Ticket
- Destination
- Landed
- Quantity
- Description
- Price
- Disc.
- Total
-
-
-
-
-
-
- {{::action.sale.itemFk}}
-
-
-
-
- {{::action.sale.ticket.id}}
-
-
- {{::action.claimBeggining.description}}
- {{::action.sale.ticket.landed | date: 'dd/MM/yyyy'}}
- {{::action.sale.quantity}}
- {{::action.sale.concept}}
- {{::action.sale.price}}
- {{::action.sale.discount}} %
-
- {{action.sale.quantity * action.sale.price *
- ((100 - action.sale.discount) / 100) | currency: 'EUR':2}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/claim/front/summary/index.js b/modules/claim/front/summary/index.js
deleted file mode 100644
index 7cd4805e9..000000000
--- a/modules/claim/front/summary/index.js
+++ /dev/null
@@ -1,103 +0,0 @@
-import ngModule from '../module';
-import Summary from 'salix/components/summary';
-import './style.scss';
-
-class Controller extends Summary {
- constructor($element, $, vnFile) {
- super($element, $);
- this.vnFile = vnFile;
- this.filter = {
- include: [
- {
- relation: 'dms'
- }
- ]
- };
- }
-
- $onChanges() {
- if (this.claim && this.claim.id)
- this.loadData();
- }
-
- loadData() {
- return this.$http.get(`Claims/${this.claim.id}/getSummary`).then(res => {
- if (res && res.data)
- this.summary = res.data;
- });
- }
-
- reload() {
- this.loadData()
- .then(() => {
- if (this.card)
- this.card.reload();
-
- if (this.parentReload)
- this.parentReload();
- });
- }
-
- get isSalesPerson() {
- return this.aclService.hasAny(['salesPerson']);
- }
-
- get isClaimManager() {
- return this.aclService.hasAny(['claimManager']);
- }
-
- get claim() {
- return this._claim;
- }
-
- set claim(value) {
- this._claim = value;
-
- // Get DMS on summary load
- if (value) {
- this.$.$applyAsync(() => this.loadDms());
- this.loadData();
- }
- }
-
- loadDms() {
- this.$.model.where = {
- claimFk: this.claim.id
- };
- this.$.model.refresh();
- }
-
- getImagePath(dmsId) {
- return this.vnFile.getPath(`/api/dms/${dmsId}/downloadFile`);
- }
-
- changeState(value) {
- const params = {
- id: this.claim.id,
- claimStateFk: value
- };
-
- this.$http.patch(`Claims/updateClaim/${this.claim.id}`, params)
- .then(() => {
- this.reload();
- })
- .then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnFile'];
-
-ngModule.vnComponent('vnClaimSummary', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- claim: '<',
- model: '',
- parentReload: '&'
- },
- require: {
- card: '?^vnClaimCard'
- }
-});
diff --git a/modules/claim/front/summary/index.spec.js b/modules/claim/front/summary/index.spec.js
deleted file mode 100644
index 8540a3a97..000000000
--- a/modules/claim/front/summary/index.spec.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import './index.js';
-import crudModel from 'core/mocks/crud-model';
-
-describe('Claim', () => {
- describe('Component summary', () => {
- let controller;
- let $httpBackend;
- let $scope;
-
- beforeEach(ngModule('claim'));
-
- beforeEach(inject(($componentController, _$httpBackend_, $rootScope) => {
- $scope = $rootScope.$new();
- $httpBackend = _$httpBackend_;
- const $element = angular.element(' ');
- controller = $componentController('vnClaimSummary', {$element, $scope});
- controller.claim = {id: 1};
- controller.$.model = crudModel;
- }));
-
- describe('loadData()', () => {
- it('should perform a query to set summary', () => {
- $httpBackend.when('GET', `Claims/1/getSummary`).respond(200, 24);
- controller.loadData();
- $httpBackend.flush();
-
- expect(controller.summary).toEqual(24);
- });
- });
-
- describe('changeState()', () => {
- it('should make an HTTP post query, then call the showSuccess()', () => {
- jest.spyOn(controller.vnApp, 'showSuccess').mockReturnThis();
-
- const expectedParams = {id: 1, claimStateFk: 1};
- $httpBackend.when('GET', `Claims/1/getSummary`).respond(200, 24);
- $httpBackend.expect('PATCH', `Claims/updateClaim/1`, expectedParams).respond(200);
- controller.changeState(1);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('$onChanges()', () => {
- it('should call loadData when $onChanges is called', () => {
- jest.spyOn(controller, 'loadData');
-
- controller.$onChanges();
-
- expect(controller.loadData).toHaveBeenCalledWith();
- });
- });
- });
-});
diff --git a/modules/claim/front/summary/style.scss b/modules/claim/front/summary/style.scss
deleted file mode 100644
index 5b4e32f7a..000000000
--- a/modules/claim/front/summary/style.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-@import "./variables";
-
-vn-claim-summary {
- section.photo {
- height: 248px;
- }
- .photo .image {
- border-radius: 3px;
- }
- vn-textarea *{
- height: 80px;
- }
-
- .video {
- width: 100%;
- height: 100%;
- object-fit: cover;
- cursor: pointer;
- box-shadow: 0 2px 2px 0 rgba(0,0,0,.14),
- 0 3px 1px -2px rgba(0,0,0,.2),
- 0 1px 5px 0 rgba(0,0,0,.12);
- border: 2px solid transparent;
-
- }
- .video:hover {
- border: 2px solid $color-primary
- }
-}
\ No newline at end of file
diff --git a/modules/client/back/methods/client/hasCustomerRole.js b/modules/client/back/methods/client/hasCustomerRole.js
index e790d6e3a..08e90077e 100644
--- a/modules/client/back/methods/client/hasCustomerRole.js
+++ b/modules/client/back/methods/client/hasCustomerRole.js
@@ -29,7 +29,7 @@ module.exports = Self => {
SELECT COUNT(*) > 0 isCustomer
FROM salix.Account A
JOIN salix.Role r ON r.id = A.roleFK
- WHERE r.name = 'customer'
+ WHERE r.name IN ('customer', 'supplier')
AND A.id IN (?)`;
const [result] = await Self.rawSql(query, [id], myOptions);
const {isCustomer} = result;
diff --git a/modules/client/back/methods/defaulter/filter.js b/modules/client/back/methods/defaulter/filter.js
index 0bfa7659b..9f19dee0a 100644
--- a/modules/client/back/methods/defaulter/filter.js
+++ b/modules/client/back/methods/defaulter/filter.js
@@ -83,8 +83,14 @@ module.exports = Self => {
LEFT JOIN account.user u ON u.id = c.salesPersonFk
LEFT JOIN account.user uw ON uw.id = co.workerFk
LEFT JOIN (
- SELECT MAX(started), clientFk, finished
- FROM recovery
+ SELECT r1.started, r1.clientFk, r1.finished
+ FROM recovery r1
+ JOIN (
+ SELECT MAX(started) AS maxStarted, clientFk
+ FROM recovery
+ GROUP BY clientFk
+ ) r2 ON r1.clientFk = r2.clientFk
+ AND r1.started = r2.maxStarted
) r ON r.clientFk = c.id
LEFT JOIN workerDepartment wd ON wd.workerFk = u.id
JOIN department dp ON dp.id = wd.departmentFk
diff --git a/modules/client/back/models/client-sample.js b/modules/client/back/models/client-sample.js
index 5e4393042..b8ab6cff4 100644
--- a/modules/client/back/models/client-sample.js
+++ b/modules/client/back/models/client-sample.js
@@ -27,7 +27,7 @@ module.exports = Self => {
// Renew mandate
if (mandate) {
const mandateType = await models.MandateType.findOne({
- where: {name: mandate.type}
+ where: {code: mandate.type}
});
const oldMandate = await models.Mandate.findOne({
diff --git a/modules/client/back/models/mandate-type.json b/modules/client/back/models/mandate-type.json
index ec189f089..b481e7c72 100644
--- a/modules/client/back/models/mandate-type.json
+++ b/modules/client/back/models/mandate-type.json
@@ -12,7 +12,7 @@
"type": "number",
"description": "Identifier"
},
- "name": {
+ "code": {
"type": "string"
}
}
diff --git a/modules/client/front/balance/create/index.js b/modules/client/front/balance/create/index.js
index 9113d7605..f4ff0e3aa 100644
--- a/modules/client/front/balance/create/index.js
+++ b/modules/client/front/balance/create/index.js
@@ -23,6 +23,7 @@ class Controller extends Dialog {
}
set clientFk(value) {
+ if (!value) return;
this.receipt.clientFk = value;
const filter = {
@@ -32,6 +33,7 @@ class Controller extends Dialog {
}
};
+ this.getAmountPaid();
this.$http.get(`Clients/findOne`, {filter})
.then(res => {
this.receipt.email = res.data.email;
@@ -50,7 +52,6 @@ class Controller extends Dialog {
set companyFk(value) {
this.receipt.companyFk = value;
- this.getAmountPaid();
}
set description(value) {
@@ -152,7 +153,7 @@ class Controller extends Dialog {
getAmountPaid() {
const filter = {
where: {
- clientFk: this.$params.id,
+ clientFk: this.$params.id ?? this.clientFk,
companyFk: this.receipt.companyFk
}
};
@@ -210,8 +211,8 @@ ngModule.vnComponent('vnClientBalanceCreate', {
payed: '',
bankFk: '',
amountPaid: '',
+ clientFk: '',
companyFk: '',
description: '',
- clientFk: ''
}
});
diff --git a/modules/client/front/mandate/index.html b/modules/client/front/mandate/index.html
index e2f2cd27b..1ee18737f 100644
--- a/modules/client/front/mandate/index.html
+++ b/modules/client/front/mandate/index.html
@@ -26,7 +26,7 @@
{{::mandate.id}}
{{::mandate.company.code}}
- {{::mandate.mandateType.name}}
+ {{::mandate.mandateType.code}}
{{::mandate.created | date:'dd/MM/yyyy HH:mm' | dashIfEmpty}}
{{::mandate.finished | date:'dd/MM/yyyy HH:mm' | dashIfEmpty}}
diff --git a/modules/client/front/mandate/index.js b/modules/client/front/mandate/index.js
index 114e2b570..605ae08cc 100644
--- a/modules/client/front/mandate/index.js
+++ b/modules/client/front/mandate/index.js
@@ -9,7 +9,7 @@ class Controller extends Section {
{
relation: 'mandateType',
scope: {
- fields: ['id', 'name']
+ fields: ['id', 'code']
}
}, {
relation: 'company',
diff --git a/modules/entry/back/methods/entry/addFromBuy.js b/modules/entry/back/methods/entry/addFromBuy.js
index e5cc427a8..c75c1935a 100644
--- a/modules/entry/back/methods/entry/addFromBuy.js
+++ b/modules/entry/back/methods/entry/addFromBuy.js
@@ -52,8 +52,8 @@ module.exports = Self => {
else {
const userConfig = await models.UserConfig.findById(userId, {fields: ['warehouseFk']}, myOptions);
await Self.rawSql(
- 'CALL vn.buyUltimate(?,?)',
- [userConfig.warehouseFk, null],
+ 'CALL buy_getUltimate(?, ?, ?)',
+ [args.item, userConfig.warehouseFk, null],
myOptions
);
let buyUltimate = await Self.rawSql(
diff --git a/modules/entry/back/methods/entry/buyLabel.js b/modules/entry/back/methods/entry/buyLabel.js
index d9b0ebf1d..919f7c4d7 100644
--- a/modules/entry/back/methods/entry/buyLabel.js
+++ b/modules/entry/back/methods/entry/buyLabel.js
@@ -1,6 +1,6 @@
module.exports = Self => {
Self.remoteMethodCtx('buyLabel', {
- description: 'Returns the entry buys labels',
+ description: 'Returns the entry buy labels',
accessType: 'READ',
accepts: [
{
diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js
index 5963e9c72..776544bc6 100644
--- a/modules/entry/back/methods/entry/filter.js
+++ b/modules/entry/back/methods/entry/filter.js
@@ -95,10 +95,25 @@ module.exports = Self => {
type: 'date',
description: `The to date filter`
},
+ {
+ arg: 'fromShipped',
+ type: 'date',
+ description: `The from shipped date filter`
+ },
+ {
+ arg: 'toShipped',
+ type: 'date',
+ description: `The to shipped date filter`
+ },
{
arg: 'days',
type: 'number',
description: `N days interval`
+ },
+ {
+ arg: 'invoiceAmount',
+ type: 'number',
+ description: `The invoice amount`
}
],
returns: {
@@ -133,8 +148,12 @@ module.exports = Self => {
return {'e.created': {gte: value}};
case 'from':
return {'t.landed': {gte: value}};
+ case 'fromShipped':
+ return {'t.shipped': {gte: value}};
case 'to':
return {'t.landed': {lte: value}};
+ case 'toShipped':
+ return {'t.shipped': {lte: value}};
case 'id':
case 'isBooked':
case 'isConfirmed':
@@ -178,6 +197,7 @@ module.exports = Self => {
e.companyFk,
e.gestDocFk,
e.invoiceInFk,
+ e.invoiceAmount,
t.landed,
s.name supplierName,
s.nickname supplierAlias,
diff --git a/modules/entry/back/methods/entry/getBuys.js b/modules/entry/back/methods/entry/getBuys.js
index b6809c8c5..245dada09 100644
--- a/modules/entry/back/methods/entry/getBuys.js
+++ b/modules/entry/back/methods/entry/getBuys.js
@@ -1,5 +1,4 @@
const UserError = require('vn-loopback/util/user-error');
-
const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
module.exports = Self => {
@@ -102,7 +101,8 @@ module.exports = Self => {
'groupingMode',
'inkFk',
'originFk',
- 'producerFk'
+ 'producerFk',
+ 'comment'
],
include: [
{
diff --git a/modules/entry/back/methods/entry/getBuysCsv.js b/modules/entry/back/methods/entry/getBuysCsv.js
new file mode 100644
index 000000000..4bd246fa0
--- /dev/null
+++ b/modules/entry/back/methods/entry/getBuysCsv.js
@@ -0,0 +1,44 @@
+const {toCSV} = require('vn-loopback/util/csv');
+const {flatten} = require('vn-loopback/util/flatten');
+const UserError = require('vn-loopback/util/user-error');
+
+module.exports = Self => {
+ Self.remoteMethodCtx('getBuysCsv', {
+ description: 'Returns buys for one entry in CSV file format',
+ accessType: 'READ',
+ accepts: [{
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'The entry id',
+ http: {source: 'path'}
+ }
+ ],
+ returns: [
+ {
+ arg: 'body',
+ type: 'file',
+ root: true
+ }, {
+ arg: 'Content-Type',
+ type: 'String',
+ http: {target: 'header'}
+ }, {
+ arg: 'Content-Disposition',
+ type: 'String',
+ http: {target: 'header'}
+ }
+ ],
+ http: {
+ path: `/:id/getBuysCsv`,
+ verb: 'GET'
+ }
+ });
+
+ Self.getBuysCsv = async(ctx, id, options) => {
+ const data = await Self.getBuys(ctx, id, null, options);
+ if (!data.length) throw new UserError('The entry has no lines or does not exist');
+ const dataFlatted = flatten(data);
+ return [toCSV(dataFlatted), 'text/csv', `inline; filename="buys-${id}.csv"`];
+ };
+};
diff --git a/modules/entry/back/methods/entry/importBuys.js b/modules/entry/back/methods/entry/importBuys.js
index 812775a1b..e3fd653bb 100644
--- a/modules/entry/back/methods/entry/importBuys.js
+++ b/modules/entry/back/methods/entry/importBuys.js
@@ -73,7 +73,8 @@ module.exports = Self => {
}, myOptions);
const travel = entry.travel();
- await Self.rawSql('CALL buyUltimate(?, ?)', [
+ await Self.rawSql('CALL buy_getUltimate(?, ?, ?)', [
+ null,
travel.warehouseInFk,
travel.landed
], myOptions);
diff --git a/modules/entry/back/methods/entry/lastItemBuys.js b/modules/entry/back/methods/entry/lastItemBuys.js
index 63e6d38f2..012b99d17 100644
--- a/modules/entry/back/methods/entry/lastItemBuys.js
+++ b/modules/entry/back/methods/entry/lastItemBuys.js
@@ -50,7 +50,8 @@ module.exports = Self => {
const stmts = [];
let stmt;
- stmt = new ParameterizedSQL(`CALL buyUltimate(?, ?)`, [
+ stmt = new ParameterizedSQL(`CALL buy_getUltimate(?, ?, ?)`, [
+ null,
travel.warehouseInFk,
travel.landed
]);
diff --git a/modules/entry/back/methods/entry/print.js b/modules/entry/back/methods/entry/print.js
new file mode 100644
index 000000000..c155c3d8b
--- /dev/null
+++ b/modules/entry/back/methods/entry/print.js
@@ -0,0 +1,58 @@
+const UserError = require('vn-loopback/util/user-error');
+module.exports = Self => {
+ Self.remoteMethodCtx('print', {
+ description: 'Print stickers of all entries',
+ accessType: 'READ',
+ accepts: [
+ {
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'The entry id',
+ http: {source: 'path'}
+ }
+ ],
+ returns: [
+ {
+ arg: 'body',
+ type: 'file',
+ root: true
+ }, {
+ arg: 'Content-Type',
+ type: 'String',
+ http: {target: 'header'}
+ }, {
+ arg: 'Content-Disposition',
+ type: 'String',
+ http: {target: 'header'}
+ }
+ ],
+ http: {
+ path: '/:id/print',
+ verb: 'GET'
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
+ });
+
+ Self.print = async function(ctx, id, options) {
+ const models = Self.app.models;
+ const myOptions = {};
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ // Importación dinámica porque no admite commonjs
+ const PDFMerger = ((await import('pdf-merger-js')).default);
+ const merger = new PDFMerger();
+ const buys = await models.Buy.find({where: {entryFk: id}}, myOptions);
+
+ for (const buy of buys) {
+ if (buy.stickers < 1) continue;
+ ctx.args.id = buy.id;
+ const pdfBuffer = await models.Entry.buyLabel(ctx, myOptions);
+ await merger.add(new Uint8Array(pdfBuffer[0]));
+ }
+
+ if (!merger._doc) throw new UserError('The entry not have stickers');
+ return [await merger.saveAsBuffer(), 'application/pdf', `filename="entry-${id}.pdf"`];
+ };
+};
diff --git a/modules/entry/back/models/entry.js b/modules/entry/back/models/entry.js
index 6e27e1ece..8ca79f531 100644
--- a/modules/entry/back/models/entry.js
+++ b/modules/entry/back/models/entry.js
@@ -3,6 +3,7 @@ module.exports = Self => {
require('../methods/entry/filter')(Self);
require('../methods/entry/getEntry')(Self);
require('../methods/entry/getBuys')(Self);
+ require('../methods/entry/getBuysCsv')(Self);
require('../methods/entry/importBuys')(Self);
require('../methods/entry/importBuysPreview')(Self);
require('../methods/entry/lastItemBuys')(Self);
@@ -10,6 +11,7 @@ module.exports = Self => {
require('../methods/entry/addFromPackaging')(Self);
require('../methods/entry/addFromBuy')(Self);
require('../methods/entry/buyLabel')(Self);
+ require('../methods/entry/print')(Self);
Self.observe('before save', async function(ctx, options) {
if (ctx.isNewInstance) return;
diff --git a/modules/entry/back/models/entry.json b/modules/entry/back/models/entry.json
index 833edf14d..383585fce 100644
--- a/modules/entry/back/models/entry.json
+++ b/modules/entry/back/models/entry.json
@@ -74,6 +74,9 @@
},
"observationEditorFk": {
"type": "number"
+ },
+ "invoiceAmount": {
+ "type": "number"
}
},
"relations": {
@@ -108,4 +111,4 @@
"foreignKey": "typeFk"
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/invoiceIn/back/methods/invoice-in/filter.js b/modules/invoiceIn/back/methods/invoice-in/filter.js
index 0d3b5f14a..936f7bb6c 100644
--- a/modules/invoiceIn/back/methods/invoice-in/filter.js
+++ b/modules/invoiceIn/back/methods/invoice-in/filter.js
@@ -82,7 +82,15 @@ module.exports = Self => {
{
arg: 'correctedFk',
type: 'number',
- description: 'The corrected invoice',
+ description: 'The rectified invoice',
+ },
+ {
+ arg: 'correctingFk',
+ type: 'Boolean',
+ },
+ {
+ arg: 'supplierActivityFk',
+ type: 'string',
}
],
returns: {
@@ -111,6 +119,8 @@ module.exports = Self => {
}
let correctings;
+
+ let correcteds;
if (args.correctedFk) {
correctings = await models.InvoiceInCorrection.find({
fields: ['correctingFk'],
@@ -118,6 +128,9 @@ module.exports = Self => {
});
}
+ if (args.correctingFk || args.correctingFk === false)
+ correcteds = await models.InvoiceInCorrection.find();
+
const where = buildFilter(ctx.args, (param, value) => {
switch (param) {
case 'search':
@@ -125,9 +138,9 @@ module.exports = Self => {
? {'ii.id': value}
: {'s.name': {like: `%${value}%`}};
case 'from':
- return {'ii.created': {gte: value}};
+ return {'ii.issued': {gte: value}};
case 'to':
- return {'ii.created': {lte: value}};
+ return {'ii.issued': {lte: value}};
case 'fi':
return {'s.nif': value};
case 'account':
@@ -141,8 +154,15 @@ module.exports = Self => {
return {[`ii.${param}`]: value};
case 'awbCode':
return {'sub.code': value};
+ case 'correctingFk':
+ if (!correcteds.length && !args.correctingFk) return;
+ return args.correctingFk
+ ? {'ii.id': {inq: correcteds.map(x => x.correctingFk)}}
+ : {'ii.id': {nin: correcteds.map(x => x.correctingFk)}};
case 'correctedFk':
return {'ii.id': {inq: correctings.map(x => x.correctingFk)}};
+ case 'supplierActivityFk':
+ return {'s.supplierActivityFk': value};
}
});
@@ -153,7 +173,6 @@ module.exports = Self => {
const stmt = new ParameterizedSQL(
`SELECT
ii.id,
- ii.serialNumber,
ii.serial,
ii.issued,
ii.isBooked,
diff --git a/modules/invoiceIn/back/methods/invoice-in/getSerial.js b/modules/invoiceIn/back/methods/invoice-in/getSerial.js
index dcc1fbc3c..29c7cae2f 100644
--- a/modules/invoiceIn/back/methods/invoice-in/getSerial.js
+++ b/modules/invoiceIn/back/methods/invoice-in/getSerial.js
@@ -46,7 +46,7 @@ module.exports = Self => {
}
});
- filter = mergeFilters(args.filter, {where});
+ const filter = mergeFilters(args.filter, {where});
const stmt = new ParameterizedSQL(
`SELECT i.serial, SUM(IF(i.isBooked, 0,1)) pending, COUNT(*) total
diff --git a/modules/invoiceIn/back/methods/invoice-in/getTotals.js b/modules/invoiceIn/back/methods/invoice-in/getTotals.js
index 7bef9f7e9..c4e73abc2 100644
--- a/modules/invoiceIn/back/methods/invoice-in/getTotals.js
+++ b/modules/invoiceIn/back/methods/invoice-in/getTotals.js
@@ -27,10 +27,12 @@ module.exports = Self => {
const [result] = await Self.rawSql(`
SELECT iit.*,
- SUM(iidd.amount) totalDueDay
+ SUM(iidd.amount) totalDueDay,
+ SUM(iidd.foreignValue) totalDueDayForeignValue
FROM vn.invoiceIn ii
LEFT JOIN (
SELECT SUM(iit.taxableBase) totalTaxableBase,
+ SUM(iit.foreignValue) totalTaxableBaseForeignValue,
CAST(
SUM(IFNULL(iit.taxableBase * (1 + (ti.PorcentajeIva / 100)), iit.taxableBase))
AS DECIMAL(10, 2)
diff --git a/modules/invoiceIn/back/methods/invoice-in/specs/filter.spec.js b/modules/invoiceIn/back/methods/invoice-in/specs/filter.spec.js
index ff2164783..48310b32a 100644
--- a/modules/invoiceIn/back/methods/invoice-in/specs/filter.spec.js
+++ b/modules/invoiceIn/back/methods/invoice-in/specs/filter.spec.js
@@ -47,29 +47,6 @@ describe('InvoiceIn filter()', () => {
}
});
- it('should return the invoice in matching the serial number', async() => {
- const tx = await models.InvoiceIn.beginTransaction({});
- const options = {transaction: tx};
-
- try {
- const ctx = {
- args: {
- serialNumber: '1002',
- }
- };
-
- const result = await models.InvoiceIn.filter(ctx, {}, options);
-
- expect(result.length).toEqual(1);
- expect(result[0].serialNumber).toEqual(1002);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
- });
-
it('should return the invoice in matching the account', async() => {
const tx = await models.InvoiceIn.beginTransaction({});
const options = {transaction: tx};
@@ -158,7 +135,7 @@ describe('InvoiceIn filter()', () => {
const result = await models.InvoiceIn.filter(ctx, {}, options);
- expect(result.length).toEqual(5);
+ expect(result.length).toEqual(6);
await tx.rollback();
} catch (e) {
diff --git a/modules/invoiceIn/front/basic-data/index.html b/modules/invoiceIn/front/basic-data/index.html
deleted file mode 100644
index fbb9b05a2..000000000
--- a/modules/invoiceIn/front/basic-data/index.html
+++ /dev/null
@@ -1,315 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Save
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Create
-
-
diff --git a/modules/invoiceIn/front/basic-data/index.js b/modules/invoiceIn/front/basic-data/index.js
deleted file mode 100644
index 246f1b16f..000000000
--- a/modules/invoiceIn/front/basic-data/index.js
+++ /dev/null
@@ -1,187 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import UserError from 'core/lib/user-error';
-
-class Controller extends Section {
- constructor($element, $, vnFile) {
- super($element, $, vnFile);
- this.dms = {
- files: [],
- hasFile: false,
- hasFileAttached: false
- };
- this.vnFile = vnFile;
- this.getAllowedContentTypes();
- this._editDownloadDisabled = false;
- }
-
- get contentTypesInfo() {
- return this.$t('ContentTypesInfo', {
- allowedContentTypes: this.allowedContentTypes
- });
- }
-
- get editDownloadDisabled() {
- return this._editDownloadDisabled;
- }
-
- async checkFileExists(dmsId) {
- if (!dmsId) return;
- let filter = {
- fields: ['id']
- };
- await this.$http.get(`Dms/${dmsId}`, {filter})
- .then(() => this._editDownloadDisabled = false)
- .catch(() => this._editDownloadDisabled = true);
- }
-
- async getFile(dmsId) {
- const path = `Dms/${dmsId}`;
- await this.$http.get(path).then(res => {
- const dms = res.data && res.data;
- this.dms = {
- dmsId: dms.id,
- reference: dms.reference,
- warehouseId: dms.warehouseFk,
- companyId: dms.companyFk,
- dmsTypeId: dms.dmsTypeFk,
- description: dms.description,
- hasFile: dms.hasFile,
- hasFileAttached: false,
- files: []
- };
- });
- }
-
- getAllowedContentTypes() {
- this.$http.get('DmsContainers/allowedContentTypes').then(res => {
- if (res.data.length > 0) {
- const contentTypes = res.data.join(', ');
- this.allowedContentTypes = contentTypes;
- }
- });
- }
-
- openEditDialog(dmsId) {
- this.getFile(dmsId).then(() => this.$.dmsEditDialog.show());
- }
-
- openCreateDialog() {
- const params = {filter: {
- where: {code: 'invoiceIn'}
- }};
- this.$http.get('DmsTypes/findOne', {params}).then(res => {
- this.dms = {
- reference: this.invoiceIn.supplierRef,
- warehouseId: this.vnConfig.warehouseFk,
- companyId: this.vnConfig.companyFk,
- dmsTypeId: res.data.id,
- description: this.invoiceIn.supplier.name,
- hasFile: true,
- hasFileAttached: true,
- files: null
- };
- this.$.dmsCreateDialog.show();
- });
- }
-
- downloadFile(dmsId) {
- this.vnFile.download(`api/dms/${dmsId}/downloadFile`);
- }
-
- onFileChange(files) {
- let hasFileAttached = false;
- if (files.length > 0)
- hasFileAttached = true;
-
- this.$.$applyAsync(() => {
- this.dms.hasFileAttached = hasFileAttached;
- });
- }
-
- onEdit() {
- if (!this.dms.companyId)
- throw new UserError(`The company can't be empty`);
- if (!this.dms.warehouseId)
- throw new UserError(`The warehouse can't be empty`);
- if (!this.dms.dmsTypeId)
- throw new UserError(`The DMS Type can't be empty`);
- if (!this.dms.description)
- throw new UserError(`The description can't be empty`);
-
- const query = `dms/${this.dms.dmsId}/updateFile`;
- const options = {
- method: 'POST',
- url: query,
- params: this.dms,
- headers: {
- 'Content-Type': undefined
- },
- transformRequest: files => {
- const formData = new FormData();
-
- for (let i = 0; i < files.length; i++)
- formData.append(files[i].name, files[i]);
-
- return formData;
- },
- data: this.dms.files
- };
-
- this.$http(options).then(res => {
- if (res) {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- if (res.data.length > 0) this.invoiceIn.dmsFk = res.data[0].id;
- }
- });
- }
-
- onCreate() {
- if (!this.dms.companyId)
- throw new UserError(`The company can't be empty`);
- if (!this.dms.warehouseId)
- throw new UserError(`The warehouse can't be empty`);
- if (!this.dms.dmsTypeId)
- throw new UserError(`The DMS Type can't be empty`);
- if (!this.dms.description)
- throw new UserError(`The description can't be empty`);
- if (!this.dms.files)
- throw new UserError(`The files can't be empty`);
-
- const query = `Dms/uploadFile`;
- const options = {
- method: 'POST',
- url: query,
- params: this.dms,
- headers: {
- 'Content-Type': undefined
- },
- transformRequest: files => {
- const formData = new FormData();
-
- for (let i = 0; i < files.length; i++)
- formData.append(files[i].name, files[i]);
-
- return formData;
- },
- data: this.dms.files
- };
-
- this.$http(options).then(res => {
- if (res) {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- if (res.data.length > 0) this.invoiceIn.dmsFk = res.data[0].id;
- }
- });
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnFile'];
-
-ngModule.vnComponent('vnInvoiceInBasicData', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- invoiceIn: '<'
- }
-});
diff --git a/modules/invoiceIn/front/basic-data/index.spec.js b/modules/invoiceIn/front/basic-data/index.spec.js
deleted file mode 100644
index 98710ac35..000000000
--- a/modules/invoiceIn/front/basic-data/index.spec.js
+++ /dev/null
@@ -1,102 +0,0 @@
-import './index.js';
-import watcher from 'core/mocks/watcher';
-
-describe('InvoiceIn', () => {
- describe('Component vnInvoiceInBasicData', () => {
- let controller;
- let $scope;
- let $httpBackend;
- let $httpParamSerializer;
-
- beforeEach(ngModule('invoiceIn'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => {
- $scope = $rootScope.$new();
- $httpBackend = _$httpBackend_;
- $httpParamSerializer = _$httpParamSerializer_;
- const $element = angular.element(' ');
- controller = $componentController('vnInvoiceInBasicData', {$element, $scope});
- controller.$.watcher = watcher;
- $httpBackend.expect('GET', `DmsContainers/allowedContentTypes`).respond({});
- }));
-
- describe('onFileChange()', () => {
- it('should set dms hasFileAttached property to true if has any files', () => {
- const files = [{id: 1, name: 'MyFile'}];
- controller.onFileChange(files);
-
- $scope.$apply();
-
- expect(controller.dms.hasFileAttached).toBeTruthy();
- });
- });
-
- describe('checkFileExists()', () => {
- it(`should return false if a file exists`, () => {
- const fileIdExists = 1;
- controller.checkFileExists(fileIdExists);
-
- expect(controller.editDownloadDisabled).toBe(false);
- });
- });
-
- describe('onEdit()', () => {
- it(`should perform a POST query to edit the dms properties`, () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- const dms = {
- dmsId: 1,
- reference: 'Ref1',
- warehouseId: 1,
- companyId: 442,
- dmsTypeId: 20,
- description: 'This is a description',
- files: []
- };
-
- controller.dms = dms;
- const serializedParams = $httpParamSerializer(controller.dms);
- const query = `dms/${controller.dms.dmsId}/updateFile?${serializedParams}`;
-
- $httpBackend.expectPOST(query).respond({});
- controller.onEdit();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('onCreate()', () => {
- it(`should perform a POST query to create a new dms`, () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- const dms = {
- reference: 'Ref1',
- warehouseId: 1,
- companyId: 442,
- dmsTypeId: 20,
- description: 'This is a description',
- files: [{
- lastModified: 1668673957761,
- lastModifiedDate: Date.vnNew(),
- name: 'file-example.png',
- size: 19653,
- type: 'image/png',
- webkitRelativePath: ''
- }]
- };
-
- controller.dms = dms;
- const serializedParams = $httpParamSerializer(controller.dms);
- const query = `Dms/uploadFile?${serializedParams}`;
-
- $httpBackend.expectPOST(query).respond({});
- controller.onCreate();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
- });
-});
-
diff --git a/modules/invoiceIn/front/basic-data/locale/en.yml b/modules/invoiceIn/front/basic-data/locale/en.yml
deleted file mode 100644
index 19f4dc8c2..000000000
--- a/modules/invoiceIn/front/basic-data/locale/en.yml
+++ /dev/null
@@ -1 +0,0 @@
-ContentTypesInfo: Allowed file types {{allowedContentTypes}}
diff --git a/modules/invoiceIn/front/basic-data/locale/es.yml b/modules/invoiceIn/front/basic-data/locale/es.yml
deleted file mode 100644
index e2e494fa5..000000000
--- a/modules/invoiceIn/front/basic-data/locale/es.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-Upload file: Subir fichero
-Edit file: Editar fichero
-Upload: Subir
-Document: Documento
-ContentTypesInfo: "Tipos de archivo permitidos: {{allowedContentTypes}}"
-Generate identifier for original file: Generar identificador para archivo original
-File management: Gestión documental
-Hard copy: Copia
-This file will be deleted: Este fichero va a ser borrado
-Are you sure?: Estas seguro?
-File deleted: Fichero eliminado
-Remove file: Eliminar fichero
-Download file: Descargar fichero
-Edit document: Editar documento
-Create document: Crear documento
diff --git a/modules/invoiceIn/front/create/index.html b/modules/invoiceIn/front/create/index.html
deleted file mode 100644
index 16ecf26cf..000000000
--- a/modules/invoiceIn/front/create/index.html
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/invoiceIn/front/create/index.js b/modules/invoiceIn/front/create/index.js
deleted file mode 100644
index 885d55359..000000000
--- a/modules/invoiceIn/front/create/index.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- $onInit() {
- this.invoiceIn = {};
- if (this.$params && this.$params.supplierFk)
- this.invoiceIn.supplierFk = this.$params.supplierFk;
- this.invoiceIn.issued = Date.vnNew();
- }
-
- get companyFk() {
- return this.invoiceIn.companyFk || this.vnConfig.companyFk;
- }
-
- set companyFk(value) {
- this.invoiceIn.companyFk = value;
- }
-
- onSubmit() {
- this.$.watcher.submit().then(
- res => this.$state.go('invoiceIn.card.basicData', {id: res.data.id})
- );
- }
-}
-
-ngModule.vnComponent('vnInvoiceInCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceIn/front/create/locale/es.yml b/modules/invoiceIn/front/create/locale/es.yml
deleted file mode 100644
index 35bfe3ca4..000000000
--- a/modules/invoiceIn/front/create/locale/es.yml
+++ /dev/null
@@ -1 +0,0 @@
-a:a
\ No newline at end of file
diff --git a/modules/invoiceIn/front/dueDay/index.html b/modules/invoiceIn/front/dueDay/index.html
deleted file mode 100644
index abc91312d..000000000
--- a/modules/invoiceIn/front/dueDay/index.html
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/invoiceIn/front/dueDay/index.js b/modules/invoiceIn/front/dueDay/index.js
deleted file mode 100644
index ee9b13e5c..000000000
--- a/modules/invoiceIn/front/dueDay/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- add() {
- this.$.model.insert({
- dueDated: Date.vnNew(),
- bankFk: this.vnConfig.local.bankFk
- });
- }
-
- onSubmit() {
- this.$.watcher.check();
- this.$.model.save().then(() => {
- this.$.watcher.notifySaved();
- this.$.watcher.updateOriginalData();
- this.card.reload();
- });
- }
-
- bankSearchFunc($search) {
- return /^\d+$/.test($search)
- ? {id: $search}
- : {bank: {like: '%' + $search + '%'}};
- }
-}
-
-ngModule.vnComponent('vnInvoiceInDueDay', {
- template: require('./index.html'),
- controller: Controller,
- require: {
- card: '^vnInvoiceInCard'
- },
- bindings: {
- invoiceIn: '<'
- }
-});
diff --git a/modules/invoiceIn/front/dueDay/index.spec.js b/modules/invoiceIn/front/dueDay/index.spec.js
deleted file mode 100644
index 7dddd3bb0..000000000
--- a/modules/invoiceIn/front/dueDay/index.spec.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import './index.js';
-import watcher from 'core/mocks/watcher';
-import crudModel from 'core/mocks/crud-model';
-
-describe('InvoiceIn', () => {
- describe('Component due day', () => {
- let controller;
- let $scope;
- let vnApp;
-
- beforeEach(ngModule('invoiceIn'));
-
- beforeEach(inject(($componentController, $rootScope, _vnApp_) => {
- vnApp = _vnApp_;
- jest.spyOn(vnApp, 'showError');
- $scope = $rootScope.$new();
- $scope.model = crudModel;
- $scope.watcher = watcher;
-
- const $element = angular.element(' ');
- controller = $componentController('vnInvoiceInDueDay', {$element, $scope});
- controller.invoiceIn = {id: 1};
- }));
-
- describe('onSubmit()', () => {
- it('should make HTTP POST request to save due day values', () => {
- controller.card = {reload: () => {}};
- jest.spyOn($scope.watcher, 'check');
- jest.spyOn($scope.watcher, 'notifySaved');
- jest.spyOn($scope.watcher, 'updateOriginalData');
- jest.spyOn(controller.card, 'reload');
- jest.spyOn($scope.model, 'save');
-
- controller.onSubmit();
-
- expect($scope.model.save).toHaveBeenCalledWith();
- expect($scope.watcher.updateOriginalData).toHaveBeenCalledWith();
- expect($scope.watcher.check).toHaveBeenCalledWith();
- expect($scope.watcher.notifySaved).toHaveBeenCalledWith();
- expect(controller.card.reload).toHaveBeenCalledWith();
- });
- });
- });
-});
diff --git a/modules/invoiceIn/front/index.js b/modules/invoiceIn/front/index.js
index e257cfee3..8155e7089 100644
--- a/modules/invoiceIn/front/index.js
+++ b/modules/invoiceIn/front/index.js
@@ -1,17 +1,7 @@
export * from './module';
import './main';
-import './index/';
-import './search-panel';
import './card';
import './descriptor';
import './descriptor-popover';
import './summary';
-import './basic-data';
-import './tax';
-import './dueDay';
-import './intrastat';
-import './create';
-import './log';
-import './serial';
-import './serial-search-panel';
diff --git a/modules/invoiceIn/front/index/index.html b/modules/invoiceIn/front/index/index.html
deleted file mode 100644
index 008d615b1..000000000
--- a/modules/invoiceIn/front/index/index.html
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
- ID
- Supplier
- Supplier ref.
- Serial number
- Serial
- File
- Issued
- Is booked
- AWB
- Amount
-
-
-
-
-
- {{::invoiceIn.id}}
-
-
- {{::invoiceIn.supplierName}}
-
-
- {{::invoiceIn.supplierRef | dashIfEmpty}}
- {{::invoiceIn.serialNumber}}
- {{::invoiceIn.serial}}
-
-
- {{::invoiceIn.file}}
-
-
- {{::invoiceIn.issued | date:'dd/MM/yyyy' | dashIfEmpty}}
-
-
-
-
- {{::invoiceIn.awbCode}}
- {{::invoiceIn.amount | currency:'EUR'}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/invoiceIn/front/index/index.js b/modules/invoiceIn/front/index/index.js
deleted file mode 100644
index 254e6d3bf..000000000
--- a/modules/invoiceIn/front/index/index.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor($element, $, vnFile) {
- super($element, $, vnFile);
- this.vnFile = vnFile;
- }
-
- exprBuilder(param, value) {
- switch (param) {
- case 'issued':
- return {'ii.issued': {
- between: this.dateRange(value)}
- };
- case 'id':
- case 'supplierFk':
- case 'supplierRef':
- case 'serialNumber':
- case 'serial':
- case 'created':
- case 'isBooked':
- return {[`ii.${param}`]: value};
- case 'account':
- case 'fi':
- return {[`s.${param}`]: value};
- case 'awbCode':
- return {'awb.code': value};
- default:
- return {[param]: value};
- }
- }
-
- dateRange(value) {
- const minHour = new Date(value);
- minHour.setHours(0, 0, 0, 0);
- const maxHour = new Date(value);
- maxHour.setHours(23, 59, 59, 59);
-
- return [minHour, maxHour];
- }
-
- preview(invoiceIn) {
- this.selectedInvoiceIn = invoiceIn;
- this.$.summary.show();
- }
-
- downloadFile(dmsId) {
- this.vnFile.download(`api/dms/${dmsId}/downloadFile`);
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnFile'];
-
-ngModule.vnComponent('vnInvoiceInIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceIn/front/index/locale/es.yml b/modules/invoiceIn/front/index/locale/es.yml
deleted file mode 100644
index e1b354316..000000000
--- a/modules/invoiceIn/front/index/locale/es.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-Created: Fecha creación
-Issued: Fecha emisión
-Supplier ref.: Ref. proveedor
-Serial number: Num. serie
-Serial: Serie
-Is booked: Conciliada
\ No newline at end of file
diff --git a/modules/invoiceIn/front/intrastat/index.html b/modules/invoiceIn/front/intrastat/index.html
deleted file mode 100644
index fc0139303..000000000
--- a/modules/invoiceIn/front/intrastat/index.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/invoiceIn/front/intrastat/index.js b/modules/invoiceIn/front/intrastat/index.js
deleted file mode 100644
index 659929513..000000000
--- a/modules/invoiceIn/front/intrastat/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- set invoceInIntrastat(value) {
- this._invoceInIntrastat = value;
-
- if (value) this.calculateTotals();
- }
-
- get invoceInIntrastat() {
- return this._invoceInIntrastat;
- }
-
- calculateTotals() {
- this.amountTotal = 0.0;
- this.netTotal = 0.0;
- this.stemsTotal = 0.0;
- if (!this.invoceInIntrastat) return;
-
- this.invoceInIntrastat.forEach(intrastat => {
- this.amountTotal += intrastat.amount;
- this.netTotal += intrastat.net;
- this.stemsTotal += intrastat.stems;
- });
- }
-
- add() {
- this.$.model.insert({});
- }
-
- deleteIntrastat($index) {
- this.$.model.remove($index);
- this.$.model.save().then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.calculateTotals();
- });
- }
-
- onSubmit() {
- this.$.watcher.check();
- this.$.model.save().then(() => {
- this.$.watcher.notifySaved();
- this.$.watcher.updateOriginalData();
- this.calculateTotals();
- this.card.reload();
- });
- }
-}
-
-ngModule.vnComponent('vnInvoiceInIntrastat', {
- template: require('./index.html'),
- controller: Controller,
- require: {
- card: '^vnInvoiceInCard'
- },
- bindings: {
- invoiceIn: '<'
- }
-});
diff --git a/modules/invoiceIn/front/intrastat/index.spec.js b/modules/invoiceIn/front/intrastat/index.spec.js
deleted file mode 100644
index d7d50ac5b..000000000
--- a/modules/invoiceIn/front/intrastat/index.spec.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import './index.js';
-import watcher from 'core/mocks/watcher';
-import crudModel from 'core/mocks/crud-model';
-
-describe('InvoiceIn', () => {
- describe('Component intrastat', () => {
- let controller;
- let $scope;
- let vnApp;
-
- beforeEach(ngModule('invoiceIn'));
-
- beforeEach(inject(($componentController, $rootScope, _vnApp_) => {
- vnApp = _vnApp_;
- jest.spyOn(vnApp, 'showError');
- $scope = $rootScope.$new();
- $scope.model = crudModel;
- $scope.watcher = watcher;
-
- const $element = angular.element(' ');
- controller = $componentController('vnInvoiceInIntrastat', {$element, $scope});
- controller.invoiceIn = {id: 1};
- }));
-
- describe('calculateTotals()', () => {
- it('should set amountTotal, netTotal and stemsTotal to 0 if salesClaimed has no data', () => {
- controller.invoceInIntrastat = [];
- controller.calculateTotals();
-
- expect(controller.amountTotal).toEqual(0);
- expect(controller.netTotal).toEqual(0);
- expect(controller.stemsTotal).toEqual(0);
- });
-
- it('should set amountTotal, netTotal and stemsTotal', () => {
- controller.invoceInIntrastat = [
- {
- id: 1,
- invoiceInFk: 1,
- net: 30.5,
- intrastatFk: 5080000,
- amount: 10,
- stems: 162,
- countryFk: 5,
- statisticalValue: 0
- },
- {
- id: 2,
- invoiceInFk: 1,
- net: 10,
- intrastatFk: 6021010,
- amount: 20,
- stems: 205,
- countryFk: 5,
- statisticalValue: 0
- }
- ];
- controller.calculateTotals();
-
- expect(controller.amountTotal).toEqual(30);
- expect(controller.netTotal).toEqual(40.5);
- expect(controller.stemsTotal).toEqual(367);
- });
- });
-
- describe('onSubmit()', () => {
- it('should make HTTP POST request to save intrastat values', () => {
- controller.card = {reload: () => {}};
- jest.spyOn($scope.watcher, 'check');
- jest.spyOn($scope.watcher, 'notifySaved');
- jest.spyOn($scope.watcher, 'updateOriginalData');
- jest.spyOn(controller.card, 'reload');
- jest.spyOn($scope.model, 'save');
-
- controller.onSubmit();
-
- expect($scope.model.save).toHaveBeenCalledWith();
- expect($scope.watcher.updateOriginalData).toHaveBeenCalledWith();
- expect($scope.watcher.check).toHaveBeenCalledWith();
- expect($scope.watcher.notifySaved).toHaveBeenCalledWith();
- expect(controller.card.reload).toHaveBeenCalledWith();
- });
- });
- });
-});
diff --git a/modules/invoiceIn/front/log/index.html b/modules/invoiceIn/front/log/index.html
deleted file mode 100644
index 2cfc9dfb1..000000000
--- a/modules/invoiceIn/front/log/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/invoiceIn/front/log/index.js b/modules/invoiceIn/front/log/index.js
deleted file mode 100644
index 7a018de0f..000000000
--- a/modules/invoiceIn/front/log/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-ngModule.vnComponent('vnInvoiceInLog', {
- template: require('./index.html'),
- controller: Section,
-});
diff --git a/modules/invoiceIn/front/main/index.html b/modules/invoiceIn/front/main/index.html
index 2dc87b2ee..e69de29bb 100644
--- a/modules/invoiceIn/front/main/index.html
+++ b/modules/invoiceIn/front/main/index.html
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/invoiceIn/front/main/index.js b/modules/invoiceIn/front/main/index.js
index f7b767458..c22b37924 100644
--- a/modules/invoiceIn/front/main/index.js
+++ b/modules/invoiceIn/front/main/index.js
@@ -1,7 +1,16 @@
import ngModule from '../module';
import ModuleMain from 'salix/components/module-main';
-export default class InvoiceIn extends ModuleMain {}
+export default class InvoiceIn extends ModuleMain {
+ constructor($element, $) {
+ super($element, $);
+ }
+
+ async $onInit() {
+ this.$state.go('home');
+ window.location.href = await this.vnApp.getUrl(`invoice-in/`);
+ }
+}
ngModule.vnComponent('vnInvoiceIn', {
controller: InvoiceIn,
diff --git a/modules/invoiceIn/front/search-panel/index.html b/modules/invoiceIn/front/search-panel/index.html
deleted file mode 100644
index 609fa56d8..000000000
--- a/modules/invoiceIn/front/search-panel/index.html
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
diff --git a/modules/invoiceIn/front/search-panel/index.js b/modules/invoiceIn/front/search-panel/index.js
deleted file mode 100644
index a8e41b7ef..000000000
--- a/modules/invoiceIn/front/search-panel/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-ngModule.vnComponent('vnInvoiceInSearchPanel', {
- template: require('./index.html'),
- controller: SearchPanel
-});
diff --git a/modules/invoiceIn/front/search-panel/locale/es.yml b/modules/invoiceIn/front/search-panel/locale/es.yml
deleted file mode 100644
index 57e2944ea..000000000
--- a/modules/invoiceIn/front/search-panel/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-Supplier fiscal id: CIF proveedor
-Search invoices in by id or supplier fiscal name: Buscar facturas recibidas por id o por nombre fiscal del proveedor
\ No newline at end of file
diff --git a/modules/invoiceIn/front/serial-search-panel/index.html b/modules/invoiceIn/front/serial-search-panel/index.html
deleted file mode 100644
index 0dda54852..000000000
--- a/modules/invoiceIn/front/serial-search-panel/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {{$ctrl.$t('Serial')}}: {{$ctrl.filter.serial}}
-
-
-
diff --git a/modules/invoiceIn/front/serial-search-panel/index.js b/modules/invoiceIn/front/serial-search-panel/index.js
deleted file mode 100644
index b11911ee3..000000000
--- a/modules/invoiceIn/front/serial-search-panel/index.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-import './style.scss';
-
-class Controller extends SearchPanel {
- constructor($element, $) {
- super($element, $);
- this.filter = {};
- const filter = {
- fields: ['daysAgo']
- };
- this.$http.get('InvoiceInConfigs', {filter}).then(res => {
- if (res.data) {
- this.invoiceInConfig = res.data[0];
- this.addFilters();
- }
- });
- }
-
- removeItemFilter(param) {
- this.filter[param] = null;
- this.addFilters();
- }
-
- onKeyPress($event) {
- if ($event.key === 'Enter')
- this.addFilters();
- }
-
- addFilters() {
- if (!this.filter.daysAgo)
- this.filter.daysAgo = this.invoiceInConfig.daysAgo;
-
- return this.model.addFilter({}, this.filter);
- }
-}
-
-ngModule.component('vnInvoiceInSerialSearchPanel', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- model: '<'
- }
-});
diff --git a/modules/invoiceIn/front/serial-search-panel/index.spec.js b/modules/invoiceIn/front/serial-search-panel/index.spec.js
deleted file mode 100644
index b5228e126..000000000
--- a/modules/invoiceIn/front/serial-search-panel/index.spec.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import './index.js';
-
-describe('InvoiceIn', () => {
- describe('Component serial-search-panel', () => {
- let controller;
- let $scope;
-
- beforeEach(ngModule('invoiceIn'));
-
- beforeEach(inject(($componentController, $rootScope) => {
- $scope = $rootScope.$new();
- const $element = angular.element(' ');
- controller = $componentController('vnInvoiceInSerialSearchPanel', {$element, $scope});
- controller.model = {
- addFilter: jest.fn(),
- };
- controller.invoiceInConfig = {
- daysAgo: 45,
- };
- }));
-
- describe('addFilters()', () => {
- it('should add default daysAgo if it is not already set', () => {
- controller.filter = {
- serial: 'R',
- };
- controller.addFilters();
-
- expect(controller.filter.daysAgo).toEqual(controller.invoiceInConfig.daysAgo);
- });
-
- it('should not add default daysAgo if it is already set', () => {
- controller.filter = {
- daysAgo: 1,
- serial: 'R',
- };
- controller.addFilters();
-
- expect(controller.filter.daysAgo).toEqual(1);
- });
- });
- });
-});
diff --git a/modules/invoiceIn/front/serial-search-panel/style.scss b/modules/invoiceIn/front/serial-search-panel/style.scss
deleted file mode 100644
index 4abfcbfa2..000000000
--- a/modules/invoiceIn/front/serial-search-panel/style.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-@import "variables";
-
-vn-invoice-in-serial-search-panel vn-side-menu div {
- & > .input {
- padding-left: $spacing-md;
- padding-right: $spacing-md;
- border-color: $color-spacer;
- border-bottom: $border-thin;
- }
- & > .horizontal {
- grid-auto-flow: column;
- grid-column-gap: $spacing-sm;
- align-items: center;
- }
- & > .chips {
- display: flex;
- flex-wrap: wrap;
- padding: $spacing-md;
- overflow: hidden;
- max-width: 100%;
- border-color: $color-spacer;
- border-top: $border-thin;
- }
-}
diff --git a/modules/invoiceIn/front/serial/index.html b/modules/invoiceIn/front/serial/index.html
deleted file mode 100644
index 1649ec7d7..000000000
--- a/modules/invoiceIn/front/serial/index.html
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- Serial
- Pending
- Total
-
-
-
-
-
- {{::invoiceIn.serial}}
- {{::invoiceIn.pending}}
- {{::invoiceIn.total}}
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceIn/front/serial/index.js b/modules/invoiceIn/front/serial/index.js
deleted file mode 100644
index 193a57492..000000000
--- a/modules/invoiceIn/front/serial/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- }
-
- goToIndex(daysAgo, serial) {
- const issued = Date.vnNew();
- issued.setDate(issued.getDate() - daysAgo);
- this.$state.go('invoiceIn.index',
- {q: `{"serial": "${serial}", "isBooked": false, "from": ${issued.getTime()}}`});
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnInvoiceInSerial', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceIn/front/serial/locale/es.yml b/modules/invoiceIn/front/serial/locale/es.yml
deleted file mode 100644
index 92a49cc82..000000000
--- a/modules/invoiceIn/front/serial/locale/es.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-Serial: Serie
-Pending: Pendientes
-Go to InvoiceIn: Ir al listado de facturas recibidas
diff --git a/modules/invoiceIn/front/tax/index.html b/modules/invoiceIn/front/tax/index.html
deleted file mode 100644
index e13f769ce..000000000
--- a/modules/invoiceIn/front/tax/index.html
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- {{$ctrl.$t('New expense')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Save
-
-
diff --git a/modules/invoiceIn/front/tax/index.js b/modules/invoiceIn/front/tax/index.js
deleted file mode 100644
index d05a77f29..000000000
--- a/modules/invoiceIn/front/tax/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import UserError from 'core/lib/user-error';
-
-class Controller extends Section {
- constructor($element, $, vnWeekDays) {
- super($element, $);
- this.expense = {};
- }
- taxRate(invoiceInTax, taxRateSelection) {
- const taxTypeSage = taxRateSelection && taxRateSelection.rate;
- const taxableBase = invoiceInTax && invoiceInTax.taxableBase;
-
- if (taxTypeSage && taxableBase)
- return (taxTypeSage / 100) * taxableBase;
-
- return 0;
- }
-
- add() {
- this.$.model.insert({
- invoiceIn: this.$params.id
- });
- }
-
- onSubmit() {
- this.$.watcher.check();
- this.$.model.save().then(() => {
- this.$.watcher.notifySaved();
- this.$.watcher.updateOriginalData();
- this.card.reload();
- });
- }
-
- onResponse() {
- try {
- if (!this.expense.code)
- throw new Error(`The code can't be empty`);
- if (!this.expense.description)
- throw new UserError(`The description can't be empty`);
-
- const data = [{
- id: this.expense.code,
- isWithheld: this.expense.isWithheld,
- name: this.expense.description
- }];
-
- this.$http.post(`Expenses`, data) .then(() => {
- this.vnApp.showSuccess(this.$t('Expense saved!'));
- });
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- }
- }
-}
-
-ngModule.vnComponent('vnInvoiceInTax', {
- template: require('./index.html'),
- controller: Controller,
- require: {
- card: '^vnInvoiceInCard'
- },
- bindings: {
- invoiceIn: '<'
- }
-});
diff --git a/modules/invoiceIn/front/tax/index.spec.js b/modules/invoiceIn/front/tax/index.spec.js
deleted file mode 100644
index 52114afe5..000000000
--- a/modules/invoiceIn/front/tax/index.spec.js
+++ /dev/null
@@ -1,113 +0,0 @@
-import './index.js';
-import watcher from 'core/mocks/watcher';
-import crudModel from 'core/mocks/crud-model';
-
-describe('InvoiceIn', () => {
- describe('Component tax', () => {
- let controller;
- let $scope;
- let vnApp;
- let $httpBackend;
-
- beforeEach(ngModule('invoiceIn'));
-
- beforeEach(inject(($componentController, $rootScope, _vnApp_, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- vnApp = _vnApp_;
- jest.spyOn(vnApp, 'showError');
- $scope = $rootScope.$new();
- $scope.model = crudModel;
- $scope.watcher = watcher;
-
- const $element = angular.element(' ');
- controller = $componentController('vnInvoiceInTax', {$element, $scope});
- controller.$.model = crudModel;
- controller.invoiceIn = {id: 1};
- }));
-
- describe('taxRate()', () => {
- it('should set tax rate with the Sage tax type value', () => {
- const taxRateSelection = {
- rate: 21
- };
- const invoiceInTax = {
- taxableBase: 200
- };
-
- const taxRate = controller.taxRate(invoiceInTax, taxRateSelection);
-
- expect(taxRate).toEqual(42);
- });
- });
-
- describe('onSubmit()', () => {
- it('should make HTTP POST request to save tax values', () => {
- controller.card = {reload: () => {}};
- jest.spyOn($scope.watcher, 'check');
- jest.spyOn($scope.watcher, 'notifySaved');
- jest.spyOn($scope.watcher, 'updateOriginalData');
- jest.spyOn(controller.card, 'reload');
- jest.spyOn($scope.model, 'save');
-
- controller.onSubmit();
-
- expect($scope.model.save).toHaveBeenCalledWith();
- expect($scope.watcher.updateOriginalData).toHaveBeenCalledWith();
- expect($scope.watcher.check).toHaveBeenCalledWith();
- expect($scope.watcher.notifySaved).toHaveBeenCalledWith();
- expect(controller.card.reload).toHaveBeenCalledWith();
- });
- });
-
- describe('onResponse()', () => {
- it('should return success message', () => {
- controller.expense = {
- code: 7050000005,
- isWithheld: 0,
- description: 'Test'
- };
-
- const data = [{
- id: controller.expense.code,
- isWithheld: controller.expense.isWithheld,
- name: controller.expense.description
- }];
-
- jest.spyOn(controller.vnApp, 'showSuccess');
- $httpBackend.expect('POST', `Expenses`, data).respond();
-
- controller.onResponse();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Expense saved!');
- });
-
- it('should return an error if code is empty', () => {
- controller.expense = {
- code: null,
- isWithheld: 0,
- description: 'Test'
- };
-
- jest.spyOn(controller.vnApp, 'showError');
- controller.onResponse();
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`The code can't be empty`);
- });
-
- it('should return an error if description is empty', () => {
- controller.expense = {
- code: 7050000005,
- isWithheld: 0,
- description: null
- };
-
- jest.spyOn(controller.vnApp, 'showError');
- controller.onResponse();
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`The description can't be empty`);
- });
- });
- });
-});
-
diff --git a/modules/invoiceIn/front/tax/locale/es.yml b/modules/invoiceIn/front/tax/locale/es.yml
deleted file mode 100644
index 3ff68ea40..000000000
--- a/modules/invoiceIn/front/tax/locale/es.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-Create expense: Crear gasto
-New expense: Nuevo gasto
-It's a withholding: Es una retención
-The fields can't be empty: Los campos no pueden estar vacíos
-The code can't be empty: El código no puede estar vacío
-The description can't be empty: La descripción no puede estar vacía
-Expense saved!: Gasto guardado!
\ No newline at end of file
diff --git a/modules/invoiceOut/back/methods/invoiceOut/clientsToInvoice.js b/modules/invoiceOut/back/methods/invoiceOut/clientsToInvoice.js
index 63b00fe38..5526d214a 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/clientsToInvoice.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/clientsToInvoice.js
@@ -75,7 +75,7 @@ module.exports = Self => {
AND c.isTaxDataChecked
AND c.isActive
AND NOT t.isDeleted
- GROUP BY c.id, IF(c.hasToInvoiceByAddress, a.id, TRUE)
+ GROUP BY IF(c.hasToInvoiceByAddress, a.id, c.id)
HAVING SUM(t.totalWithVat) > 0;`;
const addresses = await Self.rawSql(query, [
diff --git a/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js b/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js
index 530b02353..bf7e7d3cb 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/invoiceClient.js
@@ -28,6 +28,11 @@ module.exports = Self => {
type: 'number',
description: 'The company id to invoice',
required: true
+ }, {
+ arg: 'serialType',
+ type: 'string',
+ description: 'Invoice serial number type (see vn.invoiceOutSerial.type enum)',
+ required: true
}
],
returns: {
@@ -39,17 +44,19 @@ module.exports = Self => {
verb: 'POST'
}
});
-
Self.invoiceClient = async(ctx, options) => {
const args = ctx.args;
const models = Self.app.models;
- options = typeof options == 'object'
- ? Object.assign({}, options) : {};
- options.userId = ctx.req.accessToken.userId;
-
let tx;
- if (!options.transaction)
- tx = options.transaction = await Self.beginTransaction({});
+ const myOptions = {userId: ctx.req.accessToken.userId};
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ if (!myOptions.transaction) {
+ tx = await Self.beginTransaction({});
+ myOptions.transaction = tx;
+ }
const minShipped = Date.vnNew();
minShipped.setFullYear(args.maxShipped.getFullYear() - 1);
@@ -74,10 +81,9 @@ module.exports = Self => {
], options);
}
- const invoiceType = 'G';
const invoiceId = await models.Ticket.makeInvoice(
ctx,
- invoiceType,
+ args.serialType,
args.companyFk,
args.invoiceDate,
null,
diff --git a/modules/invoiceOut/back/methods/invoiceOut/refund.js b/modules/invoiceOut/back/methods/invoiceOut/refund.js
index 1b7ccc1e4..4f43a7a84 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/refund.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/refund.js
@@ -43,7 +43,7 @@ module.exports = Self => {
const tickets = await models.Ticket.find(filter, myOptions);
const ticketsIds = tickets.map(ticket => ticket.id);
- const refundedTickets = await models.Ticket.refund(ctx, ticketsIds, withWarehouse, myOptions);
+ const refundedTickets = await models.Ticket.cloneAll(ctx, ticketsIds, withWarehouse, true, myOptions);
if (tx) await tx.commit();
diff --git a/modules/invoiceOut/back/methods/invoiceOut/refundAndInvoice.js b/modules/invoiceOut/back/methods/invoiceOut/refundAndInvoice.js
new file mode 100644
index 000000000..41a645ff3
--- /dev/null
+++ b/modules/invoiceOut/back/methods/invoiceOut/refundAndInvoice.js
@@ -0,0 +1,95 @@
+module.exports = Self => {
+ Self.remoteMethodCtx('refundAndInvoice', {
+ description: 'Refund an invoice and create a new one',
+ accessType: 'WRITE',
+ accepts: [
+ {
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'Issued invoice id'
+ },
+ {
+ arg: 'withWarehouse',
+ type: 'boolean',
+ required: true
+ },
+ {
+ arg: 'cplusRectificationTypeFk',
+ type: 'number',
+ required: true
+ },
+ {
+ arg: 'siiTypeInvoiceOutFk',
+ type: 'number',
+ required: true
+ },
+ {
+ arg: 'invoiceCorrectionTypeFk',
+ type: 'number',
+ required: true
+ },
+ ],
+ returns: {
+ type: 'object',
+ root: true
+ },
+ http: {
+ path: '/refundAndInvoice',
+ verb: 'post'
+ }
+ });
+
+ Self.refundAndInvoice = async(
+ ctx,
+ id,
+ withWarehouse,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ options
+ ) => {
+ const models = Self.app.models;
+ const myOptions = {userId: ctx.req.accessToken.userId};
+ let refundId;
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ let tx;
+ if (!myOptions.transaction) {
+ tx = await Self.beginTransaction({});
+ myOptions.transaction = tx;
+ }
+
+ try {
+ const originalInvoice = await models.InvoiceOut.findById(id, myOptions);
+
+ const refundedTickets = await Self.refund(ctx, originalInvoice.ref, withWarehouse, myOptions);
+
+ const invoiceCorrection = {
+ correctedFk: id,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk
+ };
+ const ticketIds = refundedTickets.map(ticket => ticket.id);
+ refundId = await models.Ticket.invoiceTickets(ctx, ticketIds, invoiceCorrection, myOptions);
+
+ tx && await tx.commit();
+ } catch (e) {
+ if (tx) await tx.rollback();
+ throw e;
+ }
+
+ if (tx) {
+ try {
+ await models.InvoiceOut.makePdfList(ctx, refundId);
+ } catch (e) {
+ throw new UserError('The invoices have been created but the PDFs could not be generated');
+ }
+ }
+
+ return {refundId};
+ };
+};
diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/clientsToInvoice.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/clientsToInvoice.spec.js
new file mode 100644
index 000000000..470690c5a
--- /dev/null
+++ b/modules/invoiceOut/back/methods/invoiceOut/specs/clientsToInvoice.spec.js
@@ -0,0 +1,75 @@
+const models = require('vn-loopback/server/server').models;
+
+describe('InvoiceOut clientsToInvoice()', () => {
+ const userId = 1;
+ const clientId = 1101;
+ const companyFk = 442;
+ const maxShipped = new Date();
+ maxShipped.setMonth(11);
+ maxShipped.setDate(31);
+ maxShipped.setHours(23, 59, 59, 999);
+ const invoiceDate = new Date();
+ const activeCtx = {
+ getLocale: () => {
+ return 'en';
+ },
+ accessToken: {userId: userId},
+ __: value => {
+ return value;
+ },
+ headers: {origin: 'http://localhost'}
+ };
+ const ctx = {req: activeCtx};
+
+ it('should return a list of clients to invoice', async() => {
+ spyOn(models.InvoiceOut, 'rawSql').and.callFake(query => {
+ if (query.includes('ticketPackaging_add'))
+ return Promise.resolve(true);
+ else if (query.includes('SELECT c.id clientId')) {
+ return Promise.resolve([
+ {
+ clientId: clientId,
+ clientName: 'Test Client',
+ id: 1,
+ nickname: 'Address 1'
+ }
+ ]);
+ }
+ });
+
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ const addresses = await models.InvoiceOut.clientsToInvoice(
+ ctx, clientId, invoiceDate, maxShipped, companyFk, options);
+
+ expect(addresses.length).toBeGreaterThan(0);
+ expect(addresses[0].clientId).toBe(clientId);
+ expect(addresses[0].clientName).toBe('Test Client');
+ expect(addresses[0].id).toBe(1);
+ expect(addresses[0].nickname).toBe('Address 1');
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should handle errors and rollback transaction', async() => {
+ spyOn(models.InvoiceOut, 'rawSql').and.callFake(() => {
+ return Promise.reject(new Error('Test Error'));
+ });
+
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ await models.InvoiceOut.clientsToInvoice(ctx, clientId, invoiceDate, maxShipped, companyFk, options);
+ } catch (e) {
+ expect(e.message).toBe('Test Error');
+ await tx.rollback();
+ }
+ });
+});
diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js
index 0faa8fe1a..c731912ec 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js
@@ -1,16 +1,16 @@
const models = require('vn-loopback/server/server').models;
+const LoopBackContext = require('loopback-context');
describe('InvoiceOut invoiceClient()', () => {
const userId = 1;
const clientId = 1101;
- const addressId = 121;
+ const addressFk = 121;
const companyFk = 442;
const minShipped = Date.vnNew();
minShipped.setFullYear(minShipped.getFullYear() - 1);
minShipped.setMonth(1);
minShipped.setDate(1);
minShipped.setHours(0, 0, 0, 0);
- const invoiceSerial = 'A';
const activeCtx = {
getLocale: () => {
return 'en';
@@ -23,9 +23,14 @@ describe('InvoiceOut invoiceClient()', () => {
};
const ctx = {req: activeCtx};
+ beforeAll(() => {
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
+ active: activeCtx
+ });
+ });
- it('should make a global invoicing', async() => {
- spyOn(models.InvoiceOut, 'makePdf').and.returnValue(new Promise(resolve => resolve(true)));
+ it('should make a global invoicing by address and verify billing status', async() => {
+ spyOn(models.InvoiceOut, 'makePdf').and.returnValue(Promise.resolve(true));
spyOn(models.InvoiceOut, 'invoiceEmail');
const tx = await models.InvoiceOut.beginTransaction({});
@@ -34,20 +39,96 @@ describe('InvoiceOut invoiceClient()', () => {
try {
ctx.args = {
clientId: clientId,
- addressId: addressId,
+ addressId: addressFk,
invoiceDate: Date.vnNew(),
maxShipped: Date.vnNew(),
companyFk: companyFk,
- minShipped: minShipped
+ serialType: 'global'
};
+
const invoiceOutId = await models.InvoiceOut.invoiceClient(ctx, options);
+
const invoiceOut = await models.InvoiceOut.findById(invoiceOutId, null, options);
- const [firstTicket] = await models.Ticket.find({
+
+ expect(invoiceOutId).toBeGreaterThan(0);
+
+ const allClientTickets = await models.Ticket.find({
+ where: {
+ clientFk: clientId,
+ or: [
+ {refFk: null},
+ {refFk: invoiceOut.ref}
+ ]
+ }
+ }, options);
+
+ const billedTickets = await models.Ticket.find({
where: {refFk: invoiceOut.ref}
}, options);
+ const allBilledTicketsHaveCorrectAddress = billedTickets.every(ticket => ticket.addressFk === addressFk);
+
+ expect(allBilledTicketsHaveCorrectAddress).toBe(true);
+
+ const addressTickets = allClientTickets.filter(ticket => ticket.addressFk === addressFk);
+
+ const allAddressTicketsBilled = addressTickets.every(ticket => ticket.refFk === invoiceOut.ref);
+
+ expect(allAddressTicketsBilled).toBe(true);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should invoice all tickets regardless of address when hasToInvoiceByAddress is false', async() => {
+ spyOn(models.InvoiceOut, 'makePdf').and.returnValue(Promise.resolve(true));
+ spyOn(models.InvoiceOut, 'invoiceEmail');
+
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ const client = await models.Client.findById(clientId, null, options);
+ await client.updateAttribute('hasToInvoiceByAddress', false, options);
+
+ ctx.args = {
+ clientId: clientId,
+ invoiceDate: Date.vnNew(),
+ maxShipped: Date.vnNew(),
+ companyFk: companyFk,
+ serialType: 'global'
+ };
+
+ const invoiceOutId = await models.InvoiceOut.invoiceClient(ctx, options);
+
+ const invoiceOut = await models.InvoiceOut.findById(invoiceOutId, null, options);
+
expect(invoiceOutId).toBeGreaterThan(0);
- expect(firstTicket.refFk).toContain(invoiceSerial);
+
+ const allClientTickets = await models.Ticket.find({
+ where: {
+ clientFk: clientId,
+ or: [
+ {refFk: null},
+ {refFk: invoiceOut.ref}
+ ]
+ }
+ }, options);
+
+ const billedTickets = await models.Ticket.find({
+ where: {refFk: invoiceOut.ref}
+ }, options);
+
+ const allTicketsBilled = allClientTickets.every(ticket => ticket.refFk === invoiceOut.ref);
+
+ expect(allTicketsBilled).toBe(true);
+
+ const billedAddresses = new Set(billedTickets.map(ticket => ticket.addressFk));
+
+ expect(billedAddresses.size).toBeGreaterThan(1);
await tx.rollback();
} catch (e) {
diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/makePdfAndNotify.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/makePdfAndNotify.spec.js
new file mode 100644
index 000000000..002face07
--- /dev/null
+++ b/modules/invoiceOut/back/methods/invoiceOut/specs/makePdfAndNotify.spec.js
@@ -0,0 +1,105 @@
+const models = require('vn-loopback/server/server').models;
+const LoopBackContext = require('loopback-context');
+const UserError = require('vn-loopback/util/user-error');
+
+describe('InvoiceOut makePdfAndNotify()', () => {
+ const userId = 5;
+ const ctx = {
+ req: {
+ accessToken: {userId},
+ __: (key, obj) => `Translated: ${key}, ${JSON.stringify(obj)}`,
+ getLocale: () => 'es'
+ },
+ args: {}
+ };
+ const activeCtx = {accessToken: {userId}};
+ const id = 4;
+ const printerFk = 1;
+
+ beforeEach(() => {
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({active: activeCtx});
+ });
+
+ it('should generate PDF and send email when client is to be mailed', async() => {
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ await models.InvoiceOut.makePdfAndNotify(ctx, id, printerFk, options);
+
+ const invoice = await models.InvoiceOut.findById(id, {
+ fields: ['ref', 'clientFk'],
+ include: {
+ relation: 'client',
+ scope: {
+ fields: ['id', 'email', 'isToBeMailed', 'salesPersonFk']
+ }
+ }
+ }, options);
+
+ expect(invoice).toBeDefined();
+ expect(invoice.client().isToBeMailed).toBe(true);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should generate PDF and print when client is not to be mailed', async() => {
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ await models.InvoiceOut.makePdfAndNotify(ctx, id, null, options);
+
+ const invoice = await models.InvoiceOut.findById(id, {
+ fields: ['ref', 'clientFk'],
+ include: {
+ relation: 'client',
+ scope: {
+ fields: ['id', 'email', 'isToBeMailed', 'salesPersonFk']
+ }
+ }
+ }, options);
+
+ expect(invoice).toBeDefined();
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should throw UserError when PDF generation fails', async() => {
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ await models.InvoiceOut.makePdfAndNotify(ctx, null, null, options);
+ await tx.rollback();
+ } catch (e) {
+ expect(e instanceof UserError).toBe(true);
+ expect(e.message).toContain('Error while generating PDF');
+ await tx.rollback();
+ }
+ });
+
+ it('should send message to salesperson when email fails', async() => {
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ spyOn(models.InvoiceOut, 'invoiceEmail').and.rejectWith(new Error('Test Error'));
+ await models.InvoiceOut.makePdfAndNotify(ctx, id, null, options);
+ await tx.rollback();
+ } catch (e) {
+ expect(e instanceof UserError).toBe(true);
+ expect(e.message).toContain('Error when sending mail to client');
+
+ await tx.rollback();
+ }
+ });
+});
diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/refundAndInvoice.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/refundAndInvoice.spec.js
new file mode 100644
index 000000000..ed15fb404
--- /dev/null
+++ b/modules/invoiceOut/back/methods/invoiceOut/specs/refundAndInvoice.spec.js
@@ -0,0 +1,81 @@
+const models = require('vn-loopback/server/server').models;
+const LoopBackContext = require('loopback-context');
+
+describe('InvoiceOut refundAndInvoice()', () => {
+ const userId = 5;
+ const ctx = {req: {accessToken: {userId}}};
+ const activeCtx = {accessToken: {userId}};
+ const id = 4;
+ const cplusRectificationTypeFk = 1;
+ const siiTypeInvoiceOutFk = 1;
+ const invoiceCorrectionTypeFk = 1;
+
+ beforeEach(() => {
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({active: activeCtx});
+ });
+
+ it('should refund an invoice and create a new invoice with warehouse', async() => {
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+ const withWarehouse = true;
+
+ try {
+ const result = await models.InvoiceOut.refundAndInvoice(
+ ctx,
+ id,
+ withWarehouse,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ options
+ );
+
+ expect(result).toBeDefined();
+ expect(result.refundId).toBeDefined();
+
+ const invoicesAfter = await models.InvoiceOut.find({where: {id: result.refundId}}, options);
+ const ticketsAfter = await models.Ticket.find(
+ {where: {refFk: 'R10100001', warehouse: {neq: null}}}, options);
+
+ expect(invoicesAfter.length).toBeGreaterThan(0);
+ expect(ticketsAfter.length).toBeGreaterThan(0);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('should refund an invoice and create a new invoice with warehouse null', async() => {
+ const tx = await models.InvoiceOut.beginTransaction({});
+ const options = {transaction: tx};
+ const withWarehouse = false;
+
+ try {
+ const result = await models.InvoiceOut.refundAndInvoice(
+ ctx,
+ id,
+ withWarehouse,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ options
+ );
+
+ expect(result).toBeDefined();
+ expect(result.refundId).toBeDefined();
+
+ const invoicesAfter = await models.InvoiceOut.find({where: {id: result.refundId}}, options);
+ const ticketsAfter = await models.Ticket.find({where: {refFk: 'R10100001', warehouse: null}}, options);
+
+ expect(invoicesAfter.length).toBeGreaterThan(0);
+ expect(ticketsAfter.length).toBeGreaterThan(0);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+});
diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/transfer.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/transfer.spec.js
new file mode 100644
index 000000000..8ec91743e
--- /dev/null
+++ b/modules/invoiceOut/back/methods/invoiceOut/specs/transfer.spec.js
@@ -0,0 +1,135 @@
+const models = require('vn-loopback/server/server').models;
+const LoopBackContext = require('loopback-context');
+const UserError = require('vn-loopback/util/user-error');
+
+describe('InvoiceOut transfer()', () => {
+ const userId = 5;
+ let options;
+ let tx;
+ let ctx;
+ const activeCtx = {accessToken: {userId}};
+ const id = 4;
+ const newClientFk = 1101;
+ const cplusRectificationTypeFk = 1;
+ const siiTypeInvoiceOutFk = 1;
+ const invoiceCorrectionTypeFk = 1;
+
+ beforeEach(async() => {
+ ctx = {
+ req: {
+ accessToken: {userId: 1106},
+ headers: {origin: 'http://localhost'},
+ __: value => value,
+ getLocale: () => 'es'
+ },
+ args: {}
+ };
+
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({active: activeCtx});
+ options = {transaction: tx};
+ tx = await models.Sale.beginTransaction({});
+ options.transaction = tx;
+ });
+
+ afterEach(async() => {
+ await tx.rollback();
+ });
+
+ it('should transfer an invoice to a new client and return the new invoice ID', async() => {
+ const makeInvoice = true;
+ const makePdfListMock = spyOn(models.InvoiceOut, 'makePdfList').and.returnValue();
+
+ const [result] = await models.InvoiceOut.transfer(
+ ctx,
+ id,
+ newClientFk,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ makeInvoice,
+ options
+ );
+
+ const newInvoice = await models.InvoiceOut.findById(result, null, options);
+
+ expect(newInvoice.clientFk).toBe(newClientFk);
+
+ const transferredTickets = await models.Ticket.find({
+ where: {
+ refFk: newInvoice.ref,
+ clientFk: newClientFk
+ }
+ }, options);
+
+ expect(transferredTickets.length).toBeGreaterThan(0);
+ expect(makePdfListMock).toHaveBeenCalledWith(ctx, [result]);
+ });
+
+ it('should throw an error if original invoice is not found', async() => {
+ const makeInvoice = true;
+ try {
+ await models.InvoiceOut.transfer(
+ ctx,
+ 'idNotExists',
+ newClientFk,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ makeInvoice,
+ options
+ );
+ fail('Expected an error to be thrown');
+ } catch (e) {
+ expect(e).toBeInstanceOf(UserError);
+ expect(e.message).toBe('Original invoice not found');
+ }
+ });
+
+ it('should throw an error if the new client is the same as the original client', async() => {
+ const makeInvoice = true;
+ const originalInvoice = await models.InvoiceOut.findById(id, options);
+
+ try {
+ await models.InvoiceOut.transfer(
+ ctx,
+ id,
+ originalInvoice.clientFk,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ makeInvoice,
+ options
+ );
+ fail('Expected an error to be thrown');
+ } catch (e) {
+ expect(e).toBeInstanceOf(UserError);
+ expect(e.message).toBe('Select a different client');
+ }
+ });
+
+ it('should not create a new invoice if makeInvoice is false', async() => {
+ const originalTickets = await models.Ticket.find({
+ where: {clientFk: newClientFk, refFk: null},
+ options
+ });
+
+ const result = await models.InvoiceOut.transfer(
+ ctx,
+ id,
+ newClientFk,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ false,
+ options
+ );
+
+ expect(result).toBeUndefined();
+
+ const transferredTickets = await models.Ticket.find({
+ where: {clientFk: newClientFk, refFk: null}
+ }, options);
+
+ expect(transferredTickets.length).toBeGreaterThan(originalTickets.length);
+ });
+});
diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/transferinvoice.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/transferinvoice.spec.js
deleted file mode 100644
index 22787e730..000000000
--- a/modules/invoiceOut/back/methods/invoiceOut/specs/transferinvoice.spec.js
+++ /dev/null
@@ -1,116 +0,0 @@
-const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
-
-describe('InvoiceOut transferInvoice()', () => {
- const activeCtx = {
- accessToken: {userId: 5},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- const ctx = {req: activeCtx};
-
- beforeEach(() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
-
- it('should return the id of the created issued invoice', async() => {
- const tx = await models.InvoiceOut.beginTransaction({});
- const options = {transaction: tx};
- const id = 4;
- const newClient = 1;
- spyOn(models.InvoiceOut, 'makePdfList');
-
- try {
- const {clientFk: oldClient} = await models.InvoiceOut.findById(id, {fields: ['clientFk']});
- const invoicesBefore = await models.InvoiceOut.find({}, options);
- const result = await models.InvoiceOut.transferInvoice(
- ctx,
- id,
- 'T4444444',
- newClient,
- 1,
- 1,
- 1,
- true,
- options);
- const invoicesAfter = await models.InvoiceOut.find({}, options);
- const rectificativeInvoice = invoicesAfter[invoicesAfter.length - 2];
- const newInvoice = invoicesAfter[invoicesAfter.length - 1];
-
- expect(result).toBeDefined();
- expect(invoicesAfter.length - invoicesBefore.length).toEqual(2);
- expect(rectificativeInvoice.clientFk).toEqual(oldClient);
- expect(newInvoice.clientFk).toEqual(newClient);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
- });
-
- it('should throw an error when it is the same client', async() => {
- const tx = await models.InvoiceOut.beginTransaction({});
- const options = {transaction: tx};
- spyOn(models.InvoiceOut, 'makePdfList');
-
- try {
- await models.InvoiceOut.transferInvoice(ctx, '1', 'T1111111', 1101, 1, 1, 1, true, options);
- await tx.rollback();
- } catch (e) {
- expect(e.message).toBe(`Select a different client`);
- await tx.rollback();
- }
- });
-
- it('should throw an error when it is refund', async() => {
- const tx = await models.InvoiceOut.beginTransaction({});
- const options = {transaction: tx};
- spyOn(models.InvoiceOut, 'makePdfList');
- try {
- await models.InvoiceOut.transferInvoice(ctx, '1', 'T1111111', 1102, 1, 1, 1, true, options);
- await tx.rollback();
- } catch (e) {
- expect(e.message).toContain(`This ticket is already a refund`);
- await tx.rollback();
- }
- });
-
- it('should throw an error when pdf failed', async() => {
- const tx = await models.InvoiceOut.beginTransaction({});
- const options = {transaction: tx};
- spyOn(models.InvoiceOut, 'makePdfList').and.returnValue(() => {
- throw new Error('test');
- });
-
- try {
- await models.InvoiceOut.transferInvoice(ctx, '1', 'T1111111', 1102, 1, 1, 1, true, options);
- await tx.rollback();
- } catch (e) {
- expect(e.message).toContain(`It has been invoiced but the PDF could not be generated`);
- await tx.rollback();
- }
- });
-
- it('should not generate an invoice', async() => {
- const tx = await models.InvoiceOut.beginTransaction({});
- const options = {transaction: tx};
- spyOn(models.InvoiceOut, 'makePdfList');
-
- let response;
- try {
- response = await models.InvoiceOut.transferInvoice(ctx, '1', 'T1111111', 1102, 1, 1, 1, false, options);
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
-
- expect(response).not.toBeDefined();
- });
-});
diff --git a/modules/invoiceOut/back/methods/invoiceOut/transfer.js b/modules/invoiceOut/back/methods/invoiceOut/transfer.js
new file mode 100644
index 000000000..aa5c0d9d2
--- /dev/null
+++ b/modules/invoiceOut/back/methods/invoiceOut/transfer.js
@@ -0,0 +1,123 @@
+const UserError = require('vn-loopback/util/user-error');
+
+module.exports = Self => {
+ Self.remoteMethodCtx('transfer', {
+ description: 'Transfer an issued invoice to another client',
+ accessType: 'WRITE',
+ accepts: [
+ {
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'Issued invoice id'
+ },
+ {
+ arg: 'newClientFk',
+ type: 'number',
+ required: true
+ },
+ {
+ arg: 'cplusRectificationTypeFk',
+ type: 'number',
+ required: true
+ },
+ {
+ arg: 'siiTypeInvoiceOutFk',
+ type: 'number',
+ required: true
+ },
+ {
+ arg: 'invoiceCorrectionTypeFk',
+ type: 'number',
+ required: true
+ },
+ {
+ arg: 'makeInvoice',
+ type: 'boolean',
+ required: true
+ },
+ ],
+ returns: {type: 'object', root: true},
+ http: {path: '/transfer', verb: 'post'}
+ });
+
+ Self.transfer = async(
+ ctx,
+ id,
+ newClientFk,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ makeInvoice,
+ options
+ ) => {
+ const models = Self.app.models;
+ let tx;
+ const myOptions = {};
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ if (!myOptions.transaction) {
+ tx = await Self.beginTransaction({});
+ myOptions.transaction = tx;
+ }
+
+ const originalInvoice = await models.InvoiceOut.findById(id);
+ if (!originalInvoice)
+ throw new UserError('Original invoice not found');
+
+ if (originalInvoice.clientFk === newClientFk)
+ throw new UserError('Select a different client');
+
+ let transferredInvoiceId;
+ try {
+ await Self.refundAndInvoice(
+ ctx,
+ id,
+ false,
+ cplusRectificationTypeFk,
+ siiTypeInvoiceOutFk,
+ invoiceCorrectionTypeFk,
+ myOptions
+ );
+
+ const tickets = await models.Ticket.find({where: {refFk: originalInvoice.ref}}, myOptions);
+ const ticketIds = tickets.map(ticket => ticket.id);
+ const transferredTickets = await models.Ticket.cloneAll(ctx, ticketIds, false, false, myOptions);
+ const client = await models.Client.findById(newClientFk,
+ {fields: ['id', 'defaultAddressFk']}, myOptions);
+ const address = await models.Address.findById(client.defaultAddressFk,
+ {fields: ['id', 'nickname']}, myOptions);
+
+ const transferredTicketIds = transferredTickets.map(ticket => ticket.id);
+ await models.Ticket.updateAll(
+ {id: {inq: transferredTicketIds}},
+ {
+ clientFk: newClientFk,
+ addressFk: client.defaultAddressFk,
+ nickname: address.nickname
+ },
+ myOptions
+ );
+
+ if (makeInvoice)
+ transferredInvoiceId = await models.Ticket.invoiceTickets(ctx, transferredTicketIds, null, myOptions);
+
+ if (tx) await tx.commit();
+ } catch (e) {
+ if (tx) await tx.rollback();
+ throw e;
+ }
+
+ if (transferredInvoiceId) {
+ try {
+ await models.InvoiceOut.makePdfList(ctx, transferredInvoiceId);
+ } catch (e) {
+ throw new UserError('The invoices have been created but the PDFs could not be generatedd');
+ }
+ }
+
+ return transferredInvoiceId;
+ };
+};
diff --git a/modules/invoiceOut/back/methods/invoiceOut/transferInvoice.js b/modules/invoiceOut/back/methods/invoiceOut/transferInvoice.js
deleted file mode 100644
index 0c86e5810..000000000
--- a/modules/invoiceOut/back/methods/invoiceOut/transferInvoice.js
+++ /dev/null
@@ -1,139 +0,0 @@
-const UserError = require('vn-loopback/util/user-error');
-
-module.exports = Self => {
- Self.remoteMethodCtx('transferInvoice', {
- description: 'Transfer an issued invoice to another client',
- accessType: 'WRITE',
- accepts: [
- {
- arg: 'id',
- type: 'number',
- required: true,
- description: 'Issued invoice id'
- },
- {
- arg: 'refFk',
- type: 'string',
- required: true
- },
- {
- arg: 'newClientFk',
- type: 'number',
- required: true
- },
- {
- arg: 'cplusRectificationTypeFk',
- type: 'number',
- required: true
- },
- {
- arg: 'siiTypeInvoiceOutFk',
- type: 'number',
- required: true
- },
- {
- arg: 'invoiceCorrectionTypeFk',
- type: 'number',
- required: true
- },
- {
- arg: 'makeInvoice',
- type: 'boolean',
- required: true
- },
- ],
- returns: {
- type: 'object',
- root: true
- },
- http: {
- path: '/transferInvoice',
- verb: 'post'
- }
- });
-
- Self.transferInvoice = async(
- ctx,
- id,
- refFk,
- newClientFk,
- cplusRectificationTypeFk,
- siiTypeInvoiceOutFk,
- invoiceCorrectionTypeFk,
- makeInvoice,
- options
- ) => {
- const models = Self.app.models;
- const myOptions = {userId: ctx.req.accessToken.userId};
- let invoiceId;
- let refundId;
-
- let tx;
- if (typeof options == 'object')
- Object.assign(myOptions, options);
-
- const {clientFk} = await models.InvoiceOut.findById(id);
-
- if (clientFk == newClientFk)
- throw new UserError(`Select a different client`);
-
- if (!myOptions.transaction) {
- tx = await Self.beginTransaction({});
- myOptions.transaction = tx;
- }
- try {
- const filterRef = {where: {refFk: refFk}};
- const tickets = await models.Ticket.find(filterRef, myOptions);
- const ticketsIds = tickets.map(ticket => ticket.id);
- const refundTickets = await models.Ticket.refund(ctx, ticketsIds, null, myOptions);
-
- const filterTicket = {where: {ticketFk: {inq: ticketsIds}}};
-
- const services = await models.TicketService.find(filterTicket, myOptions);
- const servicesIds = services.map(service => service.id);
-
- const sales = await models.Sale.find(filterTicket, myOptions);
- const salesIds = sales.map(sale => sale.id);
-
- const clonedTickets = await models.Sale.clone(ctx, salesIds, servicesIds, null, false, myOptions);
- const clonedTicketIds = [];
-
- for (const clonedTicket of clonedTickets) {
- await clonedTicket.updateAttribute('clientFk', newClientFk, myOptions);
- clonedTicketIds.push(clonedTicket.id);
- }
-
- const invoiceCorrection = {
- correctedFk: id,
- cplusRectificationTypeFk,
- siiTypeInvoiceOutFk,
- invoiceCorrectionTypeFk
- };
- const refundTicketIds = refundTickets.map(ticket => ticket.id);
-
- refundId = await models.Ticket.invoiceTickets(ctx, refundTicketIds, invoiceCorrection, myOptions);
-
- if (makeInvoice)
- invoiceId = await models.Ticket.invoiceTickets(ctx, clonedTicketIds, null, myOptions);
-
- tx && await tx.commit();
- } catch (e) {
- if (tx) await tx.rollback();
- throw e;
- }
-
- if (tx && makeInvoice) {
- try {
- await models.InvoiceOut.makePdfList(ctx, invoiceId);
- } catch (e) {
- throw new UserError('It has been invoiced but the PDF could not be generated');
- }
- try {
- await models.InvoiceOut.makePdfList(ctx, refundId);
- } catch (e) {
- throw new UserError('It has been invoiced but the PDF of refund not be generated');
- }
- }
- return invoiceId;
- };
-};
diff --git a/modules/invoiceOut/back/models/invoice-out-serial.json b/modules/invoiceOut/back/models/invoice-out-serial.json
index 912269fd7..30e1f1b39 100644
--- a/modules/invoiceOut/back/models/invoice-out-serial.json
+++ b/modules/invoiceOut/back/models/invoice-out-serial.json
@@ -20,6 +20,9 @@
},
"isCEE": {
"type": "boolean"
+ },
+ "type": {
+ "type": "string"
}
},
"relations": {
@@ -35,4 +38,4 @@
"principalId": "$everyone",
"permission": "ALLOW"
}]
-}
\ No newline at end of file
+}
diff --git a/modules/invoiceOut/back/models/invoice-out.js b/modules/invoiceOut/back/models/invoice-out.js
index b0e05b626..47dbcbea4 100644
--- a/modules/invoiceOut/back/models/invoice-out.js
+++ b/modules/invoiceOut/back/models/invoice-out.js
@@ -26,7 +26,8 @@ module.exports = Self => {
require('../methods/invoiceOut/getInvoiceDate')(Self);
require('../methods/invoiceOut/negativeBases')(Self);
require('../methods/invoiceOut/negativeBasesCsv')(Self);
- require('../methods/invoiceOut/transferInvoice')(Self);
+ require('../methods/invoiceOut/transfer')(Self);
+ require('../methods/invoiceOut/refundAndInvoice')(Self);
Self.filePath = async function(id, options) {
const fields = ['ref', 'issued'];
diff --git a/modules/invoiceOut/front/card/index.html b/modules/invoiceOut/front/card/index.html
deleted file mode 100644
index a6f56f775..000000000
--- a/modules/invoiceOut/front/card/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/card/index.js b/modules/invoiceOut/front/card/index.js
deleted file mode 100644
index c443912d9..000000000
--- a/modules/invoiceOut/front/card/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import ngModule from '../module';
-import ModuleCard from 'salix/components/module-card';
-
-class Controller extends ModuleCard {
- reload() {
- const filter = {
- fields: [
- 'id',
- 'ref',
- 'issued',
- 'serial',
- 'amount',
- 'clientFk',
- 'companyFk',
- 'hasPdf'
- ],
- include: [
- {
- relation: 'company',
- scope: {
- fields: ['id', 'code']
- }
- }, {
- relation: 'client',
- scope: {
- fields: ['id', 'socialName', 'name', 'email']
- }
- }
- ]
- };
-
- this.$http.get(`InvoiceOuts/${this.$params.id}`, {filter})
- .then(res => this.invoiceOut = res.data);
- }
-}
-
-ngModule.vnComponent('vnInvoiceOutCard', {
- template: require('./index.html'),
- controller: Controller
-});
-
diff --git a/modules/invoiceOut/front/card/index.spec.js b/modules/invoiceOut/front/card/index.spec.js
deleted file mode 100644
index 2a8d576dc..000000000
--- a/modules/invoiceOut/front/card/index.spec.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import './index.js';
-
-describe('vnInvoiceOut', () => {
- let controller;
- let $httpBackend;
- let data = {id: 1, name: 'fooName'};
-
- beforeEach(ngModule('invoiceOut'));
-
- beforeEach(inject(($componentController, _$httpBackend_, $stateParams) => {
- $httpBackend = _$httpBackend_;
-
- let $element = angular.element('
');
- controller = $componentController('vnInvoiceOutCard', {$element});
-
- $stateParams.id = data.id;
- $httpBackend.whenRoute('GET', 'InvoiceOuts/:id').respond(data);
- }));
-
- it('should request data and set it on the controller', () => {
- controller.reload();
- $httpBackend.flush();
-
- expect(controller.invoiceOut).toEqual(data);
- });
-});
-
diff --git a/modules/invoiceOut/front/descriptor-menu/index.html b/modules/invoiceOut/front/descriptor-menu/index.html
index da04c8e72..335ab87cc 100644
--- a/modules/invoiceOut/front/descriptor-menu/index.html
+++ b/modules/invoiceOut/front/descriptor-menu/index.html
@@ -88,28 +88,7 @@
translate>
Show CITES letter
-
- Refund...
-
-
-
- with warehouse
-
-
- without warehouse
-
-
-
-
+
{
- const tickets = res.data;
- const refundTickets = tickets.map(ticket => ticket.id);
-
- this.vnApp.showSuccess(this.$t('The following refund tickets have been created', {
- ticketId: refundTickets.join(',')
- }));
- if (refundTickets.length == 1)
- this.$state.go('ticket.card.sale', {id: refundTickets[0]});
- });
- }
-
transferInvoice() {
const params = {
id: this.invoiceOut.id,
- refFk: this.invoiceOut.ref,
newClientFk: this.clientId,
cplusRectificationTypeFk: this.cplusRectificationType,
siiTypeInvoiceOutFk: this.siiTypeInvoiceOut,
@@ -170,7 +154,7 @@ class Controller extends Section {
return;
}
- this.$http.post(`InvoiceOuts/transferInvoice`, params).then(res => {
+ this.$http.post(`InvoiceOuts/transfer`, params).then(res => {
const invoiceId = res.data;
this.vnApp.showSuccess(this.$t('Transferred invoice'));
this.$state.go('invoiceOut.card.summary', {id: invoiceId});
diff --git a/modules/invoiceOut/front/descriptor-menu/index.spec.js b/modules/invoiceOut/front/descriptor-menu/index.spec.js
index d2ccfa117..a22ca7c2a 100644
--- a/modules/invoiceOut/front/descriptor-menu/index.spec.js
+++ b/modules/invoiceOut/front/descriptor-menu/index.spec.js
@@ -105,17 +105,4 @@ describe('vnInvoiceOutDescriptorMenu', () => {
expect(controller.vnApp.showMessage).toHaveBeenCalled();
});
});
-
- describe('refundInvoiceOut()', () => {
- it('should make a query and show a success message', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
- const params = {ref: controller.invoiceOut.ref};
-
- $httpBackend.expectPOST(`InvoiceOuts/refund`, params).respond([{id: 1}, {id: 2}]);
- controller.refundInvoiceOut();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
});
diff --git a/modules/invoiceOut/front/descriptor/locale/es.yml b/modules/invoiceOut/front/descriptor/es.yml
similarity index 100%
rename from modules/invoiceOut/front/descriptor/locale/es.yml
rename to modules/invoiceOut/front/descriptor/es.yml
diff --git a/modules/invoiceOut/front/global-invoicing/index.html b/modules/invoiceOut/front/global-invoicing/index.html
deleted file mode 100644
index 3ece30862..000000000
--- a/modules/invoiceOut/front/global-invoicing/index.html
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-
-
-
- Build packaging tickets
-
-
- {{'Invoicing client' | translate}} {{$ctrl.currentAddress.clientId}}
-
-
- Stopping process
-
-
- Ended process
-
-
-
-
- {{$ctrl.percentage | percentage: 0}}
- ({{$ctrl.addressNumber}} of {{$ctrl.nAddresses}})
-
-
- {{$ctrl.nPdfs}} of {{$ctrl.totalPdfs}}
- PDFs
-
-
-
-
-
-
-
-
- Id
- Client
- Address id
- Street
- Error
-
-
-
-
-
-
- {{::error.address.clientId}}
-
-
-
- {{::error.address.clientName}}
-
-
- {{::error.address.id}}
-
-
- {{::error.address.nickname}}
-
-
-
- {{::error.message}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/global-invoicing/index.js b/modules/invoiceOut/front/global-invoicing/index.js
deleted file mode 100644
index 9a936611a..000000000
--- a/modules/invoiceOut/front/global-invoicing/index.js
+++ /dev/null
@@ -1,174 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import UserError from 'core/lib/user-error';
-import './style.scss';
-
-class Controller extends Section {
- $onInit() {
- const date = Date.vnNew();
- Object.assign(this, {
- maxShipped: new Date(date.getFullYear(), date.getMonth(), 0),
- clientsToInvoice: 'all',
- companyFk: this.vnConfig.companyFk,
- parallelism: 1
- });
-
- const params = {companyFk: this.companyFk};
- this.$http.get('InvoiceOuts/getInvoiceDate', {params})
- .then(res => {
- this.minInvoicingDate = res.data.issued ? new Date(res.data.issued) : null;
- this.invoiceDate = this.minInvoicingDate;
- });
-
- const filter = {fields: ['parallelism']};
- this.$http.get('InvoiceOutConfigs/findOne', {filter})
- .then(res => {
- if (res.data.parallelism)
- this.parallelism = res.data.parallelism;
- })
- .catch(res => {
- if (res.status == 404) return;
- throw res;
- });
- }
-
- makeInvoice() {
- this.invoicing = true;
- this.status = 'packageInvoicing';
- this.errors = [];
- this.addresses = null;
-
- try {
- if (this.clientsToInvoice == 'one' && !this.clientId)
- throw new UserError('Choose a valid client');
- if (!this.invoiceDate || !this.maxShipped)
- throw new UserError('Invoice date and the max date should be filled');
- if (this.invoiceDate < this.maxShipped)
- throw new UserError('Invoice date can\'t be less than max date');
- if (this.minInvoicingDate && this.invoiceDate.getTime() < this.minInvoicingDate.getTime())
- throw new UserError('Exists an invoice with a future date');
- if (!this.companyFk)
- throw new UserError('Choose a valid company');
- if (!this.printerFk)
- throw new UserError('Choose a valid printer');
-
- if (this.clientsToInvoice == 'all')
- this.clientId = undefined;
-
- const params = {
- invoiceDate: this.invoiceDate,
- maxShipped: this.maxShipped,
- clientId: this.clientId,
- companyFk: this.companyFk
- };
- this.$http.post(`InvoiceOuts/clientsToInvoice`, params)
- .then(res => {
- this.addresses = res.data;
- if (!this.addresses.length)
- throw new UserError(`There aren't tickets to invoice`);
-
- this.nRequests = 0;
- this.nPdfs = 0;
- this.totalPdfs = 0;
- this.addressIndex = 0;
- this.invoiceClient();
- })
- .catch(err => this.handleError(err));
- } catch (err) {
- this.handleError(err);
- }
- }
-
- handleError(err) {
- this.invoicing = false;
- this.status = null;
- throw err;
- }
-
- invoiceClient() {
- if (this.nRequests == this.parallelism || this.isInvoicing) return;
-
- if (this.addressIndex >= this.addresses.length || this.status == 'stopping') {
- if (this.nRequests) return;
- this.invoicing = false;
- this.status = 'done';
- return;
- }
-
- this.status = 'invoicing';
- const address = this.addresses[this.addressIndex];
- this.currentAddress = address;
- this.isInvoicing = true;
-
- const params = {
- clientId: address.clientId,
- addressId: address.id,
- invoiceDate: this.invoiceDate,
- maxShipped: this.maxShipped,
- companyFk: this.companyFk
- };
-
- this.$http.post(`InvoiceOuts/invoiceClient`, params)
- .then(res => {
- this.isInvoicing = false;
- if (res.data)
- this.makePdfAndNotify(res.data, address);
- this.invoiceNext();
- })
- .catch(res => {
- this.isInvoicing = false;
- if (res.status >= 400 && res.status < 500) {
- this.invoiceError(address, res);
- this.invoiceNext();
- } else {
- this.invoicing = false;
- this.status = 'done';
- throw new UserError(`Critical invoicing error, proccess stopped`);
- }
- });
- }
-
- invoiceNext() {
- this.addressIndex++;
- this.invoiceClient();
- }
-
- makePdfAndNotify(invoiceId, address) {
- this.nRequests++;
- this.totalPdfs++;
- const params = {printerFk: this.printerFk};
- this.$http.post(`InvoiceOuts/${invoiceId}/makePdfAndNotify`, params)
- .catch(res => {
- this.invoiceError(address, res, true);
- })
- .finally(() => {
- this.nPdfs++;
- this.nRequests--;
- this.invoiceClient();
- });
- }
-
- invoiceError(address, res, isWarning) {
- const message = res.data?.error?.message || res.message;
- this.errors.unshift({address, message, isWarning});
- }
-
- get nAddresses() {
- if (!this.addresses) return 0;
- return this.addresses.length;
- }
-
- get addressNumber() {
- return Math.min(this.addressIndex + 1, this.nAddresses);
- }
-
- get percentage() {
- const len = this.nAddresses;
- return Math.min(this.addressIndex, len) / len;
- }
-}
-
-ngModule.vnComponent('vnInvoiceOutGlobalInvoicing', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceOut/front/global-invoicing/index.spec.js b/modules/invoiceOut/front/global-invoicing/index.spec.js
deleted file mode 100644
index 056839b20..000000000
--- a/modules/invoiceOut/front/global-invoicing/index.spec.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import './index';
-
-describe('InvoiceOut', () => {
- describe('Component vnInvoiceOutGlobalInvoicing', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('invoiceOut'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- const $scope = $rootScope.$new();
- const $element = angular.element(' ');
-
- controller = $componentController('vnInvoiceOutGlobalInvoicing', {$element, $scope});
- }));
-
- describe('makeInvoice()', () => {
- it('should throw an error when invoiceDate or maxShipped properties are not filled in', () => {
- jest.spyOn(controller.vnApp, 'showError');
- controller.clientsToInvoice = 'all';
-
- let error;
- try {
- controller.makeInvoice();
- } catch (e) {
- error = e.message;
- }
-
- const expectedError = 'Invoice date and the max date should be filled';
-
- expect(error).toBe(expectedError);
- });
-
- it('should throw an error when select one client and clientId is not filled in', () => {
- jest.spyOn(controller.vnApp, 'showError');
- controller.clientsToInvoice = 'one';
-
- let error;
- try {
- controller.makeInvoice();
- } catch (e) {
- error = e.message;
- }
-
- const expectedError = 'Choose a valid client';
-
- expect(error).toBe(expectedError);
- });
-
- it('should make an http POST query and then call to the showSuccess() method', () => {
- const date = Date.vnNew();
- Object.assign(controller, {
- invoiceDate: date,
- maxShipped: date,
- minInvoicingDate: date,
- clientsToInvoice: 'one',
- clientId: 1101,
- companyFk: 442,
- printerFk: 1
- });
- $httpBackend.expectPOST(`InvoiceOuts/clientsToInvoice`).respond([{
- clientId: 1101,
- id: 121
- }]);
- $httpBackend.expectPOST(`InvoiceOuts/invoiceClient`).respond();
- controller.makeInvoice();
- $httpBackend.flush();
-
- expect(controller.status).toEqual('done');
- });
- });
- });
-});
diff --git a/modules/invoiceOut/front/global-invoicing/locale/es.yml b/modules/invoiceOut/front/global-invoicing/locale/es.yml
deleted file mode 100644
index f1a411ba1..000000000
--- a/modules/invoiceOut/front/global-invoicing/locale/es.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-There aren't tickets to invoice: No existen tickets para facturar
-Max date: Fecha límite
-Invoice date: Fecha de factura
-Invoice date can't be less than max date: La fecha de factura no puede ser inferior a la fecha límite
-Invoice date and the max date should be filled: La fecha de factura y la fecha límite deben rellenarse
-Choose a valid company: Selecciona un empresa válida
-Choose a valid printer: Selecciona una impresora válida
-All clients: Todos los clientes
-Build packaging tickets: Generando tickets de embalajes
-Address id: Id dirección
-Printer: Impresora
-of: de
-PDFs: PDFs
-Client: Cliente
-Current client id: Id cliente actual
-Invoicing client: Facturando cliente
-Ended process: Proceso finalizado
-Invoice out: Facturar
-One client: Un solo cliente
-Choose a valid client: Selecciona un cliente válido
-Stop: Parar
-Critical invoicing error, proccess stopped: Error crítico al facturar, proceso detenido
diff --git a/modules/invoiceOut/front/global-invoicing/style.scss b/modules/invoiceOut/front/global-invoicing/style.scss
deleted file mode 100644
index 3ad767aba..000000000
--- a/modules/invoiceOut/front/global-invoicing/style.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-@import "variables";
-
-vn-invoice-out-global-invoicing {
- h5 {
- color: $color-primary;
- }
- .status {
- height: 80px;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 20px;
- }
- #error {
- line-break: normal;
- overflow-wrap: break-word;
- white-space: normal;
- }
-}
-
-
diff --git a/modules/invoiceOut/front/index.js b/modules/invoiceOut/front/index.js
index 723e3be5a..a5e51d439 100644
--- a/modules/invoiceOut/front/index.js
+++ b/modules/invoiceOut/front/index.js
@@ -1,13 +1,7 @@
export * from './module';
import './main';
-import './index/';
-import './search-panel';
import './summary';
-import './card';
import './descriptor';
import './descriptor-popover';
import './descriptor-menu';
-import './index/manual';
-import './global-invoicing';
-import './negative-bases';
diff --git a/modules/invoiceOut/front/index/index.html b/modules/invoiceOut/front/index/index.html
deleted file mode 100644
index dc4d5d8a9..000000000
--- a/modules/invoiceOut/front/index/index.html
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Reference
- Issued
- Amount
- Client
- Created
- Company
- Due date
-
-
-
-
-
-
-
-
-
- {{::invoiceOut.ref | dashIfEmpty}}
- {{::invoiceOut.issued | date:'dd/MM/yyyy' | dashIfEmpty}}
- {{::invoiceOut.amount | currency: 'EUR': 2 | dashIfEmpty}}
-
-
- {{::invoiceOut.clientSocialName | dashIfEmpty}}
-
-
- {{::invoiceOut.created | date:'dd/MM/yyyy' | dashIfEmpty}}
- {{::invoiceOut.companyCode | dashIfEmpty}}
- {{::invoiceOut.dued | date:'dd/MM/yyyy' | dashIfEmpty}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/index/index.js b/modules/invoiceOut/front/index/index.js
deleted file mode 100644
index f109cd5b0..000000000
--- a/modules/invoiceOut/front/index/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- get checked() {
- const rows = this.$.model.data || [];
- const checkedRows = [];
- for (let row of rows) {
- if (row.checked)
- checkedRows.push(row.id);
- }
-
- return checkedRows;
- }
-
- get totalChecked() {
- return this.checked.length;
- }
-
- preview(invoiceOut) {
- this.selectedInvoiceOut = invoiceOut;
- this.$.summary.show();
- }
-
- openPdf() {
- const access_token = this.vnToken.tokenMultimedia;
- if (this.checked.length <= 1) {
- const [invoiceOutId] = this.checked;
- const url = `api/InvoiceOuts/${invoiceOutId}/download?access_token=${access_token}`;
- window.open(url, '_blank');
- } else {
- const invoiceOutIds = this.checked;
- const invoicesIds = invoiceOutIds.join(',');
- const serializedParams = this.$httpParamSerializer({
- access_token,
- ids: invoicesIds
- });
- const url = `api/InvoiceOuts/downloadZip?${serializedParams}`;
- window.open(url, '_blank');
- }
- }
-}
-
-ngModule.vnComponent('vnInvoiceOutIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceOut/front/index/locale/es.yml b/modules/invoiceOut/front/index/locale/es.yml
deleted file mode 100644
index 74572da49..000000000
--- a/modules/invoiceOut/front/index/locale/es.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-Created: Fecha creacion
-Issued: Fecha factura
-Due date: Fecha vencimiento
-Has PDF: PDF disponible
-Minimum: Minimo
-Maximum: Máximo
-Global invoicing: Facturación global
-Manual invoicing: Facturación manual
-Files are too large: Los archivos son demasiado grandes
\ No newline at end of file
diff --git a/modules/invoiceOut/front/index/manual/index.html b/modules/invoiceOut/front/index/manual/index.html
deleted file mode 100644
index 3b991618d..000000000
--- a/modules/invoiceOut/front/index/manual/index.html
+++ /dev/null
@@ -1,86 +0,0 @@
-
- Create manual invoice
-
-
-
-
-
-
-
-
-
- Invoicing in progress...
-
-
-
-
-
- #{{::id}}
- {{::nickname}}
-
-
- Or
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Make invoice
-
diff --git a/modules/invoiceOut/front/index/manual/index.js b/modules/invoiceOut/front/index/manual/index.js
deleted file mode 100644
index 3abe4b825..000000000
--- a/modules/invoiceOut/front/index/manual/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import ngModule from '../../module';
-import Dialog from 'core/components/dialog';
-import './style.scss';
-
-class Controller extends Dialog {
- constructor($element, $, $transclude) {
- super($element, $, $transclude);
-
- this.isInvoicing = false;
- this.invoice = {
- maxShipped: Date.vnNew()
- };
- }
-
- responseHandler(response) {
- try {
- if (response !== 'accept')
- return super.responseHandler(response);
-
- if (this.invoice.clientFk && !this.invoice.maxShipped)
- throw new Error('Client and the max shipped should be filled');
-
- if (!this.invoice.serial || !this.invoice.taxArea)
- throw new Error('Some fields are required');
-
- this.isInvoicing = true;
- return this.$http.post(`InvoiceOuts/createManualInvoice`, this.invoice)
- .then(res => {
- this.$state.go('invoiceOut.card.summary', {id: res.data.id});
- super.responseHandler(response);
- })
- .then(() => this.vnApp.showSuccess(this.$t('Data saved!')))
- .finally(() => this.isInvoicing = false);
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- this.isInvoicing = false;
- return false;
- }
- }
-}
-
-Controller.$inject = ['$element', '$scope', '$transclude'];
-
-ngModule.vnComponent('vnInvoiceOutManual', {
- slotTemplate: require('./index.html'),
- controller: Controller,
- bindings: {
- ticketFk: '',
- clientFk: ''
- }
-});
diff --git a/modules/invoiceOut/front/index/manual/index.spec.js b/modules/invoiceOut/front/index/manual/index.spec.js
deleted file mode 100644
index f19030129..000000000
--- a/modules/invoiceOut/front/index/manual/index.spec.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import './index';
-
-describe('InvoiceOut', () => {
- describe('Component vnInvoiceOutManual', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('invoiceOut'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- let $scope = $rootScope.$new();
- const $element = angular.element(' ');
- const $transclude = {
- $$boundTransclude: {
- $$slots: []
- }
- };
- controller = $componentController('vnInvoiceOutManual', {$element, $scope, $transclude});
- }));
-
- describe('responseHandler()', () => {
- it('should throw an error when clientFk property is set and the maxShipped is not filled', () => {
- jest.spyOn(controller.vnApp, 'showError');
-
- controller.invoice = {
- clientFk: 1101,
- serial: 'T',
- taxArea: 'B'
- };
-
- controller.responseHandler('accept');
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`Client and the max shipped should be filled`);
- });
-
- it('should throw an error when some required fields are not filled in', () => {
- jest.spyOn(controller.vnApp, 'showError');
-
- controller.invoice = {
- ticketFk: 1101
- };
-
- controller.responseHandler('accept');
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`Some fields are required`);
- });
-
- it('should make an http POST query and then call to the parent showSuccess() method', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- controller.invoice = {
- ticketFk: 1101,
- serial: 'T',
- taxArea: 'B'
- };
-
- $httpBackend.expect('POST', `InvoiceOuts/createManualInvoice`).respond({id: 1});
- controller.responseHandler('accept');
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
- });
-});
diff --git a/modules/invoiceOut/front/index/manual/locale/es.yml b/modules/invoiceOut/front/index/manual/locale/es.yml
deleted file mode 100644
index 370e823d0..000000000
--- a/modules/invoiceOut/front/index/manual/locale/es.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-Create manual invoice: Crear factura manual
-Some fields are required: Algunos campos son obligatorios
-Client and max shipped fields should be filled: Los campos de cliente y fecha límite deben rellenarse
-Max date: Fecha límite
-Serial: Serie
-Invoicing in progress...: Facturación en progreso...
\ No newline at end of file
diff --git a/modules/invoiceOut/front/index/manual/style.scss b/modules/invoiceOut/front/index/manual/style.scss
deleted file mode 100644
index 820c07756..000000000
--- a/modules/invoiceOut/front/index/manual/style.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-@import "variables";
-
-.vn-invoice-out-manual {
- tpl-body {
- width: 500px;
-
- .progress {
- font-weight: bold;
- text-align: center;
- font-size: 1.5rem;
- color: $color-primary;
- vn-horizontal {
- justify-content: center
- }
- }
- }
-}
diff --git a/modules/invoiceOut/front/main/index.html b/modules/invoiceOut/front/main/index.html
index ab3fce9ea..e69de29bb 100644
--- a/modules/invoiceOut/front/main/index.html
+++ b/modules/invoiceOut/front/main/index.html
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/invoiceOut/front/main/index.js b/modules/invoiceOut/front/main/index.js
index ad37e9c4b..f7e21a126 100644
--- a/modules/invoiceOut/front/main/index.js
+++ b/modules/invoiceOut/front/main/index.js
@@ -1,7 +1,15 @@
import ngModule from '../module';
import ModuleMain from 'salix/components/module-main';
-export default class InvoiceOut extends ModuleMain {}
+export default class InvoiceOut extends ModuleMain {
+ constructor($element, $) {
+ super($element, $);
+ }
+ async $onInit() {
+ this.$state.go('home');
+ window.location.href = await this.vnApp.getUrl(`invoice-out/`);
+ }
+}
ngModule.vnComponent('vnInvoiceOut', {
controller: InvoiceOut,
diff --git a/modules/invoiceOut/front/locale/es.yml b/modules/invoiceOut/front/main/locale/es.yml
similarity index 100%
rename from modules/invoiceOut/front/locale/es.yml
rename to modules/invoiceOut/front/main/locale/es.yml
diff --git a/modules/invoiceOut/front/negative-bases/index.html b/modules/invoiceOut/front/negative-bases/index.html
deleted file mode 100644
index 499b6bfe0..000000000
--- a/modules/invoiceOut/front/negative-bases/index.html
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Company
-
-
- Country
-
-
- Client id
-
-
- Client
-
-
- Amount
-
-
- Base
-
-
- Ticket id
-
-
- Active
-
-
- Has To Invoice
-
-
- Verified data
-
-
- Comercial
-
-
-
-
-
- {{client.company | dashIfEmpty}}
- {{client.country | dashIfEmpty}}
-
-
- {{::client.clientId | dashIfEmpty}}
-
-
- {{client.clientSocialName | dashIfEmpty}}
- {{client.amount | currency: 'EUR':2 | dashIfEmpty}}
- {{client.taxableBase | dashIfEmpty}}
-
-
- {{::client.ticketFk | dashIfEmpty}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{::client.workerName | dashIfEmpty}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/negative-bases/index.js b/modules/invoiceOut/front/negative-bases/index.js
deleted file mode 100644
index 7ce610513..000000000
--- a/modules/invoiceOut/front/negative-bases/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-export default class Controller extends Section {
- constructor($element, $, vnReport) {
- super($element, $);
-
- this.vnReport = vnReport;
- const now = Date.vnNew();
- const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
- const lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
- this.params = {
- from: firstDayOfMonth,
- to: lastDayOfMonth
- };
- this.$checkAll = false;
-
- this.smartTableOptions = {
- activeButtons: {
- search: true,
- },
- columns: [
- {
- field: 'isActive',
- searchable: false
- },
- {
- field: 'hasToInvoice',
- searchable: false
- },
- {
- field: 'isTaxDataChecked',
- searchable: false
- },
- ]
- };
- }
-
- exprBuilder(param, value) {
- switch (param) {
- case 'company':
- return {'company': value};
- case 'country':
- return {'country': value};
- case 'clientId':
- return {'clientId': value};
- case 'clientSocialName':
- return {'clientSocialName': value};
- case 'amount':
- return {'amount': value};
- case 'taxableBase':
- return {'taxableBase': value};
- case 'ticketFk':
- return {'ticketFk': value};
- case 'comercialName':
- return {'comercialName': value};
- }
- }
-
- downloadCSV() {
- this.vnReport.show('InvoiceOuts/negativeBasesCsv', {
- from: this.params.from,
- to: this.params.to
- });
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnReport'];
-
-ngModule.vnComponent('vnNegativeBases', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceOut/front/negative-bases/locale/es.yml b/modules/invoiceOut/front/negative-bases/locale/es.yml
deleted file mode 100644
index dd3432592..000000000
--- a/modules/invoiceOut/front/negative-bases/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-Has To Invoice: Facturar
-Download as CSV: Descargar como CSV
diff --git a/modules/invoiceOut/front/negative-bases/style.scss b/modules/invoiceOut/front/negative-bases/style.scss
deleted file mode 100644
index 2d628cb94..000000000
--- a/modules/invoiceOut/front/negative-bases/style.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-@import "./variables";
-
-vn-negative-bases {
- vn-date-picker{
- padding-right: 5%;
- }
- slot-actions{
- align-items: center;
- }
-}
diff --git a/modules/invoiceOut/front/routes.json b/modules/invoiceOut/front/routes.json
index f7f589b01..7c7495cb9 100644
--- a/modules/invoiceOut/front/routes.json
+++ b/modules/invoiceOut/front/routes.json
@@ -26,12 +26,6 @@
"component": "vn-invoice-out-index",
"description": "InvoiceOut"
},
- {
- "url": "/global-invoicing?q",
- "state": "invoiceOut.global-invoicing",
- "component": "vn-invoice-out-global-invoicing",
- "description": "Global invoicing"
- },
{
"url": "/summary",
"state": "invoiceOut.card.summary",
@@ -40,21 +34,6 @@
"params": {
"invoice-out": "$ctrl.invoiceOut"
}
- },
- {
- "url": "/:id",
- "state": "invoiceOut.card",
- "abstract": true,
- "component": "vn-invoice-out-card"
- },
- {
- "url": "/negative-bases",
- "state": "invoiceOut.negative-bases",
- "component": "vn-negative-bases",
- "description": "Negative bases",
- "acl": [
- "administrative"
- ]
}
]
}
diff --git a/modules/invoiceOut/front/search-panel/index.html b/modules/invoiceOut/front/search-panel/index.html
deleted file mode 100644
index f49002cca..000000000
--- a/modules/invoiceOut/front/search-panel/index.html
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
diff --git a/modules/invoiceOut/front/search-panel/index.js b/modules/invoiceOut/front/search-panel/index.js
deleted file mode 100644
index a77d479ca..000000000
--- a/modules/invoiceOut/front/search-panel/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-ngModule.vnComponent('vnInvoiceSearchPanel', {
- template: require('./index.html'),
- controller: SearchPanel
-});
diff --git a/modules/invoiceOut/front/summary/locale/es.yml b/modules/invoiceOut/front/summary/es.yml
similarity index 100%
rename from modules/invoiceOut/front/summary/locale/es.yml
rename to modules/invoiceOut/front/summary/es.yml
diff --git a/modules/item/back/methods/fixed-price/filter.js b/modules/item/back/methods/fixed-price/filter.js
index 0dde9da99..838e913bf 100644
--- a/modules/item/back/methods/fixed-price/filter.js
+++ b/modules/item/back/methods/fixed-price/filter.js
@@ -1,4 +1,3 @@
-
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
const buildFilter = require('vn-loopback/util/filter').buildFilter;
const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
@@ -134,7 +133,7 @@ module.exports = Self => {
const stmts = [];
const stmt = new ParameterizedSQL(`
- SELECT fp.id,
+ SELECT DISTINCT fp.id,
fp.itemFk,
fp.warehouseFk,
w.name as warehouseName,
diff --git a/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js b/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js
index 90e66c066..add2aa404 100644
--- a/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js
+++ b/modules/item/back/methods/item-shelving-sale/itemShelvingSaleSetQuantity.js
@@ -1,6 +1,6 @@
module.exports = Self => {
Self.remoteMethodCtx('itemShelvingSaleSetQuantity', {
- description: 'Set quanitity of a sale in itemShelvingSale',
+ description: 'Set quantity of a sale in itemShelvingSale',
accessType: 'WRITE',
accepts: [
{
@@ -20,6 +20,12 @@ module.exports = Self => {
type: 'boolean',
required: true,
description: 'True if the shelvingFk is empty ',
+ },
+ {
+ arg: 'sectorFk',
+ type: 'number',
+ required: true,
+ description: 'Sector Id',
}
],
http: {
@@ -28,14 +34,14 @@ module.exports = Self => {
}
});
- Self.itemShelvingSaleSetQuantity = async(ctx, id, quantity, isItemShelvingSaleEmpty, options) => {
+ Self.itemShelvingSaleSetQuantity = async(ctx, id, quantity, isItemShelvingSaleEmpty, sectorFk, options) => {
const myOptions = {userId: ctx.req.accessToken.userId};
if (typeof options == 'object')
Object.assign(myOptions, options);
- await Self.rawSql(`CALL vn.itemShelvingSale_setQuantity(?, ?, ? )`,
- [id, quantity, isItemShelvingSaleEmpty],
+ await Self.rawSql(`CALL vn.itemShelvingSale_setQuantity(?, ?, ?, ?)`,
+ [id, quantity, isItemShelvingSaleEmpty, sectorFk],
myOptions);
};
};
diff --git a/modules/item/back/methods/item-shelving/updateFromSale.js b/modules/item/back/methods/item-shelving/updateFromSale.js
index 2b9f49cae..167509074 100644
--- a/modules/item/back/methods/item-shelving/updateFromSale.js
+++ b/modules/item/back/methods/item-shelving/updateFromSale.js
@@ -1,3 +1,4 @@
+const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethod('updateFromSale', {
description: 'Update the visible items',
@@ -32,6 +33,9 @@ module.exports = Self => {
include: {relation: 'itemShelving'}
}, myOptions);
+ if (!itemShelvingSale?.itemShelving())
+ throw new UserError('The sale not exists in the item shelving');
+
const itemShelving = itemShelvingSale.itemShelving();
const quantity = itemShelving.visible + itemShelvingSale.quantity;
diff --git a/modules/item/back/methods/item/getWasteByItem.js b/modules/item/back/methods/item/getWasteByItem.js
index 56b90b04a..548f28008 100644
--- a/modules/item/back/methods/item/getWasteByItem.js
+++ b/modules/item/back/methods/item/getWasteByItem.js
@@ -27,28 +27,42 @@ module.exports = Self => {
});
Self.getWasteByItem = async(buyer, family, options) => {
+ const models = Self.app.models;
const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
+ const user = await models.VnUser.findOne({
+ fields: ['id'],
+ where: {name: buyer}
+ });
+
+ const itemType = await models.ItemType.findOne({
+ fields: ['id'],
+ where: {name: family}
+ }, options);
+
const date = Date.vnNew();
date.setHours(0, 0, 0, 0);
const wastes = await Self.rawSql(`
- SELECT *, 100 * dwindle / total AS percentage
- FROM (
- SELECT buyer,
- ws.family,
- ws.itemFk,
- sum(ws.saleTotal) AS total,
- sum(ws.saleWaste) AS dwindle
- FROM bs.waste ws
- WHERE buyer = ? AND family = ?
- AND year = YEAR(TIMESTAMPADD(WEEK,-1, ?))
- AND week = WEEK(TIMESTAMPADD(WEEK,-1, ?), 1)
- GROUP BY buyer, itemFk
- ) sub
- ORDER BY family, percentage DESC`, [buyer, family, date, date], myOptions);
+ SELECT *, 100 * dwindle / total percentage
+ FROM (
+ SELECT u.name buyer,
+ it.name family,
+ w.itemFk,
+ SUM(w.saleTotal) total,
+ SUM(w.saleInternalWaste + w.saleExternalWaste) dwindle
+ FROM bs.waste w
+ JOIN account.user u ON u.id = w.buyerFk
+ JOIN vn.itemType it ON it.id = w.itemTypeFk
+ WHERE w.buyerFk = ? AND w.itemTypeFk = ?
+ AND w.year = YEAR(TIMESTAMPADD(WEEK, -1, ?))
+ AND w.week = WEEK(TIMESTAMPADD(WEEK, -1, ?), 1)
+ GROUP BY w.buyerFk, w.itemFk
+ ) sub
+ ORDER BY family, percentage DESC
+ `, [user.id, itemType.id, date, date], myOptions);
const details = [];
diff --git a/modules/item/back/methods/item/getWasteByWorker.js b/modules/item/back/methods/item/getWasteByWorker.js
index 8fa351eed..9af49478f 100644
--- a/modules/item/back/methods/item/getWasteByWorker.js
+++ b/modules/item/back/methods/item/getWasteByWorker.js
@@ -22,31 +22,37 @@ module.exports = Self => {
const date = Date.vnNew();
date.setHours(0, 0, 0, 0);
const wastes = await Self.rawSql(`
- SELECT *, 100 * dwindle / total AS percentage
- FROM (
- SELECT buyer,
- ws.family,
- sum(ws.saleTotal) AS total,
- sum(ws.saleWaste) AS dwindle
- FROM bs.waste ws
- WHERE year = YEAR(TIMESTAMPADD(WEEK,-1, ?))
- AND week = WEEK(TIMESTAMPADD(WEEK,-1, ?), 1)
- GROUP BY buyer, family
- ) sub
- ORDER BY percentage DESC`, [date, date], myOptions);
+ SELECT *, 100 * dwindle / total percentage
+ FROM (
+ SELECT u.name buyer,
+ it.name family,
+ w.itemFk,
+ SUM(w.saleTotal) total,
+ SUM(w.saleInternalWaste + w.saleExternalWaste) dwindle
+ FROM bs.waste w
+ JOIN account.user u ON u.id = w.buyerFk
+ JOIN vn.itemType it ON it.id = w.itemTypeFk
+ WHERE year = YEAR(TIMESTAMPADD(WEEK, -1, ?))
+ AND week = WEEK(TIMESTAMPADD(WEEK, -1, ?), 1)
+ GROUP BY buyerFk, itemTypeFk
+ ) sub
+ ORDER BY percentage DESC
+ `, [date, date], myOptions);
const wastesTotal = await Self.rawSql(`
- SELECT *, 100 * dwindle / total AS percentage
+ SELECT *, 100 * dwindle / total percentage
FROM (
- SELECT buyer,
- sum(ws.saleTotal) AS total,
- sum(ws.saleWaste) AS dwindle
- FROM bs.waste ws
- WHERE year = YEAR(TIMESTAMPADD(WEEK,-1, ?))
- AND week = WEEK(TIMESTAMPADD(WEEK,-1, ?), 1)
- GROUP BY buyer
+ SELECT u.name buyer,
+ SUM(w.saleTotal) total,
+ SUM(w.saleInternalWaste + w.saleExternalWaste) dwindle
+ FROM bs.waste w
+ JOIN account.user u ON u.id = w.buyerFk
+ WHERE w.year = YEAR(TIMESTAMPADD(WEEK, -1, ?))
+ AND w.week = WEEK(TIMESTAMPADD(WEEK, -1, ?), 1)
+ GROUP BY w.buyerFk
) sub
- ORDER BY percentage DESC`, [date, date], myOptions);
+ ORDER BY percentage DESC
+ `, [date, date], myOptions);
const details = [];
diff --git a/modules/item/back/methods/item/specs/getVisibleAvailable.spec.js b/modules/item/back/methods/item/specs/getVisibleAvailable.spec.js
index 61bf6b3e7..adf9b7f76 100644
--- a/modules/item/back/methods/item/specs/getVisibleAvailable.spec.js
+++ b/modules/item/back/methods/item/specs/getVisibleAvailable.spec.js
@@ -1,7 +1,7 @@
const models = require('vn-loopback/server/server').models;
describe('item getVisibleAvailable()', () => {
- it('should check available visible for today', async() => {
+ it('should check available visible for tomorrow', async() => {
const tx = await models.Item.beginTransaction({});
const options = {transaction: tx};
@@ -9,6 +9,7 @@ describe('item getVisibleAvailable()', () => {
const itemFk = 1;
const warehouseFk = 1;
const dated = Date.vnNew();
+ dated.setDate(dated.getDate() + 1);
const result = await models.Item.getVisibleAvailable(itemFk, warehouseFk, dated, options);
diff --git a/modules/item/back/methods/item/specs/getWasteByItem.spec.js b/modules/item/back/methods/item/specs/getWasteByItem.spec.js
index 68ba02887..51ee28a33 100644
--- a/modules/item/back/methods/item/specs/getWasteByItem.spec.js
+++ b/modules/item/back/methods/item/specs/getWasteByItem.spec.js
@@ -6,13 +6,13 @@ describe('Item getWasteByItem()', () => {
const options = {transaction: tx};
try {
- const result = await models.Item.getWasteByItem('CharlesXavier', 'Cymbidium', options);
+ const result = await models.Item.getWasteByItem('buyer', 'Crisantemo', options);
const length = result.length;
const anyResult = result[Math.floor(Math.random() * Math.floor(length))];
- expect(anyResult.buyer).toEqual('CharlesXavier');
- expect(anyResult.family).toEqual('Cymbidium');
+ expect(anyResult.buyer).toEqual('buyer');
+ expect(anyResult.family).toEqual('Crisantemo');
expect(anyResult.lines.length).toBeGreaterThanOrEqual(2);
await tx.rollback();
diff --git a/modules/item/back/methods/item/specs/getWasteByWorker.spec.js b/modules/item/back/methods/item/specs/getWasteByWorker.spec.js
index 52f806bd3..fba35d716 100644
--- a/modules/item/back/methods/item/specs/getWasteByWorker.spec.js
+++ b/modules/item/back/methods/item/specs/getWasteByWorker.spec.js
@@ -11,9 +11,9 @@ describe('Item getWasteByWorker()', () => {
const length = result.length;
const anyResult = result[Math.floor(Math.random() * Math.floor(length))];
- expect(anyResult.buyer).toMatch(/(CharlesXavier|HankPym|DavidCharlesHaller)/);
+ expect(anyResult.buyer).toMatch(/(buyer|it)/);
expect(anyResult.total).toBeGreaterThanOrEqual(1000);
- expect(anyResult.lines.length).toBeGreaterThanOrEqual(3);
+ expect(anyResult.lines.length).toBeGreaterThanOrEqual(1);
await tx.rollback();
} catch (e) {
diff --git a/modules/item/back/models/item-shelving.json b/modules/item/back/models/item-shelving.json
index 893a1f81d..5df3b0703 100644
--- a/modules/item/back/models/item-shelving.json
+++ b/modules/item/back/models/item-shelving.json
@@ -1,9 +1,9 @@
{
"name": "ItemShelving",
"base": "VnModel",
- "mixins": {
- "Loggable": true
- },
+ "mixins": {
+ "Loggable": true
+ },
"options": {
"mysql": {
"table": "itemShelving"
@@ -17,27 +17,30 @@
},
"shelvingFk": {
"type": "string"
- },
+ },
"itemFk": {
"type": "number"
- },
+ },
"created": {
"type": "date"
- },
+ },
"grouping": {
"type": "number"
- },
- "isChecked": {
- "type": "boolean"
+ },
+ "isChecked": {
+ "type": "number"
},
"packing": {
"type": "number"
- },
- "visible": {
- "type": "number"
},
- "userFk": {
- "type": "number"
+ "visible": {
+ "type": "number"
+ },
+ "userFk": {
+ "type": "number"
+ },
+ "available": {
+ "type": "number"
}
},
"relations": {
@@ -56,6 +59,6 @@
"model": "Shelving",
"foreignKey": "shelvingFk",
"primaryKey": "code"
- }
+ }
}
-}
+}
\ No newline at end of file
diff --git a/modules/item/back/models/specs/itemMinimumQuantity.spec.js b/modules/item/back/models/specs/itemMinimumQuantity.spec.js
index 072a80f94..7d1e19def 100644
--- a/modules/item/back/models/specs/itemMinimumQuantity.spec.js
+++ b/modules/item/back/models/specs/itemMinimumQuantity.spec.js
@@ -2,9 +2,10 @@ const {models} = require('vn-loopback/server/server');
describe('itemMinimumQuantity model', () => {
const itemFk = 5;
+ const quantity = 100;
const warehouseFk = 60;
- beforeAll(async() => {
+ beforeEach(async() => {
await models.ItemMinimumQuantity.destroyAll({where: {itemFk: itemFk}});
});
@@ -12,7 +13,7 @@ describe('itemMinimumQuantity model', () => {
it('should create a new itemMinimumQuantity record', async() => {
const newRecord = {
itemFk: itemFk,
- quantity: 100,
+ quantity: quantity,
started: Date.vnNew(),
ended: new Date(Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 1)),
warehouseFk: warehouseFk
@@ -27,7 +28,7 @@ describe('itemMinimumQuantity model', () => {
it('should read an existing itemMinimumQuantity record', async() => {
const newRecord = {
itemFk: itemFk,
- quantity: 100,
+ quantity: quantity,
started: Date.vnNew(),
ended: new Date(Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 2)),
warehouseFk: warehouseFk
@@ -44,7 +45,7 @@ describe('itemMinimumQuantity model', () => {
it('should update an existing itemMinimumQuantity record', async() => {
const newRecord = {
itemFk: itemFk,
- quantity: 100,
+ quantity: quantity,
started: Date.vnNew(),
ended: new Date(Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 3)),
warehouseFk: warehouseFk
@@ -67,7 +68,7 @@ describe('itemMinimumQuantity model', () => {
it('should enforce unique constraint on itemFk, started, ended, and warehouseFk', async() => {
const newRecord = {
itemFk: itemFk,
- quantity: 100,
+ quantity: quantity,
started: Date.vnNew(),
ended: Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 5),
warehouseFk: warehouseFk
@@ -78,14 +79,14 @@ describe('itemMinimumQuantity model', () => {
await models.ItemMinimumQuantity.create(newRecord);
} catch (e) {
expect(e).toBeDefined();
- expect(e.code).toContain('ER_DUP_ENTRY');
+ expect(e.code).toContain('ER_SIGNAL_EXCEPTION');
}
});
it('should allow null values for ended and warehouseFk', async() => {
const newRecord = {
itemFk: itemFk,
- quantity: 100,
+ quantity: quantity,
started: Date.vnNew(),
ended: null,
warehouseFk: null
diff --git a/modules/item/front/diary/index.html b/modules/item/front/diary/index.html
index 481cec51a..7fb3b870e 100644
--- a/modules/item/front/diary/index.html
+++ b/modules/item/front/diary/index.html
@@ -1,121 +1,2 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Date
- Id
- State
- Reference
- Client
- In
- Out
- Balance
-
-
-
-
-
-
-
-
-
-
-
-
- {{::sale.shipped | date:'dd/MM/yyyy' }}
-
-
-
-
- {{::sale.origin | dashIfEmpty}}
-
-
- {{::sale.stateName | dashIfEmpty}}
- {{::sale.reference | dashIfEmpty}}
-
-
-
- {{::sale.name | dashIfEmpty}}
-
-
- {{::sale.name | dashIfEmpty}}
-
-
-
- {{::sale.invalue | dashIfEmpty}}
- {{::sale.out | dashIfEmpty}}
-
-
- {{::sale.balance | dashIfEmpty}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/modules/item/front/diary/index.js b/modules/item/front/diary/index.js
index 1d2e34a66..3d86b0b60 100644
--- a/modules/item/front/diary/index.js
+++ b/modules/item/front/diary/index.js
@@ -1,107 +1,21 @@
import ngModule from '../module';
import Section from 'salix/components/section';
-import './style.scss';
class Controller extends Section {
- constructor($element, $scope, $anchorScroll, $location) {
- super($element, $scope);
- this.$anchorScroll = $anchorScroll;
- this.$location = $location;
- let today = Date.vnNew();
- today.setHours(0, 0, 0, 0);
- this.today = today.toJSON();
+ constructor($element, $) {
+ super($element, $);
}
- get item() {
- return this._item;
- }
-
- set item(value) {
- this._item = value;
-
- this.filter = {
- where: {itemFk: this.$params.id}
- };
-
- this.$.$applyAsync(() => {
- if (this.$params.warehouseFk)
- this.warehouseFk = this.$params.warehouseFk;
- else if (value)
- this.warehouseFk = this.vnConfig.warehouseFk;
-
- if (this.$params.lineFk)
- this.lineFk = this.$params.lineFk;
- });
- }
-
- set warehouseFk(value) {
- if (value && value != this._warehouseFk) {
- this._warehouseFk = value;
- this.card.warehouseFk = value;
- this.filter.where.warehouseFk = this.warehouseFk;
-
- this.$.model.refresh();
- }
- }
-
- get warehouseFk() {
- return this._warehouseFk;
- }
-
- set date(value) {
- this._date = value;
- this.filter.where.date = value;
- this.filter.where.warehouseFk = this.warehouseFk;
-
- this.$.model.refresh();
- }
-
- get date() {
- return this._date;
- }
-
- set showOld(value) {
- this._showOld = value;
- if (!this._showOld) this.date = null;
- else this.date = new Date();
- }
-
- get showOld() {
- return this._showOld;
- }
-
- scrollToLine(lineFk) {
- this.$.$applyAsync(() => {
- const hashFk = this.lineFk || lineFk;
- const hash = `vnItemDiary-${hashFk}`;
- this.$location.hash(hash);
- this.$anchorScroll();
- });
- }
-
- showDescriptor(event, sale) {
- let descriptor = 'entryDescriptor';
- if (sale.isTicket)
- descriptor = 'ticketDescriptor';
-
- this.$[descriptor].show(event.target, sale.origin);
- }
-
- $onDestroy() {
- if (this.$state.getCurrentPath()[2].state.name === 'item')
- this.card.reload();
+ async $onInit() {
+ this.$state.go('item.card.summary', {id: this.$params.id});
+ window.location.href = await this.vnApp.getUrl(`item/${this.$params.id}/diary`);
}
}
-Controller.$inject = ['$element', '$scope', '$anchorScroll', '$location'];
-
ngModule.vnComponent('vnItemDiary', {
template: require('./index.html'),
controller: Controller,
bindings: {
item: '<'
- },
- require: {
- card: '?^vnItemCard'
}
});
diff --git a/modules/item/front/diary/index.spec.js b/modules/item/front/diary/index.spec.js
deleted file mode 100644
index a6302346d..000000000
--- a/modules/item/front/diary/index.spec.js
+++ /dev/null
@@ -1,99 +0,0 @@
-import './index.js';
-import crudModel from 'core/mocks/crud-model';
-
-describe('Item', () => {
- describe('Component vnItemDiary', () => {
- let $scope;
- let controller;
-
- beforeEach(ngModule('item'));
-
- beforeEach(inject(($componentController, $rootScope) => {
- $scope = $rootScope.$new();
- const $element = angular.element(' ');
- controller = $componentController('vnItemDiary', {$element, $scope});
- controller.$.model = crudModel;
- controller.$params = {id: 1};
- controller.card = {};
- }));
-
- describe('set item()', () => {
- it('should set warehouseFk property based on itemType warehouseFk', () => {
- jest.spyOn(controller.$, '$applyAsync');
- controller.vnConfig = {warehouseFk: 1};
- controller.item = {id: 1};
-
- expect(controller.$.$applyAsync).toHaveBeenCalledWith(jasmine.any(Function));
- $scope.$apply();
-
- expect(controller.warehouseFk).toEqual(1);
- expect(controller.item.id).toEqual(1);
- });
-
- it(`should set warehouseFk property based on url query warehouseFk`, () => {
- jest.spyOn(controller.$, '$applyAsync');
- controller.$params.warehouseFk = 4;
- controller.item = {id: 1, itemType: {warehouseFk: 1}};
-
- expect(controller.$.$applyAsync).toHaveBeenCalledWith(jasmine.any(Function));
- $scope.$apply();
-
- expect(controller.warehouseFk).toEqual(4);
- expect(controller.item.id).toEqual(1);
- });
- });
-
- describe('scrollToLine ()', () => {
- it('should assign $location then call anchorScroll using controller value', () => {
- jest.spyOn(controller, '$anchorScroll');
- controller.lineFk = 1;
- controller.scrollToLine('invalidValue');
-
- $scope.$apply();
-
- expect(controller.$location.hash()).toEqual(`vnItemDiary-${1}`);
- expect(controller.$anchorScroll).toHaveBeenCalledWith();
- });
-
- it('should assign $location then call anchorScroll using received value', () => {
- jest.spyOn(controller, '$anchorScroll');
- controller.lineFk = undefined;
- controller.scrollToLine(1);
-
- $scope.$apply();
-
- expect(controller.$location.hash()).toEqual(`vnItemDiary-${1}`);
- expect(controller.$anchorScroll).toHaveBeenCalledWith();
- });
- });
-
- describe('showDescriptor ()', () => {
- it('should call to the entryDescriptor show() method', () => {
- controller.$.entryDescriptor = {};
- controller.$.entryDescriptor.show = jest.fn();
-
- const $event = new Event('click');
- const target = document.createElement('div');
- target.dispatchEvent($event);
- const data = {id: 1, origin: 1};
- controller.showDescriptor($event, data);
-
- expect(controller.$.entryDescriptor.show).toHaveBeenCalledWith($event.target, data.origin);
- });
-
- it('should call to the ticketDescriptor show() method', () => {
- controller.$.ticketDescriptor = {};
- controller.$.ticketDescriptor.show = jest.fn();
-
- const $event = new Event('click');
- const target = document.createElement('div');
- target.dispatchEvent($event);
- const data = {id: 1, origin: 1, isTicket: true};
- controller.showDescriptor($event, data);
-
- expect(controller.$.ticketDescriptor.show).toHaveBeenCalledWith($event.target, data.origin);
- });
- });
- });
-});
-
diff --git a/modules/item/front/diary/locale/es.yml b/modules/item/front/diary/locale/es.yml
deleted file mode 100644
index a312da774..000000000
--- a/modules/item/front/diary/locale/es.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-In: Entrada
-Out: Salida
-Visible quantity: Cantidad visible
-Ticket/Entry: Ticket/Entrada
-Show what's before the inventory: Mostrar lo anterior al inventario
diff --git a/modules/item/front/diary/style.scss b/modules/item/front/diary/style.scss
deleted file mode 100644
index 0a6cafcb9..000000000
--- a/modules/item/front/diary/style.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-@import "variables";
-
-vn-item-diary {
- & > vn-vertical {
- display: block;
- }
- vn-horizontal {
- justify-content: center;
- }
- vn-autocomplete > div {
- width: 400px;
- }
- .balanceNegative .balance {
- color: $color-alert;
- }
- .isIn .in {
- color: $color-success;
- font-weight: bold;
- }
- .isToday .date {
- color: white;
- background-color: $color-main;
- }
- .truncate {
- max-width: 250px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .table-check{
- justify-content: center;
- }
-}
diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js
index 33b37d8a4..8ef51a0d1 100644
--- a/modules/monitor/back/methods/sales-monitor/salesFilter.js
+++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js
@@ -238,51 +238,8 @@ module.exports = Self => {
stmts.push(`SET SESSION optimizer_search_depth = @_optimizer_search_depth`);
- // Get client debt balance
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt');
- stmts.push(`
- CREATE TEMPORARY TABLE tmp.clientGetDebt
- (PRIMARY KEY (clientFk))
- ENGINE = MEMORY
- SELECT DISTINCT clientFk FROM tmp.filter`);
-
- stmt = new ParameterizedSQL('CALL client_getDebt(?)', [args.to]);
- stmts.push(stmt);
- stmts.push('DROP TEMPORARY TABLE tmp.clientGetDebt');
-
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.tickets');
stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.tickets
- (PRIMARY KEY (id))
- ENGINE = MEMORY
- SELECT f.*, r.risk AS debt
- FROM tmp.filter f
- LEFT JOIN tmp.risk r ON f.clientFk = r.clientFk`);
- stmts.push(stmt);
-
- // Sum risk to future
- stmts.push(`SET @client:= 0`);
- stmts.push('SET @risk := 0');
- stmts.push(`
- UPDATE tmp.tickets
- SET debt = IF(@client <> @client:= clientFk,
- -totalWithVat + @risk:= - debt + totalWithVat,
- -totalWithVat + @risk:= @risk + totalWithVat
- )
- ORDER BY clientFk, shipped DESC
- `);
-
- // Remove positive risks
- stmts.push(`
- UPDATE tmp.tickets t
- SET debt = 0
- WHERE t.debt + t.credit >= 0
- `);
-
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems');
-
- stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.sale_getProblems
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
(INDEX (ticketFk))
ENGINE = MEMORY
SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped
@@ -294,36 +251,30 @@ module.exports = Self => {
stmts.push('CALL ticket_getProblems(FALSE)');
- stmts.push(`
- INSERT INTO tmp.ticket_problems (ticketFk, risk, totalProblems)
- SELECT t.id, t.debt + t.credit AS risk, 1
- FROM tmp.tickets t
- WHERE (t.debt + t.credit) < 0
- ON DUPLICATE KEY UPDATE
- risk = t.debt + t.credit, totalProblems = totalProblems + 1
- `);
-
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getWarnings');
-
stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.sale_getWarnings
- (INDEX (ticketFk, agencyModeFk))
- ENGINE = MEMORY
- SELECT f.id ticketFk, f.agencyModeFk
- FROM tmp.filter f`);
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getWarnings
+ (INDEX (ticketFk, agencyModeFk))
+ ENGINE = MEMORY
+ SELECT f.id ticketFk, f.agencyModeFk
+ FROM tmp.filter f
+ `);
stmts.push(stmt);
stmts.push('CALL ticket_getWarnings()');
stmt = new ParameterizedSQL(`
- SELECT t.*,
- tp.*,
- ((tp.risk) + cc.riskTolerance < 0) AS hasHighRisk,
- tw.*
- FROM tmp.tickets t
- LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = t.id
- LEFT JOIN tmp.ticket_warnings tw ON tw.ticketFk = t.id
- JOIN clientConfig cc`);
+ UPDATE tmp.ticket_problems
+ SET risk = IF(hasRisk, risk, 0)
+ `);
+ stmts.push(stmt);
+
+ stmt = new ParameterizedSQL(`
+ SELECT *
+ FROM tmp.filter f
+ LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id
+ LEFT JOIN tmp.ticket_warnings tw ON tw.ticketFk = f.id
+ `);
+ stmts.push(stmt);
const hasProblems = args.problems;
if (hasProblems != undefined && (!args.from && !args.to))
@@ -359,23 +310,23 @@ module.exports = Self => {
switch (param) {
case 'search':
return /^\d+$/.test(value)
- ? {'t.id': {inq: value}}
- : {'t.nickname': {like: `%${value}%`}};
+ ? {'f.id': {inq: value}}
+ : {'f.nickname': {like: `%${value}%`}};
case 'nickname':
- return {'t.nickname': {like: `%${value}%`}};
+ return {'f.nickname': {like: `%${value}%`}};
case 'refFk':
- return {'t.refFk': value};
+ return {'f.refFk': value};
case 'provinceFk':
- return {'t.provinceFk': value};
+ return {'f.provinceFk': value};
case 'stateFk':
- return {'t.stateFk': value};
+ return {'f.stateFk': value};
case 'alertLevel':
- return {'t.alertLevel': value};
+ return {'f.alertLevel': value};
case 'pending':
if (value) {
- return {'t.alertLevelCode': {inq: [
+ return {'f.alertLevelCode': {inq: [
'FIXING',
'FREE',
'NOT_READY',
@@ -385,7 +336,7 @@ module.exports = Self => {
'WAITING_FOR_PAYMENT'
]}};
} else {
- return {'t.alertLevelCode': {inq: [
+ return {'f.alertLevelCode': {inq: [
'ON_PREPARATION',
'ON_CHECKING',
'CHECKED',
@@ -409,7 +360,7 @@ module.exports = Self => {
}
case 'agencyModeFk':
case 'warehouseFk':
- param = `t.${param}`;
+ param = `f.${param}`;
return {[param]: value};
}
});
@@ -422,14 +373,14 @@ module.exports = Self => {
stmt.merge(conn.makeLimit(filter));
const ticketsIndex = stmts.push(stmt) - 1;
- stmts.push(
- `DROP TEMPORARY TABLE
+ stmts.push(`
+ DROP TEMPORARY TABLE
tmp.filter,
tmp.ticket_problems,
tmp.sale_getProblems,
tmp.sale_getWarnings,
- tmp.ticket_warnings,
- tmp.risk`);
+ tmp.ticket_warnings
+ `);
const sql = ParameterizedSQL.join(stmts, ';');
const result = await conn.executeStmt(sql, myOptions);
diff --git a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
index c3da7f08b..9460addfa 100644
--- a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
+++ b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
@@ -39,7 +39,7 @@ describe('SalesMonitor salesFilter()', () => {
const filter = {};
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
- expect(result.length).toBeGreaterThan(11);
+ expect(result.length).toBeGreaterThan(10);
await tx.rollback();
} catch (e) {
@@ -68,7 +68,7 @@ describe('SalesMonitor salesFilter()', () => {
const filter = {};
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
- expect(result.length).toEqual(0);
+ expect(result.length).toEqual(4);
await tx.rollback();
} catch (e) {
@@ -218,8 +218,8 @@ describe('SalesMonitor salesFilter()', () => {
const firstTicket = result.shift();
const secondTicket = result.shift();
- expect(firstTicket.totalProblems).toEqual(1);
- expect(secondTicket.totalProblems).toEqual(1);
+ expect(firstTicket.totalProblems).toEqual(3);
+ expect(secondTicket.totalProblems).toEqual(3);
await tx.rollback();
} catch (e) {
diff --git a/modules/order/back/methods/order/filter.js b/modules/order/back/methods/order/filter.js
index 592ed11e6..758e8065c 100644
--- a/modules/order/back/methods/order/filter.js
+++ b/modules/order/back/methods/order/filter.js
@@ -59,6 +59,10 @@ module.exports = Self => {
arg: 'showEmpty',
type: 'boolean',
description: 'Show empty orders'
+ }, {
+ arg: 'sourceApp',
+ type: 'string',
+ description: 'Application'
}
],
returns: {
diff --git a/modules/order/back/methods/order/getItemTypeAvailable.js b/modules/order/back/methods/order/getItemTypeAvailable.js
index b84863953..fd7be5d57 100644
--- a/modules/order/back/methods/order/getItemTypeAvailable.js
+++ b/modules/order/back/methods/order/getItemTypeAvailable.js
@@ -44,16 +44,14 @@ module.exports = Self => {
]);
stmts.push(stmt);
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.item');
-
stmt = new ParameterizedSQL(
- `CREATE TEMPORARY TABLE tmp.item
+ `CREATE OR REPLACE TEMPORARY TABLE tmp.item
(PRIMARY KEY (itemFk)) ENGINE = MEMORY
SELECT DISTINCT
- i.id AS itemFk,
- it.id AS typeFk,
+ i.id itemFk,
+ it.id typeFk,
it.name,
- ic.name AS categoryName
+ ic.name categoryName
FROM tmp.availableCalc ac
JOIN cache.available a ON a.calc_id = ac.calcFk
JOIN vn.item i ON i.id = a.item_id
@@ -64,7 +62,7 @@ module.exports = Self => {
stmts.push(stmt);
stmt = new ParameterizedSQL(
- 'CALL vn.catalog_calculate(?, ?, ?,?)', [
+ 'CALL vn.catalog_calculate(?, ?, ?, ?)', [
order.landed,
order.addressFk,
order.agencyModeFk,
@@ -74,7 +72,7 @@ module.exports = Self => {
stmts.push(stmt);
stmt = new ParameterizedSQL(`
- SELECT i.typeFk AS id, i.name, i.categoryName
+ SELECT i.typeFk id, i.name, i.categoryName
FROM tmp.item i
JOIN tmp.ticketCalculateItem tci ON tci.itemFk = i.itemFk
GROUP BY i.typeFk`
@@ -85,7 +83,6 @@ module.exports = Self => {
const sql = ParameterizedSQL.join(stmts, ';');
const result = await Self.rawStmt(sql, myOptions);
-
return result[categoriesIndex];
};
};
diff --git a/modules/route/back/methods/route/cmrs.js b/modules/route/back/methods/route/cmrs.js
index 0c25cbca5..6f271a4cf 100644
--- a/modules/route/back/methods/route/cmrs.js
+++ b/modules/route/back/methods/route/cmrs.js
@@ -91,11 +91,13 @@ module.exports = Self => {
SELECT t.cmrFk,
t.id ticketFk,
t.routeFk,
- co.name country,
+ co.id countryFk,
+ co.name countryName,
t.clientFk,
IF(sub.id, TRUE, FALSE) hasCmrDms,
DATE(t.shipped) shipped,
- t.warehouseFk
+ t.warehouseFk,
+ w.name warehouseName
FROM ticket t
JOIN ticketState ts ON ts.ticketFk = t.id
JOIN state s ON s.id = ts.stateFk
diff --git a/modules/route/back/methods/route/filter.js b/modules/route/back/methods/route/filter.js
index 5b13a9004..925927cc8 100644
--- a/modules/route/back/methods/route/filter.js
+++ b/modules/route/back/methods/route/filter.js
@@ -91,25 +91,20 @@ module.exports = Self => {
let where = buildFilter(ctx.args, (param, value) => {
switch (param) {
case 'search':
- return {'r.id': value};
+ return {'id': value};
case 'from':
- return {'r.created': {gte: value}};
+ return {'created': {gte: value}};
case 'to':
- return {'r.created': {lte: value}};
- case 'm3':
- return {'r.m3': value};
+ return {'created': {lte: value}};
case 'description':
- return {'r.description': {like: `%${value}%`}};
+ return {'description': {like: `%${value}%`}};
+ case 'isOk':
+ case 'm3':
case 'warehouseFk':
- param = `v.${param}`;
- return {[param]: value};
case 'workerFk':
case 'vehicleFk':
case 'agencyModeFk':
- param = `r.${param}`;
return {[param]: value};
- case 'isOk':
- return {'r.isOk': value};
}
});
@@ -119,34 +114,38 @@ module.exports = Self => {
let stmt;
stmt = new ParameterizedSQL(
- `SELECT
- r.id,
- r.workerFk,
- r.created,
- r.vehicleFk,
- r.agencyModeFk,
- r.time,
- r.isOk,
- r.kmStart,
- r.kmEnd,
- r.started,
- r.finished,
- r.gestdocFk,
- r.cost,
- r.m3,
- r.description,
- am.name agencyName,
- u.name AS workerUserName,
- v.numberPlate AS vehiclePlateNumber,
- Date_format(r.time, '%H:%i') hour,
- eu.email
- FROM route r
- LEFT JOIN agencyMode am ON am.id = r.agencyModeFk
- LEFT JOIN agency a ON a.id = am.agencyFk
- LEFT JOIN vehicle v ON v.id = r.vehicleFk
- LEFT JOIN worker w ON w.id = r.workerFk
- LEFT JOIN account.user u ON u.id = w.id
- LEFT JOIN account.emailUser eu ON eu.userFk = r.workerFk`
+ `SELECT *
+ FROM(
+ SELECT
+ r.id,
+ r.workerFk,
+ r.created,
+ r.vehicleFk,
+ r.agencyModeFk,
+ r.time,
+ r.isOk,
+ r.kmStart,
+ r.kmEnd,
+ r.started,
+ r.finished,
+ r.gestdocFk,
+ r.cost,
+ r.m3,
+ r.description,
+ am.name agencyName,
+ u.name workerUserName,
+ v.numberPlate vehiclePlateNumber,
+ Date_format(r.time, '%H:%i') hour,
+ eu.email,
+ v.warehouseFk
+ FROM route r
+ LEFT JOIN agencyMode am ON am.id = r.agencyModeFk
+ LEFT JOIN agency a ON a.id = am.agencyFk
+ LEFT JOIN vehicle v ON v.id = r.vehicleFk
+ LEFT JOIN worker w ON w.id = r.workerFk
+ LEFT JOIN account.user u ON u.id = w.id
+ LEFT JOIN account.emailUser eu ON eu.userFk = r.workerFk
+ ) sub`
);
stmt.merge(conn.makeSuffix(filter));
diff --git a/modules/route/back/methods/route/getByWorker.js b/modules/route/back/methods/route/getByWorker.js
index 9243cfbfb..5d1881c20 100644
--- a/modules/route/back/methods/route/getByWorker.js
+++ b/modules/route/back/methods/route/getByWorker.js
@@ -28,11 +28,11 @@ module.exports = Self => {
if (canViewAll) {
const userConfig = await models.UserConfig.getUserConfig(ctx, myOptions);
filterGrant = {
- where: {'a.warehouseFk': userConfig.warehouseFk}
+ where: {'warehouseFk': userConfig.warehouseFk}
};
} else {
filterGrant = {
- where: {'r.workerFk': userId}
+ where: {'workerFk': userId}
};
}
@@ -46,16 +46,16 @@ module.exports = Self => {
and: [
{
or: [
- {'r.created': currentDate},
- {'r.created': nextDay}
+ {'created': currentDate},
+ {'created': nextDay}
]
}
]
},
order: [
- 'r.created ASC',
- 'r.time ASC',
- 'am.name ASC'
+ 'created ASC',
+ 'time ASC',
+ 'agencyName ASC'
]
};
diff --git a/modules/route/back/methods/route/getExpeditionSummary.js b/modules/route/back/methods/route/getExpeditionSummary.js
index 2bd2ca43a..afe54b030 100644
--- a/modules/route/back/methods/route/getExpeditionSummary.js
+++ b/modules/route/back/methods/route/getExpeditionSummary.js
@@ -48,7 +48,7 @@ module.exports = Self => {
LEFT JOIN vn.expeditionStateType est ON est.id = e.stateTypeFk
JOIN vn.agencyMode am ON am.id = r.agencyModeFk
JOIN vn.agency ag ON ag.id = am.agencyFk
- LEFT JOIN vn.userConfig uc ON uc.userFk = account.myUser_getId()
+ LEFT JOIN vn.userMultiConfig uc ON uc.userFk = account.myUser_getId()
WHERE t.routeFk = ?
GROUP BY t.addressFk, e.itemPackingTypeFk
) sub
diff --git a/modules/route/front/agency-term-search-panel/index.html b/modules/route/front/agency-term-search-panel/index.html
deleted file mode 100644
index fdd6b649b..000000000
--- a/modules/route/front/agency-term-search-panel/index.html
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
diff --git a/modules/route/front/agency-term-search-panel/index.js b/modules/route/front/agency-term-search-panel/index.js
deleted file mode 100644
index d5d8ea7a6..000000000
--- a/modules/route/front/agency-term-search-panel/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-class Controller extends SearchPanel {
- get filter() {
- return this.$.filter;
- }
-
- set filter(value = {}) {
- this.$.filter = value;
- }
-}
-
-ngModule.vnComponent('vnAgencyTermSearchPanel', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/agency-term-search-panel/locale/es.yml b/modules/route/front/agency-term-search-panel/locale/es.yml
deleted file mode 100644
index 74336a03b..000000000
--- a/modules/route/front/agency-term-search-panel/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-Search by invoiceIn id or autonomous name: Buscar por id de recibida o por nombre de autónomo
-Search autonomous: Buscar autónomos
\ No newline at end of file
diff --git a/modules/route/front/agency-term/createInvoiceIn/index.html b/modules/route/front/agency-term/createInvoiceIn/index.html
deleted file mode 100644
index 8f270378f..000000000
--- a/modules/route/front/agency-term/createInvoiceIn/index.html
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/route/front/agency-term/createInvoiceIn/index.js b/modules/route/front/agency-term/createInvoiceIn/index.js
deleted file mode 100644
index 0198ab80f..000000000
--- a/modules/route/front/agency-term/createInvoiceIn/index.js
+++ /dev/null
@@ -1,120 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-import './style.scss';
-import UserError from 'core/lib/user-error';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.dms = {
- files: [],
- hasFile: false,
- hasFileAttached: false
- };
- }
-
- get route() {
- return this._route;
- }
-
- set route(value) {
- this._route = value;
-
- this.setDefaultParams();
- this.getAllowedContentTypes();
- }
-
- $onChanges() {
- if (this.$params && this.$params.q)
- this.params = JSON.parse(this.$params.q);
- }
-
- getAllowedContentTypes() {
- this.$http.get('DmsContainers/allowedContentTypes').then(res => {
- const contentTypes = res.data.join(', ');
- this.allowedContentTypes = contentTypes;
- });
- }
-
- get contentTypesInfo() {
- return this.$t('ContentTypesInfo', {
- allowedContentTypes: this.allowedContentTypes
- });
- }
-
- setDefaultParams() {
- const params = {filter: {
- where: {code: 'invoiceIn'}
- }};
- this.$http.get('DmsTypes/findOne', {params}).then(res => {
- const dmsType = res.data && res.data;
- const companyId = this.vnConfig.companyFk;
- const warehouseId = this.vnConfig.warehouseFk;
- const defaultParams = {
- warehouseId: warehouseId,
- companyId: companyId,
- dmsTypeId: dmsType.id,
- description: this.params.supplierName
- };
-
- this.dms = Object.assign(this.dms, defaultParams);
- });
- }
-
- onSubmit() {
- if (this.dms.files.length > 1) throw new UserError('You cannot attach more than one document');
- const query = `dms/uploadFile`;
- const options = {
- method: 'POST',
- url: query,
- params: this.dms,
- headers: {
- 'Content-Type': undefined
- },
- transformRequest: files => {
- const formData = new FormData();
- formData.append(files[0].name, files[0]);
- return formData;
- },
- data: this.dms.files
- };
- this.$http(options).then(res => {
- if (res) {
- const addedDms = res.data;
- this.$.watcher.updateOriginalData();
-
- const params = {
- rows: this.params.rows,
- dms: addedDms
- };
-
- this.$http.post('AgencyTerms/createInvoiceIn', params)
- .then(() => {
- this.$state.go('route.agencyTerm.index');
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
- });
- }
-
- onFileChange(files) {
- let hasFileAttached = false;
-
- if (files.length > 0)
- hasFileAttached = true;
-
- this.$.$applyAsync(() => {
- this.dms.hasFileAttached = hasFileAttached;
- });
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnAgencyTermCreateInvoiceIn', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- route: '<'
- }
-});
diff --git a/modules/route/front/agency-term/createInvoiceIn/index.spec.js b/modules/route/front/agency-term/createInvoiceIn/index.spec.js
deleted file mode 100644
index d6d9883a7..000000000
--- a/modules/route/front/agency-term/createInvoiceIn/index.spec.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import './index';
-import watcher from 'core/mocks/watcher.js';
-
-describe('AgencyTerm', () => {
- describe('Component vnAgencyTermCreateInvoiceIn', () => {
- let controller;
- let $scope;
- let $httpBackend;
- let $httpParamSerializer;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => {
- $scope = $rootScope.$new();
- $httpBackend = _$httpBackend_;
- $httpParamSerializer = _$httpParamSerializer_;
- const $element = angular.element(' ');
- controller = $componentController('vnAgencyTermCreateInvoiceIn', {$element});
- controller._route = {
- id: 1
- };
- }));
-
- describe('$onChanges()', () => {
- it('should update the params data when $params.q is defined', () => {
- controller.$params = {q: '{"supplierName": "Plants SL","rows": null}'};
-
- const params = {q: '{"supplierName": "Plants SL", "rows": null}'};
- const json = JSON.parse(params.q);
-
- controller.$onChanges();
-
- expect(controller.params).toEqual(json);
- });
- });
-
- describe('route() setter', () => {
- it('should set the ticket data and then call setDefaultParams() and getAllowedContentTypes()', () => {
- jest.spyOn(controller, 'setDefaultParams');
- jest.spyOn(controller, 'getAllowedContentTypes');
- controller.route = {
- id: 1
- };
-
- expect(controller.route).toBeDefined();
- expect(controller.setDefaultParams).toHaveBeenCalledWith();
- expect(controller.getAllowedContentTypes).toHaveBeenCalledWith();
- });
- });
-
- describe('getAllowedContentTypes()', () => {
- it('should make an HTTP GET request to get the allowed content types', () => {
- const expectedResponse = ['image/png', 'image/jpg'];
- $httpBackend.expect('GET', `DmsContainers/allowedContentTypes`).respond(expectedResponse);
- controller.getAllowedContentTypes();
- $httpBackend.flush();
-
- expect(controller.allowedContentTypes).toBeDefined();
- expect(controller.allowedContentTypes).toEqual('image/png, image/jpg');
- });
- });
-
- describe('setDefaultParams()', () => {
- it('should perform a GET query and define the dms property on controller', () => {
- const params = {filter: {
- where: {code: 'invoiceIn'}
- }};
- const serializedParams = $httpParamSerializer(params);
- $httpBackend.expect('GET', `DmsTypes/findOne?${serializedParams}`).respond({id: 1, code: 'invoiceIn'});
- controller.params = {supplierName: 'Plants SL'};
- controller.setDefaultParams();
- $httpBackend.flush();
-
- expect(controller.dms).toBeDefined();
- expect(controller.dms.dmsTypeId).toEqual(1);
- });
- });
-
- describe('onSubmit()', () => {
- it('should make an HTTP POST request to save the form data', () => {
- controller.$.watcher = watcher;
-
- jest.spyOn(controller.$.watcher, 'updateOriginalData');
- const files = [{id: 1, name: 'MyFile'}];
- controller.dms = {files};
- const serializedParams = $httpParamSerializer(controller.dms);
- const query = `dms/uploadFile?${serializedParams}`;
- controller.params = {rows: null};
-
- $httpBackend.expect('POST', query).respond({});
- $httpBackend.expect('POST', 'AgencyTerms/createInvoiceIn').respond({});
- controller.onSubmit();
- $httpBackend.flush();
- });
- });
-
- describe('onFileChange()', () => {
- it('should set dms hasFileAttached property to true if has any files', () => {
- const files = [{id: 1, name: 'MyFile'}];
- controller.onFileChange(files);
- $scope.$apply();
-
- expect(controller.dms.hasFileAttached).toBeTruthy();
- });
- });
- });
-});
diff --git a/modules/route/front/agency-term/createInvoiceIn/style.scss b/modules/route/front/agency-term/createInvoiceIn/style.scss
deleted file mode 100644
index 73f136fc1..000000000
--- a/modules/route/front/agency-term/createInvoiceIn/style.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-vn-ticket-request {
- .vn-textfield {
- margin: 0!important;
- max-width: 100px;
- }
-}
-
diff --git a/modules/route/front/agency-term/index/index.html b/modules/route/front/agency-term/index/index.html
deleted file mode 100644
index 0d8ea40e7..000000000
--- a/modules/route/front/agency-term/index/index.html
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Id
-
-
- Date
-
-
- Agency route
-
-
- Agency Agreement
-
-
- Packages
-
-
- M3
-
-
- Km
-
-
- Price
-
-
- Received
-
-
- Autonomous
-
-
-
-
-
-
-
-
-
-
-
-
- {{::agencyTerm.routeFk}}
-
-
- {{::agencyTerm.created | date:'dd/MM/yyyy'}}
- {{::agencyTerm.agencyModeName | dashIfEmpty}}
- {{::agencyTerm.agencyAgreement | dashIfEmpty}}
- {{::agencyTerm.packages | dashIfEmpty}}
- {{::agencyTerm.m3 | dashIfEmpty}}
- {{::agencyTerm.kmTotal | dashIfEmpty}}
- {{::agencyTerm.price | dashIfEmpty}}
-
-
- {{::agencyTerm.invoiceInFk}}
-
-
-
-
- {{::agencyTerm.supplierName}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/route/front/agency-term/index/index.js b/modules/route/front/agency-term/index/index.js
deleted file mode 100644
index 6c3bafc9a..000000000
--- a/modules/route/front/agency-term/index/index.js
+++ /dev/null
@@ -1,121 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
-
- this.smartTableOptions = {
- activeButtons: {
- search: true
- },
- columns: [
- {
- field: 'agencyModeFk',
- autocomplete: {
- url: 'AgencyModes',
- showField: 'name',
- valueField: 'id'
- }
- },
- {
- field: 'agencyFk',
- autocomplete: {
- url: 'Agencies',
- showField: 'name',
- valueField: 'id'
- }
- },
- {
- field: 'supplierFk',
- autocomplete: {
- url: 'Suppliers',
- showField: 'name',
- valueField: 'name',
- }
- }
- ]
- };
- }
-
- exprBuilder(param, value) {
- switch (param) {
- case 'agencyModeFk':
- return {'a.agencyModeFk': value};
- case 'supplierFk':
- return {'a.supplierName': value};
- case 'routeFk':
- return {'a.routeFk': value};
- case 'created':
- case 'agencyFk':
- case 'packages':
- case 'm3':
- case 'kmTotal':
- case 'price':
- case 'invoiceInFk':
- return {[`a.${param}`]: value};
- }
- }
-
- get checked() {
- const agencyTerms = this.$.model.data || [];
- const checkedAgencyTerms = [];
- for (let agencyTerm of agencyTerms) {
- if (agencyTerm.checked)
- checkedAgencyTerms.push(agencyTerm);
- }
-
- return checkedAgencyTerms;
- }
-
- get totalChecked() {
- return this.checked.length;
- }
-
- get totalPrice() {
- let totalPrice = 0;
-
- if (this.checked.length > 0) {
- for (let agencyTerm of this.checked)
- totalPrice += agencyTerm.price;
-
- return totalPrice;
- }
-
- return totalPrice;
- }
-
- preview(route) {
- this.routeSelected = route;
- this.$.summary.show();
- }
-
- createInvoiceIn() {
- const rowsToCreateInvoiceIn = [];
- const supplierFk = this.checked[0].supplierFk;
-
- for (let agencyTerm of this.checked) {
- let hasSameSupplier = supplierFk == agencyTerm.supplierFk;
- if (hasSameSupplier) {
- rowsToCreateInvoiceIn.push({
- routeFk: agencyTerm.routeFk,
- supplierFk: agencyTerm.supplierFk,
- created: agencyTerm.created,
- totalPrice: this.totalPrice});
- } else {
- this.vnApp.showError(this.$t('Two autonomous cannot be counted at the same time'));
- return false;
- }
- }
- const params = JSON.stringify({
- supplierName: this.checked[0].supplierName,
- rows: rowsToCreateInvoiceIn
- });
- this.$state.go('route.agencyTerm.createInvoiceIn', {q: params});
- }
-}
-
-ngModule.vnComponent('vnAgencyTermIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/agency-term/index/index.spec.js b/modules/route/front/agency-term/index/index.spec.js
deleted file mode 100644
index 55c40daa5..000000000
--- a/modules/route/front/agency-term/index/index.spec.js
+++ /dev/null
@@ -1,94 +0,0 @@
-import './index.js';
-import crudModel from 'core/mocks/crud-model';
-
-describe('AgencyTerm', () => {
- describe('Component vnAgencyTermIndex', () => {
- let controller;
- let $window;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject(($componentController, _$window_) => {
- $window = _$window_;
- const $element = angular.element(' ');
- controller = $componentController('vnAgencyTermIndex', {$element});
- controller.$.model = crudModel;
- controller.$.model.data = [
- {supplierFk: 1, totalPrice: null},
- {supplierFk: 1},
- {supplierFk: 2}
- ];
- }));
-
- describe('checked() getter', () => {
- it('should return the checked lines', () => {
- const data = controller.$.model.data;
- data[0].checked = true;
-
- const checkedRows = controller.checked;
-
- const firstCheckedRow = checkedRows[0];
-
- expect(firstCheckedRow.supplierFk).toEqual(1);
- });
- });
-
- describe('totalCheked() getter', () => {
- it('should return the total checked lines', () => {
- const data = controller.$.model.data;
- data[0].checked = true;
-
- const checkedRows = controller.totalChecked;
-
- expect(checkedRows).toEqual(1);
- });
- });
-
- describe('preview()', () => {
- it('should show the summary dialog', () => {
- controller.$.summary = {show: () => {}};
- jest.spyOn(controller.$.summary, 'show');
-
- let event = new MouseEvent('click', {
- view: $window,
- bubbles: true,
- cancelable: true
- });
- const route = {id: 1};
-
- controller.preview(event, route);
-
- expect(controller.$.summary.show).toHaveBeenCalledWith();
- });
- });
-
- describe('createInvoiceIn()', () => {
- it('should throw an error if more than one autonomous are checked', () => {
- jest.spyOn(controller.vnApp, 'showError');
- const data = controller.$.model.data;
- data[0].checked = true;
- data[2].checked = true;
-
- controller.createInvoiceIn();
-
- expect(controller.vnApp.showError).toHaveBeenCalled();
- });
-
- it('should call the function go() on $state to go to the file management', () => {
- jest.spyOn(controller.$state, 'go');
- const data = controller.$.model.data;
- data[0].checked = true;
-
- controller.createInvoiceIn();
-
- delete data[0].checked;
- const params = JSON.stringify({
- supplierName: data[0].supplierName,
- rows: [data[0]]
- });
-
- expect(controller.$state.go).toHaveBeenCalledWith('route.agencyTerm.createInvoiceIn', {q: params});
- });
- });
- });
-});
diff --git a/modules/route/front/agency-term/locale/es.yml b/modules/route/front/agency-term/locale/es.yml
deleted file mode 100644
index 0f6797188..000000000
--- a/modules/route/front/agency-term/locale/es.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-Agency route: Agencia ruta
-Agency Agreement: Acuerdo agencia
-Autonomous: Autónomos
-Two autonomous cannot be counted at the same time: Dos autonónomos no pueden ser contabilizados al mismo tiempo
-You cannot attach more than one document: No puedes adjuntar más de un documento
\ No newline at end of file
diff --git a/modules/route/front/basic-data/index.html b/modules/route/front/basic-data/index.html
deleted file mode 100644
index 7f9aef0d0..000000000
--- a/modules/route/front/basic-data/index.html
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
diff --git a/modules/route/front/basic-data/index.js b/modules/route/front/basic-data/index.js
deleted file mode 100644
index f051e23c5..000000000
--- a/modules/route/front/basic-data/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- $onInit() {
- this.$http.post(`Vehicles/sorted`, {warehouseFk: this.vnConfig.warehouseFk})
- .then(res => {
- this.vehicles = res.data;
- });
- }
-
- onSubmit() {
- this.$.watcher.submit().then(() =>
- this.card.reload()
- );
- }
-}
-
-ngModule.vnComponent('vnRouteBasicData', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- route: '<'
- },
- require: {
- card: '^vnRouteCard'
- }
-});
diff --git a/modules/route/front/basic-data/locale/es.yml b/modules/route/front/basic-data/locale/es.yml
deleted file mode 100644
index 9dcacbe9a..000000000
--- a/modules/route/front/basic-data/locale/es.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-Date finished: Fecha fin
-Date started: Fecha inicio
-Km start: Km de inicio
-Km end: Km de fin
-Description: Descripción
-Hour started: Hora inicio
-Hour finished: Hora fin
-Is served: Se ha servido
diff --git a/modules/route/front/card/index.html b/modules/route/front/card/index.html
deleted file mode 100644
index 9e0ae4e8c..000000000
--- a/modules/route/front/card/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/modules/route/front/card/index.js b/modules/route/front/card/index.js
deleted file mode 100644
index 07b5a547c..000000000
--- a/modules/route/front/card/index.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import ngModule from '../module';
-import ModuleCard from 'salix/components/module-card';
-
-class Controller extends ModuleCard {
- reload() {
- let filter = {
- fields: [
- 'id',
- 'workerFk',
- 'agencyModeFk',
- 'created',
- 'm3',
- 'warehouseFk',
- 'description',
- 'vehicleFk',
- 'kmStart',
- 'kmEnd',
- 'started',
- 'finished',
- 'cost',
- 'zoneFk',
- 'isOk'
- ],
- include: [
- {
- relation: 'agencyMode',
- scope: {
- fields: ['id', 'name']
- }
- }, {
- relation: 'vehicle',
- scope: {
- fields: ['id', 'm3']
- }
- }, {
- relation: 'zone',
- scope: {
- fields: ['id', 'name']
- }
- },
- {
- relation: 'worker',
- scope: {
- fields: ['id'],
- include: {
- relation: 'user',
- scope: {
- fields: ['id'],
- include: {
- relation: 'emailUser',
- scope: {
- fields: ['email']
- }
- }
- }
- }
- }
- }
- ]
- };
-
- this.$http.get(`Routes/${this.$params.id}`, {filter})
- .then(res => this.route = res.data);
- }
-}
-
-ngModule.vnComponent('vnRouteCard', {
- template: require('./index.html'),
- controller: Controller
-});
-
diff --git a/modules/route/front/create/index.html b/modules/route/front/create/index.html
deleted file mode 100644
index de341220e..000000000
--- a/modules/route/front/create/index.html
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
diff --git a/modules/route/front/create/index.js b/modules/route/front/create/index.js
deleted file mode 100644
index c81394c10..000000000
--- a/modules/route/front/create/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onSubmit() {
- this.$.watcher.submit().then(
- res => {
- this.$http.post(`Routes/${res.data.id}/updateWorkCenter`, null)
- .then(() => {
- this.$state.go('route.card.summary', {id: res.data.id});
- });
- }
- );
- }
-}
-
-ngModule.vnComponent('vnRouteCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/index.js b/modules/route/front/index.js
index 803fc1045..0f2208862 100644
--- a/modules/route/front/index.js
+++ b/modules/route/front/index.js
@@ -1,19 +1,6 @@
export * from './module';
import './main';
-import './index/';
-import './search-panel';
import './descriptor';
import './descriptor-popover';
import './summary';
-import './card';
-import './create';
-import './basic-data';
-import './log';
-import './tickets';
-import './agency-term/index';
-import './agency-term/createInvoiceIn';
-import './agency-term-search-panel';
-import './ticket-popup';
-import './sms';
-import './roadmap';
diff --git a/modules/route/front/index/index.html b/modules/route/front/index/index.html
deleted file mode 100644
index 9384af6be..000000000
--- a/modules/route/front/index/index.html
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Id
-
-
- Worker
-
-
- Agency
-
-
- Vehicle
-
-
- Date
-
-
- m³
-
-
- Description
-
-
- Hour started
-
-
- Hour finished
-
-
-
-
-
-
-
-
-
-
- {{::route.id | dashIfEmpty}}
-
-
-
- {{name}} - {{nickname}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{::route.m3 | dashIfEmpty}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Clone
-
-
diff --git a/modules/route/front/index/index.js b/modules/route/front/index/index.js
deleted file mode 100644
index bb32e1f13..000000000
--- a/modules/route/front/index/index.js
+++ /dev/null
@@ -1,151 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor($element, $, vnReport) {
- super($element, $);
- this.vnReport = vnReport;
- this.droppableElement = 'a.vn-tr';
- }
-
- preview(route) {
- this.routeSelected = route;
- this.$.summary.show();
- }
-
- showTicketPopup(route) {
- this.routeSelected = route;
- this.$.ticketPopup.show();
- }
-
- get checked() {
- const rows = this.$.model.data || [];
- const checkedRows = [];
- for (let row of rows) {
- if (row.checked)
- checkedRows.push(row);
- }
-
- return checkedRows;
- }
-
- get totalChecked() {
- return this.checked.length;
- }
-
- showRouteReport() {
- const routesIds = [];
- const access_token = this.vnToken.tokenMultimedia;
-
- for (let route of this.checked)
- routesIds.push(route.id);
- const stringRoutesIds = routesIds.join(',');
-
- if (this.checked.length <= 1) {
- const url = `api/Routes/${stringRoutesIds}/driver-route-pdf?access_token=${access_token}`;
- window.open(url, '_blank');
- } else {
- const serializedParams = this.$httpParamSerializer({
- access_token,
- id: stringRoutesIds
- });
- const url = `api/Routes/downloadZip?${serializedParams}`;
- window.open(url, '_blank');
- }
- }
-
- openClonationDialog() {
- this.$.clonationDialog.show();
- this.createdDate = Date.vnNew();
- }
-
- cloneSelectedRoutes() {
- try {
- if (!this.createdDate)
- throw new Error(`The date can't be empty`);
-
- const routesIds = [];
- for (let route of this.checked)
- routesIds.push(route.id);
-
- return this.$http.post('Routes/clone', {ids: routesIds, created: this.createdDate}).then(() => {
- this.$.model.refresh();
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- }
- }
-
- onDrop($event) {
- const target = $event.target;
- const droppable = target.closest(this.droppableElement);
- const ticketId = $event.dataTransfer.getData('Text');
- const routeId = droppable.id;
-
- if (isNaN(ticketId)) {
- const regexp = new RegExp(/\/ticket\/([0-9]+)\//i);
- const matches = ticketId.match(regexp);
-
- if (matches && matches.length)
- this.insert(routeId, matches[1]);
- else
- this.vnApp.showError(this.$t('Ticket not found'));
- }
-
- if (!isNaN(ticketId))
- this.insert(routeId, ticketId);
- }
-
- insert(routeId, ticketId) {
- routeId = parseInt(routeId);
- ticketId = parseInt(ticketId);
-
- const query = `Routes/${routeId}/insertTicket`;
- return this.$http.patch(query, {ticketId}).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.$.model.refresh();
- }).catch(error => {
- if (error.status == 404)
- return this.vnApp.showError(this.$t('Ticket not found'));
- throw error;
- });
- }
-
- updateAttributes(route) {
- if (route.started == null || route.finished == null)
- return this.vnApp.showError(this.$t('You must select a valid time'));
- if (route.created == null)
- return this.vnApp.showError(this.$t('You must select a valid date'));
- const params = {
- workerFk: route.workerFk,
- agencyModeFk: route.agencyModeFk,
- vehicleFk: route.vehicleFk,
- created: route.created,
- description: route.description,
- started: route.started,
- finished: route.finished
- };
- const query = `Routes/${route.id}/`;
- this.$http.patch(query, params).then(res => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-
- markAsServed() {
- const routes = [];
- for (let route of this.checked)
- routes.push(route.id);
-
- const params = {isOk: true};
- for (let routeId of routes)
- this.$http.patch(`Routes/${routeId}`, params);
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnReport'];
-
-ngModule.vnComponent('vnRouteIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/index/index.spec.js b/modules/route/front/index/index.spec.js
deleted file mode 100644
index 399ece714..000000000
--- a/modules/route/front/index/index.spec.js
+++ /dev/null
@@ -1,156 +0,0 @@
-import './index.js';
-import crudModel from 'core/mocks/crud-model';
-
-describe('Component vnRouteIndex', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject(($componentController, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- const $element = angular.element(' ');
- controller = $componentController('vnRouteIndex', {$element});
- controller.$.model = crudModel;
- controller.$.model.data = [{id: 1, checked: true}, {id: 2}, {id: 3}];
- }));
-
- describe('checked() getter', () => {
- it('should return the checked lines', () => {
- const data = controller.$.model.data;
- data[0].checked = true;
- data[2].checked = true;
-
- const checkedRows = controller.checked;
-
- const firstCheckedRow = checkedRows[0];
- const secondCheckedRow = checkedRows[1];
-
- expect(firstCheckedRow.id).toEqual(1);
- expect(secondCheckedRow.id).toEqual(3);
- });
- });
-
- describe('totalCheked() getter', () => {
- it('should return the total checked lines', () => {
- const data = controller.$.model.data;
- data[0].checked = true;
-
- const checkedRows = controller.totalChecked;
-
- expect(checkedRows).toEqual(1);
- });
- });
-
- describe('showRouteReport()', () => {
- it('should call to the vnReport show method', () => {
- jest.spyOn(window, 'open').mockReturnThis();
-
- const data = controller.$.model.data;
- data[0].checked = true;
- data[2].checked = true;
-
- controller.showRouteReport();
-
- expect(window.open).toHaveBeenCalled();
- });
- });
-
- describe('cloneSelectedRoutes()', () => {
- it('should perform an http request to Routes/clone', () => {
- controller.createdDate = Date.vnNew();
-
- $httpBackend.expect('POST', 'Routes/clone').respond();
- controller.cloneSelectedRoutes();
- $httpBackend.flush();
- });
- });
-
- describe('onDrop()', () => {
- it('should call the insert method when dragging a ticket number', () => {
- jest.spyOn(controller, 'insert');
-
- const routeId = '1';
- const expectedTicketId = '16';
- const draggedElement = '16';
- const droppable = document.createElement('a');
- droppable.setAttribute('id', 1);
- droppable.classList.add('vn-tr');
-
- const $event = {
- dataTransfer: {
- getData: () => draggedElement
- },
- target: droppable
- };
- controller.onDrop($event);
-
- expect(controller.insert).toHaveBeenCalledWith(routeId, expectedTicketId);
- });
-
- it('should call the insert method when dragging a ticket link', () => {
- jest.spyOn(controller, 'insert');
-
- const routeId = '1';
- const expectedTicketId = '11';
- const draggedElement = 'http://arkamcity.com/#!/ticket/11/summary';
- const droppable = document.createElement('a');
- droppable.setAttribute('id', 1);
- droppable.classList.add('vn-tr');
-
- const $event = {
- dataTransfer: {
- getData: () => draggedElement
- },
- target: droppable
- };
- controller.onDrop($event);
-
- expect(controller.insert).toHaveBeenCalledWith(routeId, expectedTicketId);
- });
-
- it('should throw an error when dragging an invalid ticket link', () => {
- jest.spyOn(controller.vnApp, 'showError');
-
- const draggedElement = 'http://arkamcity.com/#!/item/11/summary';
- const droppable = document.createElement('a');
- droppable.setAttribute('id', 1);
- droppable.classList.add('vn-tr');
- const $event = {
- dataTransfer: {
- getData: () => draggedElement
- },
- target: droppable
- };
- controller.onDrop($event);
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith('Ticket not found');
- });
- });
-
- describe('insert()', () => {
- it('should perform a HTTP patch query and then call both refresh and showSuccess methods', () => {
- jest.spyOn(controller.$.model, 'refresh').mockReturnThis();
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- const routeId = 1;
- const ticketId = 11;
- const data = {ticketId};
- $httpBackend.expect('PATCH', `Routes/1/insertTicket`, data).respond();
- controller.insert(routeId, ticketId);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.$.model.refresh).toHaveBeenCalledWith();
- });
- });
-
- describe('markAsServed()', () => {
- it('should perform a HTTP patch query', () => {
- const data = {isOk: true};
- $httpBackend.expect('PATCH', `Routes/1`, data).respond();
- controller.markAsServed();
- $httpBackend.flush();
- });
- });
-});
diff --git a/modules/route/front/index/locale/es.yml b/modules/route/front/index/locale/es.yml
deleted file mode 100644
index 3db84d81e..000000000
--- a/modules/route/front/index/locale/es.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-Vehicle: Vehículo
-Download selected routes as PDF: Descargar rutas seleccionadas como PDF
-Clone selected routes: Clonar rutas seleccionadas
-The date can't be empty: La fecha no puede estar vacía
-Starting date: Fecha de inicio
-Hour started: Hora inicio
-Hour finished: Hora fin
-Go to route: Ir a la ruta
-You must select a valid time: Debe seleccionar una hora válida
-You must select a valid date: Debe seleccionar una fecha válida
-Mark as served: Marcar como servidas
-Retrieving data from the routes: Recuperando datos de las rutas
-Send SMS to all clients: Mandar sms a todos los clientes de las rutas
\ No newline at end of file
diff --git a/modules/route/front/locale/en.yml b/modules/route/front/locale/en.yml
deleted file mode 100644
index 0e5302b14..000000000
--- a/modules/route/front/locale/en.yml
+++ /dev/null
@@ -1 +0,0 @@
-Unlink zone: Unlink zone {{zoneName}} from agency {{agencyName}}
\ No newline at end of file
diff --git a/modules/route/front/locale/es.yml b/modules/route/front/locale/es.yml
deleted file mode 100644
index 74ab2cd61..000000000
--- a/modules/route/front/locale/es.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-Routes: Rutas
-Search routes by id: Buscar rutas por identificador
-New route: Nueva ruta
-route: ruta
-Unlink zone: Desvincular zona {{zoneName}} de agencia {{agencyName}}
\ No newline at end of file
diff --git a/modules/route/front/log/index.html b/modules/route/front/log/index.html
deleted file mode 100644
index 7df2e30ae..000000000
--- a/modules/route/front/log/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/route/front/log/index.js b/modules/route/front/log/index.js
deleted file mode 100644
index c1a7052a9..000000000
--- a/modules/route/front/log/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-ngModule.vnComponent('vnRouteLog', {
- template: require('./index.html'),
- controller: Section,
-});
diff --git a/modules/route/front/main/index.html b/modules/route/front/main/index.html
index f1bed84ff..e69de29bb 100644
--- a/modules/route/front/main/index.html
+++ b/modules/route/front/main/index.html
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/route/front/main/index.js b/modules/route/front/main/index.js
index 8c57bbad6..a567e3072 100644
--- a/modules/route/front/main/index.js
+++ b/modules/route/front/main/index.js
@@ -2,36 +2,12 @@ import ngModule from '../module';
import ModuleMain from 'salix/components/module-main';
export default class Route extends ModuleMain {
- $postLink() {
- const to = Date.vnNew();
- to.setDate(to.getDate() + 1);
- to.setHours(0, 0, 0, 0);
-
- const from = Date.vnNew();
- from.setDate(from.getDate());
- from.setHours(0, 0, 0, 0);
-
- this.filterParams = {from, to};
- this.$.model.applyFilter(null, this.filterParams);
+ constructor($element, $) {
+ super($element, $);
}
-
- fetchParams($params) {
- const hasEntries = Object.entries($params).length;
- if (!hasEntries)
- $params.scopeDays = 1;
-
- if (typeof $params.scopeDays === 'number') {
- const from = Date.vnNew();
- from.setHours(0, 0, 0, 0);
-
- const to = new Date(from.getTime());
- to.setDate(to.getDate() + $params.scopeDays);
- to.setHours(23, 59, 59, 999);
-
- Object.assign($params, {from, to});
- }
-
- return $params;
+ async $onInit() {
+ this.$state.go('home');
+ window.location.href = await this.vnApp.getUrl(`route/`);
}
}
diff --git a/modules/route/front/main/index.spec.js b/modules/route/front/main/index.spec.js
deleted file mode 100644
index 0c16a7b1f..000000000
--- a/modules/route/front/main/index.spec.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import './index.js';
-
-describe('Route Component vnRoute', () => {
- let controller;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject($componentController => {
- let $element = angular.element(`
`);
- controller = $componentController('vnRoute', {$element});
- }));
-
- describe('fetchParams()', () => {
- it('should return a range of dates with passed scope days', () => {
- let params = controller.fetchParams({
- scopeDays: 2
- });
- const from = Date.vnNew();
- from.setHours(0, 0, 0, 0);
- const to = new Date(from.getTime());
- to.setDate(to.getDate() + params.scopeDays);
- to.setHours(23, 59, 59, 999);
-
- const expectedParams = {
- from,
- scopeDays: params.scopeDays,
- to
- };
-
- expect(params).toEqual(expectedParams);
- });
-
- it('should return default value for scope days', () => {
- let params = controller.fetchParams({
- scopeDays: 1
- });
-
- expect(params.scopeDays).toEqual(1);
- });
-
- it('should return the given scope days', () => {
- let params = controller.fetchParams({
- scopeDays: 2
- });
-
- expect(params.scopeDays).toEqual(2);
- });
- });
-});
diff --git a/modules/route/front/roadmap/basic-data/index.html b/modules/route/front/roadmap/basic-data/index.html
deleted file mode 100644
index 28c67eb47..000000000
--- a/modules/route/front/roadmap/basic-data/index.html
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
diff --git a/modules/route/front/roadmap/basic-data/index.js b/modules/route/front/roadmap/basic-data/index.js
deleted file mode 100644
index d5b39b76e..000000000
--- a/modules/route/front/roadmap/basic-data/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- onSubmit() {
- this.$.watcher.submit();
- }
-}
-
-ngModule.component('vnRoadmapBasicData', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- roadmap: '<'
- }
-});
diff --git a/modules/route/front/roadmap/card/index.html b/modules/route/front/roadmap/card/index.html
deleted file mode 100644
index 97ca40f95..000000000
--- a/modules/route/front/roadmap/card/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/modules/route/front/roadmap/card/index.js b/modules/route/front/roadmap/card/index.js
deleted file mode 100644
index ff2d13616..000000000
--- a/modules/route/front/roadmap/card/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import ngModule from '../../module';
-import ModuleCard from 'salix/components/module-card';
-
-class Controller extends ModuleCard {
- reload() {
- const filter = {
- include: [
- {relation: 'supplier'}
- ]
- };
- this.$http.get(`Roadmaps/${this.$params.id}`, {filter})
- .then(res => this.roadmap = res.data);
- }
-}
-
-ngModule.vnComponent('vnRoadmapCard', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/roadmap/create/index.html b/modules/route/front/roadmap/create/index.html
deleted file mode 100644
index f5a26566e..000000000
--- a/modules/route/front/roadmap/create/index.html
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
diff --git a/modules/route/front/roadmap/create/index.js b/modules/route/front/roadmap/create/index.js
deleted file mode 100644
index 7e638da94..000000000
--- a/modules/route/front/roadmap/create/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-class Controller extends Section {
- constructor($element, $, $transclude, vnReport, vnEmail) {
- super($element, $, $transclude);
- this.roadmap = {etd: Date.vnNew()};
- }
-
- onSubmit() {
- this.$.watcher.submit().then(
- res => this.$state.go('route.roadmap.card.summary', {id: res.data.id})
- );
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnRoadmapCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/roadmap/create/style.scss b/modules/route/front/roadmap/create/style.scss
deleted file mode 100644
index 8ee7ecb09..000000000
--- a/modules/route/front/roadmap/create/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-vn-ticket-request {
- .vn-textfield {
- margin: 0!important;
- max-width: 100px;
- }
-}
diff --git a/modules/route/front/roadmap/descriptor/index.html b/modules/route/front/roadmap/descriptor/index.html
deleted file mode 100644
index 92ae8eab1..000000000
--- a/modules/route/front/roadmap/descriptor/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
- Delete roadmap
-
-
-
-
-
-
-
-
-
-
- {{$ctrl.roadmap.supplier.nickname}}
-
-
-
-
-
-
-
-
-
diff --git a/modules/route/front/roadmap/descriptor/index.js b/modules/route/front/roadmap/descriptor/index.js
deleted file mode 100644
index 2846b073a..000000000
--- a/modules/route/front/roadmap/descriptor/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import ngModule from '../../module';
-import Descriptor from 'salix/components/descriptor';
-
-class Controller extends Descriptor {
- get roadmap() {
- return this.entity;
- }
-
- set roadmap(value) {
- this.entity = value;
- }
-
- onDelete() {
- return this.$http.delete(`Roadmaps/${this.roadmap.id}`)
- .then(() => this.$state.go('route.roadmap'))
- .then(() => this.vnApp.showSuccess(this.$t('Roadmap removed')));
- }
-}
-
-ngModule.component('vnRoadmapDescriptor', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- roadmap: '<'
- }
-});
diff --git a/modules/route/front/roadmap/descriptor/locale/es.yml b/modules/route/front/roadmap/descriptor/locale/es.yml
deleted file mode 100644
index 376209694..000000000
--- a/modules/route/front/roadmap/descriptor/locale/es.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-Delete roadmap: Eliminar troncal
-The roadmap will be removed: La troncal será eliminada
-Roadmap removed: Troncal eliminada
diff --git a/modules/route/front/roadmap/index.js b/modules/route/front/roadmap/index.js
deleted file mode 100644
index 91b782a9b..000000000
--- a/modules/route/front/roadmap/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import './main';
-import './index/';
-import './summary';
-import './card';
-import './descriptor';
-import './create';
-import './basic-data';
-import './search-panel';
-import './stops';
diff --git a/modules/route/front/roadmap/index/index.html b/modules/route/front/roadmap/index/index.html
deleted file mode 100644
index 6f8cbecc4..000000000
--- a/modules/route/front/roadmap/index/index.html
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Roadmap
- ETD
- Carrier
- Plate
- Price
- Observations
-
-
-
-
-
-
-
-
-
- {{::roadmap.name}}
- {{::roadmap.etd | date:'dd/MM/yyyy HH:mm'}}
-
-
- {{::roadmap.supplier.nickname}}
-
-
- {{::roadmap.tractorPlate | dashIfEmpty}}
- {{::roadmap.price | currency: 'EUR':2 | dashIfEmpty}}
- {{::roadmap.observations | dashIfEmpty}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Clone
-
-
-
-
diff --git a/modules/route/front/roadmap/index/index.js b/modules/route/front/roadmap/index/index.js
deleted file mode 100644
index c5f5ef9d1..000000000
--- a/modules/route/front/roadmap/index/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- get checked() {
- const roadmaps = this.$.model.data || [];
- const checkedRoadmap = [];
- for (let roadmap of roadmaps) {
- if (roadmap.checked)
- checkedRoadmap.push(roadmap);
- }
-
- return checkedRoadmap;
- }
-
- get totalChecked() {
- return this.checked.length;
- }
-
- preview(roadmap) {
- this.roadmapSelected = roadmap;
- this.$.summary.show();
- }
-
- openClonationDialog() {
- this.$.clonationDialog.show();
- this.etd = Date.vnNew();
- }
-
- cloneSelectedRoadmaps() {
- try {
- if (!this.etd)
- throw new Error(`The date can't be empty`);
-
- const roadmapsIds = [];
- for (let roadmap of this.checked)
- roadmapsIds.push(roadmap.id);
-
- return this.$http.post('Roadmaps/clone', {ids: roadmapsIds, etd: this.etd}).then(() => {
- this.$.model.refresh();
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- }
- }
-
- deleteRoadmaps() {
- for (const roadmap of this.checked) {
- this.$http.delete(`Roadmaps/${roadmap.id}`)
- .then(() => this.$.model.refresh())
- .then(() => this.vnApp.showSuccess(this.$t('Roadmaps removed')));
- }
- }
-}
-
-ngModule.vnComponent('vnRoadmapIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/roadmap/index/locale/es.yml b/modules/route/front/roadmap/index/locale/es.yml
deleted file mode 100644
index dd93eac6e..000000000
--- a/modules/route/front/roadmap/index/locale/es.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-Delete roadmap(s): Eliminar troncal(es)
-Selected roadmaps will be removed: Los troncales seleccionados serán eliminados
-Roadmaps removed: Troncales eliminados
diff --git a/modules/route/front/roadmap/locale/es.yml b/modules/route/front/roadmap/locale/es.yml
deleted file mode 100644
index e136eca31..000000000
--- a/modules/route/front/roadmap/locale/es.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-Roadmaps: Troncales
-Roadmap: Troncal
-Driver name: Nombre conductor
-Plate: Matrícula
-Price: Precio
-Observations: Observaciones
-Clone selected roadmaps: Clonar troncales seleccionadas
-Select the estimated time of departure (ETD): Seleccione la hora estimada de salida (ETD)
-Create roadmap: Crear troncal
-Tractor plate: Matrícula tractor
-Trailer plate: Matrícula trailer
-Carrier: Transportista
-ETD date: Fecha ETD
-ETD hour: Hora ETD
diff --git a/modules/route/front/roadmap/main/index.html b/modules/route/front/roadmap/main/index.html
deleted file mode 100644
index 3a8eb2599..000000000
--- a/modules/route/front/roadmap/main/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/modules/route/front/roadmap/main/index.js b/modules/route/front/roadmap/main/index.js
deleted file mode 100644
index e7b3366f2..000000000
--- a/modules/route/front/roadmap/main/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import ngModule from '../../module';
-import ModuleMain from 'salix/components/module-main';
-
-export default class Roadmap extends ModuleMain {
- constructor($element, $) {
- super($element, $);
-
- this.include = {
- relation: 'supplier',
- scope: {
- fields: ['nickname']
- }
- };
- }
-
- $postLink() {
- const from = Date.vnNew();
- from.setHours(0, 0, 0, 0);
-
- const to = Date.vnNew();
- to.setHours(23, 59, 59, 999);
-
- this.filterParams = {
- from: from,
- to: to
- };
-
- this.$.model.addFilter({where: {
- and: [
- {etd: {gte: from}},
- {etd: {lte: to}}
- ]
- }});
- }
-
- exprBuilder(param, value) {
- switch (param) {
- case 'search':
- return /^\d+$/.test(value)
- ? {id: value}
- : {name: {like: `%${value}%`}};
- case 'from':
- return {etd: {gte: value}};
- case 'to':
- return {etd: {lte: value}};
- case 'supplierFk':
- case 'price':
- return {[param]: value};
- case 'tractorPlate':
- case 'trailerPlate':
- case 'phone':
- case 'driverName':
- return {[param]: {like: `%${value}%`}};
- }
- }
-}
-
-ngModule.vnComponent('vnRoadmap', {
- controller: Roadmap,
- template: require('./index.html')
-});
diff --git a/modules/route/front/roadmap/main/locale/es.yml b/modules/route/front/roadmap/main/locale/es.yml
deleted file mode 100644
index 78342bce8..000000000
--- a/modules/route/front/roadmap/main/locale/es.yml
+++ /dev/null
@@ -1 +0,0 @@
-Search roadmap by id or trunk: Buscar troncales por id o troncal
diff --git a/modules/route/front/roadmap/search-panel/index.html b/modules/route/front/roadmap/search-panel/index.html
deleted file mode 100644
index 53fd37344..000000000
--- a/modules/route/front/roadmap/search-panel/index.html
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
diff --git a/modules/route/front/roadmap/search-panel/index.js b/modules/route/front/roadmap/search-panel/index.js
deleted file mode 100644
index 499027d14..000000000
--- a/modules/route/front/roadmap/search-panel/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-ngModule.component('vnRoadmapSearchPanel', {
- template: require('./index.html'),
- controller: SearchPanel
-});
diff --git a/modules/route/front/roadmap/stops/index.html b/modules/route/front/roadmap/stops/index.html
deleted file mode 100644
index 82f30c326..000000000
--- a/modules/route/front/roadmap/stops/index.html
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
diff --git a/modules/route/front/roadmap/stops/index.js b/modules/route/front/roadmap/stops/index.js
deleted file mode 100644
index 075a1c8a4..000000000
--- a/modules/route/front/roadmap/stops/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- add() {
- const filter = {
- fields: ['etd']
- };
- this.$http.get(`Roadmaps/${this.$params.id}`, {filter})
- .then(res => {
- this.roadmap = res.data;
-
- const eta = new Date(this.roadmap.etd);
- eta.setDate(eta.getDate() + 1);
-
- this.$.model.insert({
- roadmapFk: this.$params.id,
- eta: eta
- });
- });
- }
-
- onSubmit() {
- this.$.watcher.check();
- this.$.model.save().then(() => {
- this.$.watcher.notifySaved();
- this.$.watcher.updateOriginalData();
- this.$.model.refresh();
- });
- }
-}
-
-ngModule.component('vnRoadmapStops', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- roadmap: '<'
- }
-});
diff --git a/modules/route/front/roadmap/stops/locale/es.yml b/modules/route/front/roadmap/stops/locale/es.yml
deleted file mode 100644
index 1db275949..000000000
--- a/modules/route/front/roadmap/stops/locale/es.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-Remove stop: Eliminar parada
-Add stop: Añadir parada
-ETA date: Fecha ETA
-ETA hour: Hora ETA
diff --git a/modules/route/front/roadmap/summary/index.html b/modules/route/front/roadmap/summary/index.html
deleted file mode 100644
index abf5ff90a..000000000
--- a/modules/route/front/roadmap/summary/index.html
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
- {{summary.id}} - {{summary.name}}
-
-
-
-
-
- {{summary.supplier.nickname}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Stops
-
-
-
-
-
-
-
- Wharehouse
- ETA
-
-
-
-
- {{roadmapStop.warehouse.name}}
- {{roadmapStop.eta | date:'dd/MM/yyyy HH:mm'}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Confirm
-
-
diff --git a/modules/route/front/roadmap/summary/index.js b/modules/route/front/roadmap/summary/index.js
deleted file mode 100644
index 46abe5ca2..000000000
--- a/modules/route/front/roadmap/summary/index.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import ngModule from '../../module';
-import Component from 'core/lib/component';
-import './style.scss';
-
-class Controller extends Component {
- set roadmap(value) {
- this._roadmap = value;
- this.$.summary = null;
- if (!value) return;
-
- this.loadData();
- }
-
- get roadmap() {
- return this._roadmap;
- }
-
- loadData() {
- const filter = {
- include: [
- {relation: 'supplier'},
- {relation: 'worker'},
- {relation: 'roadmapStop',
- scope: {
- include: [
- {relation: 'warehouse'}
- ]
- }}
- ]
- };
- this.$http.get(`Roadmaps/${this.roadmap.id}`, {filter})
- .then(res => this.$.summary = res.data);
- }
-
- getETD() {
- const eta = new Date(this.roadmap.etd);
- eta.setDate(eta.getDate() + 1);
-
- this.roadmapStop = {eta: eta};
- }
-
- onAddAccept() {
- try {
- const data = {
- roadmapFk: this.roadmap.id,
- warehouseFk: this.roadmapStop.warehouseFk,
- eta: this.roadmapStop.eta,
- description: this.roadmapStop.description
- };
-
- this.$http.post(`RoadmapStops`, data)
- .then(() => {
- this.loadData();
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- }
- }
-}
-
-ngModule.component('vnRoadmapSummary', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- roadmap: '<'
- }
-});
diff --git a/modules/route/front/roadmap/summary/locale/es.yml b/modules/route/front/roadmap/summary/locale/es.yml
deleted file mode 100644
index f2d82438a..000000000
--- a/modules/route/front/roadmap/summary/locale/es.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-Stops: Paradas
-Wharehouse: Almacén
-You must fill all the fields: Debes rellenar todos los campos
diff --git a/modules/route/front/roadmap/summary/style.scss b/modules/route/front/roadmap/summary/style.scss
deleted file mode 100644
index 743500cef..000000000
--- a/modules/route/front/roadmap/summary/style.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-@import "variables";
-
-vn-roadmap-summary .summary {
- a:not(vn-link-phone a) {
- display: flex;
- align-items: center;
- height: 18.328px;
- }
-}
diff --git a/modules/route/front/routes.json b/modules/route/front/routes.json
index 3b866581d..00fedc259 100644
--- a/modules/route/front/routes.json
+++ b/modules/route/front/routes.json
@@ -6,18 +6,7 @@
"dependencies": ["client", "worker", "ticket", "supplier", "invoiceIn"],
"menus": {
"main": [
- {"state": "route.index", "icon": "icon-delivery"},
- {"state": "route.agencyTerm.index", "icon": "icon-agency-term"},
- {"state": "route.roadmap", "icon": "icon-trailer"}
- ],
- "card": [
- {"state": "route.card.basicData", "icon": "settings"},
- {"state": "route.card.tickets", "icon": "icon-ticket"},
- {"state": "route.card.log", "icon": "history"}
- ],
- "roadmap": [
- {"state": "route.roadmap.card.basicData", "icon": "settings"},
- {"state": "route.roadmap.card.stops", "icon": "icon-lines"}
+ {"state": "route.index", "icon": "icon-delivery"}
]
},
"routes": [
@@ -33,108 +22,6 @@
"state": "route.index",
"component": "vn-route-index",
"description": "Routes"
- }, {
- "url": "/create",
- "state": "route.create",
- "component": "vn-route-create",
- "description": "New route"
- }, {
- "url": "/:id",
- "state": "route.card",
- "abstract": true,
- "component": "vn-route-card"
- }, {
- "url": "/agency-term?q",
- "abstract": true,
- "state": "route.agencyTerm",
- "component": "ui-view"
- }, {
- "url": "/index",
- "state": "route.agencyTerm.index",
- "component": "vn-agency-term-index",
- "description": "Autonomous",
- "acl": ["administrative"]
- },{
- "url": "/createInvoiceIn?q",
- "state": "route.agencyTerm.createInvoiceIn",
- "component": "vn-agency-term-create-invoice-in",
- "description": "File management",
- "params": {
- "route": "$ctrl.route"
- },
- "acl": ["administrative"]
- }, {
- "url": "/summary",
- "state": "route.card.summary",
- "component": "vn-route-summary",
- "description": "Summary",
- "params": {
- "route": "$ctrl.route"
- }
- }, {
- "url": "/basic-data",
- "state": "route.card.basicData",
- "component": "vn-route-basic-data",
- "description": "Basic data",
- "params": {
- "route": "$ctrl.route"
- },
- "acl": ["delivery"]
- }, {
- "url" : "/log",
- "state": "route.card.log",
- "component": "vn-route-log",
- "description": "Log",
- "acl": ["delivery"]
- }, {
- "url": "/tickets",
- "state": "route.card.tickets",
- "component": "vn-route-tickets",
- "description": "Tickets",
- "params": {
- "route": "$ctrl.route"
- },
- "acl": ["delivery"]
- }, {
- "url": "/roadmap?q",
- "state": "route.roadmap",
- "component": "vn-roadmap",
- "description": "Roadmaps"
- }, {
- "url": "/create",
- "state": "route.roadmap.create",
- "component": "vn-roadmap-create",
- "description": "Create roadmap"
- },{
- "url": "/:id",
- "state": "route.roadmap.card",
- "component": "vn-roadmap-card",
- "abstract": true,
- "description": "Detail"
- },{
- "url": "/summary",
- "state": "route.roadmap.card.summary",
- "component": "vn-roadmap-summary",
- "description": "Summary",
- "params": {
- "roadmap": "$ctrl.roadmap"
- }
- },{
- "url": "/basic-data",
- "state": "route.roadmap.card.basicData",
- "component": "vn-roadmap-basic-data",
- "description": "Basic data",
- "params": {
- "roadmap": "$ctrl.roadmap"
- }
- }, {
- "url": "/stops",
- "state": "route.roadmap.card.stops",
- "component": "vn-roadmap-stops",
- "description": "Stops",
- "params": {
- "route": "$ctrl.roadmap"
- }
}
]
}
diff --git a/modules/route/front/search-panel/index.html b/modules/route/front/search-panel/index.html
deleted file mode 100644
index f3d392580..000000000
--- a/modules/route/front/search-panel/index.html
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
diff --git a/modules/route/front/search-panel/index.js b/modules/route/front/search-panel/index.js
deleted file mode 100644
index b5abbd94a..000000000
--- a/modules/route/front/search-panel/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-class Controller extends SearchPanel {
- constructor($, $element) {
- super($, $element);
- this.filter = this.$.filter;
- }
-
- get from() {
- return this._from;
- }
-
- set from(value) {
- this._from = value;
- this.filter.scopeDays = null;
- }
-
- get to() {
- return this._to;
- }
-
- set to(value) {
- this._to = value;
- this.filter.scopeDays = null;
- }
-
- get scopeDays() {
- return this._scopeDays;
- }
-
- set scopeDays(value) {
- this._scopeDays = value;
-
- this.filter.from = null;
- this.filter.to = null;
- }
-}
-
-ngModule.vnComponent('vnRouteSearchPanel', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/route/front/search-panel/index.spec.js b/modules/route/front/search-panel/index.spec.js
deleted file mode 100644
index ae15e16e4..000000000
--- a/modules/route/front/search-panel/index.spec.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import './index';
-
-describe('Route Component vnRouteSearchPanel', () => {
- let controller;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject($componentController => {
- controller = $componentController('vnRouteSearchPanel', {$element: null});
- controller.$t = () => {};
- controller.filter = {};
- }));
-
- describe('from() setter', () => {
- it('should clear the scope days when setting the from property', () => {
- controller.filter.scopeDays = 1;
-
- controller.from = Date.vnNew();
-
- expect(controller.filter.scopeDays).toBeNull();
- expect(controller.from).toBeDefined();
- });
- });
-
- describe('to() setter', () => {
- it('should clear the scope days when setting the to property', () => {
- controller.filter.scopeDays = 1;
-
- controller.to = Date.vnNew();
-
- expect(controller.filter.scopeDays).toBeNull();
- expect(controller.to).toBeDefined();
- });
- });
-
- describe('scopeDays() setter', () => {
- it('should clear the date range when setting the scopeDays property', () => {
- controller.filter.from = Date.vnNew();
- controller.filter.to = Date.vnNew();
-
- controller.scopeDays = 1;
-
- expect(controller.filter.from).toBeNull();
- expect(controller.filter.to).toBeNull();
- expect(controller.scopeDays).toBeDefined();
- });
- });
-});
diff --git a/modules/route/front/sms/index.html b/modules/route/front/sms/index.html
deleted file mode 100644
index 0d7dd7c11..000000000
--- a/modules/route/front/sms/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{'Characters remaining' | translate}}:
-
- {{$ctrl.charactersRemaining()}}
-
-
-
-
-
-
-
- Send
-
-
\ No newline at end of file
diff --git a/modules/route/front/sms/index.js b/modules/route/front/sms/index.js
deleted file mode 100644
index f466adea7..000000000
--- a/modules/route/front/sms/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import ngModule from '../module';
-import Component from 'core/lib/component';
-import './style.scss';
-
-class Controller extends Component {
- open() {
- this.$.SMSDialog.show();
- }
-
- charactersRemaining() {
- const element = this.$.message;
- const value = element.input.value;
-
- const maxLength = 160;
- const textAreaLength = new Blob([value]).size;
- return maxLength - textAreaLength;
- }
-
- onResponse() {
- try {
- if (!this.sms.destination)
- throw new Error(`The destination can't be empty`);
- if (!this.sms.message)
- throw new Error(`The message can't be empty`);
- if (this.charactersRemaining() < 0)
- throw new Error(`The message it's too long`);
-
- this.$http.post(`Routes/sendSms`, this.sms).then(res => {
- this.vnApp.showMessage(this.$t('SMS sent'));
-
- if (res.data) this.emit('send', {response: res.data});
- });
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- return false;
- }
- return true;
- }
-}
-
-ngModule.vnComponent('vnRouteSms', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- sms: '<',
- }
-});
diff --git a/modules/route/front/sms/index.spec.js b/modules/route/front/sms/index.spec.js
deleted file mode 100644
index 8bf35e673..000000000
--- a/modules/route/front/sms/index.spec.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import './index';
-
-describe('Route', () => {
- describe('Component vnRouteSms', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- let $scope = $rootScope.$new();
- const $element = angular.element(' ');
- controller = $componentController('vnRouteSms', {$element, $scope});
- controller.$.message = {
- input: {
- value: 'My SMS'
- }
- };
- }));
-
- describe('onResponse()', () => {
- it('should perform a POST query and show a success snackbar', () => {
- let params = {destinationFk: 1101, destination: 111111111, message: 'My SMS'};
- controller.sms = {destinationFk: 1101, destination: 111111111, message: 'My SMS'};
-
- jest.spyOn(controller.vnApp, 'showMessage');
- $httpBackend.expect('POST', `Routes/sendSms`, params).respond(200, params);
-
- controller.onResponse();
- $httpBackend.flush();
-
- expect(controller.vnApp.showMessage).toHaveBeenCalledWith('SMS sent');
- });
-
- it('should call onResponse without the destination and show an error snackbar', () => {
- controller.sms = {destinationFk: 1101, message: 'My SMS'};
-
- jest.spyOn(controller.vnApp, 'showError');
-
- controller.onResponse();
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`The destination can't be empty`);
- });
-
- it('should call onResponse without the message and show an error snackbar', () => {
- controller.sms = {destinationFk: 1101, destination: 222222222};
-
- jest.spyOn(controller.vnApp, 'showError');
-
- controller.onResponse();
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`The message can't be empty`);
- });
- });
-
- describe('charactersRemaining()', () => {
- it('should return the characters remaining in a element', () => {
- controller.$.message = {
- input: {
- value: 'My message 0€'
- }
- };
-
- let result = controller.charactersRemaining();
-
- expect(result).toEqual(145);
- });
- });
- });
-});
diff --git a/modules/route/front/sms/locale/es.yml b/modules/route/front/sms/locale/es.yml
deleted file mode 100644
index 0168a6eb6..000000000
--- a/modules/route/front/sms/locale/es.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-Send SMS to the selected tickets: Enviar SMS a los tickets seleccionados
-Routes to notify: Rutas a notificar
-Message: Mensaje
-SMS sent!: ¡SMS enviado!
-Characters remaining: Carácteres restantes
-The destination can't be empty: El destinatario no puede estar vacio
-The message can't be empty: El mensaje no puede estar vacio
-The message it's too long: El mensaje es demasiado largo
-Special characters like accents counts as a multiple: Carácteres especiales como los acentos cuentan como varios
\ No newline at end of file
diff --git a/modules/route/front/sms/style.scss b/modules/route/front/sms/style.scss
deleted file mode 100644
index 84571a5f4..000000000
--- a/modules/route/front/sms/style.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-@import "variables";
-
-.SMSDialog {
- min-width: 400px
-}
\ No newline at end of file
diff --git a/modules/route/front/ticket-popup/index.html b/modules/route/front/ticket-popup/index.html
deleted file mode 100644
index 5046d5e43..000000000
--- a/modules/route/front/ticket-popup/index.html
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
- Tickets to add
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Ticket
- Client
- Province
-
-
- Population
-
-
- PC
- Address
- Zone
-
-
-
-
-
-
-
-
-
-
- {{::ticket.id}}
-
-
-
-
- {{::ticket.nickname}}
-
-
- {{::ticket.address.province.name}}
- {{::ticket.address.city}}
- {{::ticket.address.postalCode}}
- {{::ticket.address.street}}
-
- {{::ticket.zone.name}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/route/front/ticket-popup/index.js b/modules/route/front/ticket-popup/index.js
deleted file mode 100644
index 8fd7b5d71..000000000
--- a/modules/route/front/ticket-popup/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import ngModule from '../module';
-import Dialog from 'core/components/dialog';
-import './style.scss';
-
-class Controller extends Dialog {
- constructor($element, $, $transclude) {
- super($element, $, $transclude);
- }
-
- getSelectedTickets(tickets) {
- const selectedTickets = [];
-
- if (tickets) {
- for (let i = 0; i < tickets.length; i++) {
- if (tickets[i].checked)
- selectedTickets.push(tickets[i]);
- }
- }
- return selectedTickets;
- }
-
- updateVolume() {
- let url = `Routes/${this.route.id}/updateVolume`;
- this.$http.post(url).then(() => {
- this.$.model.refresh();
- if (this.parentReload)
- this.parentReload();
- });
- }
-
- setTicketsRoute() {
- const tickets = this.getSelectedTickets(this.possibleTickets);
- if (tickets.length === 0) return;
-
- const updates = [];
-
- for (let ticket of tickets) {
- delete ticket.checked;
- const update = {
- where: {id: ticket.id},
- data: {routeFk: this.route.id}
- };
-
- updates.push(update);
- }
-
- const data = {creates: [], updates: updates, deletes: []};
- return this.$http.post(`Tickets/crud`, data)
- .then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.updateVolume();
- this.hide();
- });
- }
-
- unlinkZone(ticket) {
- const params = {
- agencyModeId: this.route.agencyModeFk,
- zoneId: ticket.zoneFk,
- };
-
- const query = `Routes/unlink`;
- this.$http.post(query, params).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.$.model.refresh();
- this.hide();
- });
- }
-}
-Controller.$inject = ['$element', '$scope', '$transclude'];
-
-ngModule.vnComponent('vnRouteTicketPopup', {
- slotTemplate: require('./index.html'),
- controller: Controller,
- bindings: {
- route: '<',
- model: '',
- parentReload: '&'
- }
-});
diff --git a/modules/route/front/ticket-popup/index.spec.js b/modules/route/front/ticket-popup/index.spec.js
deleted file mode 100644
index b4313024b..000000000
--- a/modules/route/front/ticket-popup/index.spec.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/* eslint max-len: ["error", { "code": 150 }]*/
-import './index';
-
-describe('Route', () => {
- let controller;
- let $httpBackend;
- let $scope;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- $scope = $rootScope.$new();
- const $element = angular.element(' ');
- const $transclude = {
- $$boundTransclude: {
- $$slots: []
- }
- };
- controller = $componentController('vnRouteTicketPopup', {$element, $scope, $transclude});
- controller.route = {id: 1};
- controller.$.model = {
- refresh: () => {},
- remove: () => {}
- };
- controller.card = {reload: () => {}};
- }));
-
- describe('unlink()', () => {
- it('should call the route unlink endpoint with the agency and zone ids', () => {
- controller.$.model = {refresh: jest.fn()};
- jest.spyOn(controller.vnApp, 'showSuccess');
- jest.spyOn(controller, 'hide');
-
- controller.route = {
- agencyModeFk: 1
- };
-
- const ticket = {
- zoneFk: 2,
- };
- const params = {
- agencyModeId: controller.route.agencyModeFk,
- zoneId: ticket.zoneFk,
- };
-
- $httpBackend.expectPOST(`Routes/unlink`, params).respond('ok');
- controller.unlinkZone(ticket);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.hide).toHaveBeenCalled();
- expect(controller.$.model.refresh).toHaveBeenCalledWith();
- });
- });
-
- describe('setTicketsRoute()', () => {
- it('should perform a POST query to add tickets to the route', () => {
- controller.$.model = {refresh: jest.fn()};
- jest.spyOn(controller.vnApp, 'showSuccess');
- jest.spyOn(controller, 'hide');
-
- controller.route = {id: 111};
-
- controller.possibleTickets = [
- {id: 2, checked: false},
- {id: 3, checked: true},
- {id: 4, checked: false},
- {id: 5, checked: true},
- ];
-
- $httpBackend.whenPOST(`Routes/${controller.route.id}/updateVolume`).respond(200);
- $httpBackend.expectPOST('Tickets/crud').respond();
- controller.setTicketsRoute();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.hide).toHaveBeenCalled();
- expect(controller.$.model.refresh).toHaveBeenCalledWith();
- });
- });
-});
diff --git a/modules/route/front/ticket-popup/style.scss b/modules/route/front/ticket-popup/style.scss
deleted file mode 100644
index 77fa48f20..000000000
--- a/modules/route/front/ticket-popup/style.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-@import "variables";
-
-.dialog{
- padding: $float-spacing
-}
\ No newline at end of file
diff --git a/modules/route/front/tickets/__snapshots__/index.spec.js.snap b/modules/route/front/tickets/__snapshots__/index.spec.js.snap
deleted file mode 100644
index 9476a8e09..000000000
--- a/modules/route/front/tickets/__snapshots__/index.spec.js.snap
+++ /dev/null
@@ -1,18 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`Route getSelectedItems() should return the selected items 1`] = `
-Array [
- Object {
- "checked": true,
- "id": 1,
- },
- Object {
- "checked": true,
- "id": 3,
- },
- Object {
- "checked": true,
- "id": 5,
- },
-]
-`;
diff --git a/modules/route/front/tickets/index.html b/modules/route/front/tickets/index.html
deleted file mode 100644
index 7fafeb0ba..000000000
--- a/modules/route/front/tickets/index.html
+++ /dev/null
@@ -1,203 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/route/front/tickets/index.js b/modules/route/front/tickets/index.js
deleted file mode 100644
index a1b97005e..000000000
--- a/modules/route/front/tickets/index.js
+++ /dev/null
@@ -1,201 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-import UserError from 'core/lib/user-error';
-
-class Controller extends Section {
- get isChecked() {
- if (this.tickets) {
- for (let instance of this.tickets)
- if (instance.checked) return true;
- }
-
- return false;
- }
-
- getHighestPriority() {
- let highestPriority = Math.max(...this.$.model.data.map(tag => {
- return tag.priority;
- }));
- return highestPriority + 1;
- }
-
- setHighestPriority(ticket) {
- const highestPriority = this.getHighestPriority();
- if (highestPriority - 1 != ticket.priority) {
- const params = {priority: highestPriority};
- const query = `Tickets/${ticket.id}/`;
- this.$http.patch(query, params).then(res => {
- ticket.priority = res.data.priority;
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
- }
-
- setPriority(id, priority) {
- let params = {priority: priority};
- let query = `Tickets/${id}/`;
- this.$http.patch(query, params).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-
- deletePriority() {
- const lines = this.getSelectedItems(this.tickets);
-
- for (const line of lines) {
- this.$http.patch(`Tickets/${line.id}/`, {priority: null}).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.$.model.refresh();
- });
- }
- }
-
- setOrderedPriority(lines) {
- let priority = 1;
- for (const line of lines) {
- this.$http.patch(`Tickets/${line.id}/`, {priority: priority}).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.$.model.refresh();
- });
- priority++;
- }
- }
-
- getSelectedItems(items) {
- const selectedItems = [];
-
- if (items) {
- for (let i = 0; i < items.length; i++) {
- if (items[i].checked)
- selectedItems.push(items[i]);
- }
- }
- return selectedItems;
- }
-
- goToBuscaman(ticket) {
- if (!this.route.vehicleFk)
- throw new UserError(`The route doesn't have a vehicle`);
-
- this.$http.get(`Routes/${this.route.vehicleFk}/getDeliveryPoint`).then(res => {
- if (!res.data)
- throw new UserError(`The route's vehicle doesn't have a delivery point`);
-
- let addresses = res.data;
- const lines = ticket ? [ticket] : this.getSelectedItems(this.tickets);
- lines.forEach((line, index) => {
- const previousLine = lines[index - 1] ? lines[index - 1].street : null;
- if (previousLine != line.street)
- addresses = addresses + '+to:' + line.postalCode + ' ' + line.city + ' ' + line.street;
- });
-
- const url = 'http://gps.buscalia.com/usuario/localizar.aspx?bmi=true&addr=';
- window.open(url + encodeURI(addresses), '_blank');
- });
- }
-
- showDeleteConfirm(id) {
- this.selectedTicket = id;
- this.$.confirm.show();
- }
-
- removeTicketFromRoute($index) {
- let params = {routeFk: null};
- let query = `Tickets/${this.selectedTicket}/`;
- this.$http.patch(query, params).then(() => {
- this.$.model.remove($index);
- this.vnApp.showSuccess(this.$t('Ticket removed from route'));
- this.updateVolume();
- });
- }
-
- updateVolume() {
- let url = `Routes/${this.$params.id}/updateVolume`;
- this.$http.post(url).then(() => {
- this.card.reload();
- this.$.model.refresh();
- });
- }
-
- guessPriority() {
- let query = `Routes/${this.$params.id}/guessPriority/`;
- this.$http.patch(query).then(() => {
- this.vnApp.showSuccess(this.$t('Order changed'));
- this.$.model.refresh();
- });
- }
-
- onDrop($event) {
- const ticketId = $event.dataTransfer.getData('Text');
-
- if (isNaN(ticketId)) {
- const regexp = new RegExp(/\/ticket\/([0-9]+)\//i);
- const matches = ticketId.match(regexp);
-
- if (matches && matches.length)
- this.insert(matches[1]);
- else
- this.vnApp.showError(this.$t('Ticket not found'));
- }
-
- if (!isNaN(ticketId))
- this.insert(ticketId);
- }
-
- insert(ticketId) {
- ticketId = parseInt(ticketId);
-
- const query = `Routes/${this.route.id}/insertTicket`;
- return this.$http.patch(query, {ticketId}).then(() => {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.updateVolume();
- }).catch(error => {
- if (error.status == 404)
- return this.vnApp.showError(this.$t('Ticket not found'));
- throw error;
- });
- }
-
- async sendSms() {
- try {
- const clientsFk = [];
- const clientsName = [];
- const clients = [];
-
- const selectedTickets = this.getSelectedItems(this.$.$ctrl.tickets);
-
- for (let ticket of selectedTickets) {
- clientsFk.push(ticket.clientFk);
- let userContact = await this.$http.get(`Clients/${ticket.clientFk}`);
- clientsName.push(userContact.data.name);
- clients.push(userContact.data.phone);
- }
-
- const destinationFk = String(clientsFk);
- const destination = String(clients);
-
- this.newSMS = Object.assign({
- destinationFk: destinationFk,
- destination: destination
- });
-
- this.$.sms.open();
- return true;
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- return false;
- }
- }
-}
-
-ngModule.vnComponent('vnRouteTickets', {
- template: require('./index.html'),
- controller: Controller,
- require: {
- card: '^vnRouteCard'
- },
- bindings: {
- route: '<'
- }
-});
diff --git a/modules/route/front/tickets/index.spec.js b/modules/route/front/tickets/index.spec.js
deleted file mode 100644
index fef4b8331..000000000
--- a/modules/route/front/tickets/index.spec.js
+++ /dev/null
@@ -1,277 +0,0 @@
-/* eslint max-len: ["error", { "code": 150 }]*/
-import './index';
-
-describe('Route', () => {
- let controller;
- let $httpBackend;
- let $scope;
-
- beforeEach(ngModule('route'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- $scope = $rootScope.$new();
- const $element = angular.element(' ');
- controller = $componentController('vnRouteTickets', {$element, $scope});
- controller.route = {id: 1};
- controller.$.model = {
- refresh: () => {},
- remove: () => {}
- };
- controller.card = {reload: () => {}};
- }));
-
- describe('route setter/getter', () => {
- it('should return the route id', () => {
- controller.route = 2;
-
- expect(controller.route).toEqual(2);
- });
- });
-
- describe('isChecked getter', () => {
- it('should return false if none of the tickets is checked or there are no tickets', () => {
- expect(controller.isChecked).toBeFalsy();
- });
-
- it('should return true if any of the tickets is checked', () => {
- controller.tickets = [{checked: true}];
-
- expect(controller.isChecked).toBeTruthy();
- });
- });
-
- describe('getHighestPriority()', () => {
- it('should return the highest value found in priorities plus 1', () => {
- controller.$.model = {data: [
- {priority: 99},
- {priority: 1},
- {priority: 2},
- {priority: 3},
- {priority: 4},
- {priority: 5},
- ]};
-
- let result = controller.getHighestPriority();
-
- expect(result).toEqual(100);
- });
- });
-
- describe('setHighestPriority()', () => {
- it('should set a ticket highest priority', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
- controller.$.model.data = [{priority: 3}];
- const ticket = {id: 1, priority: 2};
- const res = {data: {priority: 4}};
-
- $httpBackend.expectPATCH(`Tickets/${ticket.id}/`).respond(res);
- controller.setHighestPriority(ticket);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('setPriority()', () => {
- it('should set a ticket priority', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
- const ticketId = 1;
- const priority = 999;
-
- $httpBackend.expectPATCH(`Tickets/${ticketId}/`).respond('ok');
- controller.setPriority(ticketId, priority);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('deletePriority()', () => {
- it('should delete priority of all tickets', () => {
- jest.spyOn(controller.$.model, 'refresh');
- jest.spyOn(controller.vnApp, 'showSuccess');
- controller.tickets = [{id: 1, checked: true}];
-
- $httpBackend.expectPATCH(`Tickets/${controller.tickets[0].id}/`).respond();
- controller.deletePriority();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.$.model.refresh).toHaveBeenCalledWith();
- });
- });
-
- describe('setOrderedPriority()', () => {
- it('should set priority of all tickets starting by 1', () => {
- jest.spyOn(controller.$.model, 'refresh');
- jest.spyOn(controller.vnApp, 'showSuccess');
- const tickets = [{id: 1, checked: true}];
-
- $httpBackend.expectPATCH(`Tickets/${tickets[0].id}/`).respond();
- controller.setOrderedPriority(tickets);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.$.model.refresh).toHaveBeenCalledWith();
- });
- });
-
- describe('getSelectedItems()', () => {
- it('should return the selected items', () => {
- let items = [
- {id: 1, checked: true},
- {id: 2, checked: false},
- {id: 3, checked: true},
- {id: 4, checked: false},
- {id: 5, checked: true},
- ];
-
- let selectedItems = controller.getSelectedItems(items);
-
- expect(selectedItems).toMatchSnapshot();
- });
- });
-
- describe('goToBuscaman()', () => {
- it('should open buscaman with the given arguments', () => {
- jest.spyOn(window, 'open').mockReturnThis();
- const expectedUrl = 'http://gps.buscalia.com/usuario/localizar.aspx?bmi=true&addr=46460%20Av%20Espioca%20100+to:n19%20London%20my%20street';
- controller.route = {vehicleFk: 1};
- const url = `Routes/${controller.route.vehicleFk}/getDeliveryPoint`;
- $httpBackend.expectGET(url).respond('46460 Av Espioca 100');
-
- controller.tickets = [
- {
- id: 1,
- checked: true,
- street: 'my street',
- postalCode: 'n19',
- city: 'London'
- },
- ];
-
- controller.goToBuscaman();
- $httpBackend.flush();
-
- expect(window.open).toHaveBeenCalledWith(expectedUrl, '_blank');
- });
- });
-
- describe('showDeleteConfirm()', () => {
- it('should open a confirm dialog after setting the selected ticket into the controller', () => {
- controller.$.confirm = {show: () => {}};
- jest.spyOn(controller.$.confirm, 'show');
- let ticketId = 1;
-
- controller.showDeleteConfirm(ticketId);
-
- expect(controller.selectedTicket).toEqual(ticketId);
- expect(controller.$.confirm.show).toHaveBeenCalledWith();
- });
- });
-
- describe('removeTicketFromRoute()', () => {
- it('should perform a patch query then call showSuccess and updateVolume methods', () => {
- controller.$params = {id: 1101};
-
- jest.spyOn(controller.vnApp, 'showSuccess');
- jest.spyOn(controller.$.model, 'remove');
-
- let ticketId = 1;
- controller.selectedTicket = ticketId;
-
- $httpBackend.whenPOST(`Routes/${controller.$params.id}/updateVolume`).respond(200);
- $httpBackend.expectPATCH(`Tickets/${ticketId}/`).respond('ok');
- controller.removeTicketFromRoute();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Ticket removed from route');
- });
- });
-
- describe('updateVolume()', () => {
- it('should perform a POST query then call both reload and refresh methods', () => {
- controller.$params = {id: 999};
- jest.spyOn(controller.$.model, 'refresh');
- jest.spyOn(controller.card, 'reload');
-
- let ticketId = 1;
- controller.selectedTicket = ticketId;
-
- const url = `Routes/${controller.$params.id}/updateVolume`;
- $httpBackend.expectPOST(url).respond('ok');
- controller.updateVolume();
- $httpBackend.flush();
-
- expect(controller.$.model.refresh).toHaveBeenCalledWith();
- expect(controller.card.reload).toHaveBeenCalledWith();
- });
- });
-
- describe('onDrop()', () => {
- it('should call the insert method when dragging a ticket number', () => {
- jest.spyOn(controller, 'insert');
-
- const expectedTicketId = '11';
- const draggedElement = '11';
- const $event = {
- dataTransfer: {
- getData: () => draggedElement
- }
- };
- controller.onDrop($event);
-
- expect(controller.insert).toHaveBeenCalledWith(expectedTicketId);
- });
-
- it('should call the insert method when dragging a ticket link', () => {
- jest.spyOn(controller, 'insert');
-
- const expectedTicketId = '11';
- const draggedElement = 'http://arkamcity.com/#!/ticket/11/summary';
- const $event = {
- dataTransfer: {
- getData: () => draggedElement
- }
- };
- controller.onDrop($event);
-
- expect(controller.insert).toHaveBeenCalledWith(expectedTicketId);
- });
-
- it('should throw an error when dragging an invalid ticket link', () => {
- jest.spyOn(controller.vnApp, 'showError');
-
- const draggedElement = 'http://arkamcity.com/#!/item/11/summary';
- const $event = {
- dataTransfer: {
- getData: () => draggedElement
- }
- };
- controller.onDrop($event);
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith('Ticket not found');
- });
- });
-
- describe('insert()', () => {
- it('should make a HTTP patch query and then call both refresh and showSuccess methods', () => {
- controller.$params = {id: 1101};
-
- jest.spyOn(controller.$.model, 'refresh').mockReturnThis();
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- const ticketId = 11;
- const data = {ticketId};
-
- $httpBackend.whenPOST(`Routes/${controller.$params.id}/updateVolume`).respond(200);
- $httpBackend.expect('PATCH', `Routes/1/insertTicket`, data).respond();
- controller.insert(ticketId);
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.$.model.refresh).toHaveBeenCalledWith();
- });
- });
-});
diff --git a/modules/route/front/tickets/locale/es.yml b/modules/route/front/tickets/locale/es.yml
deleted file mode 100644
index e7f483d2f..000000000
--- a/modules/route/front/tickets/locale/es.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-Remove ticket: Eliminar ticket
-Open buscaman: Abrir buscaman
-Ticket removed from route: Ticket quitado de la ruta
-Order changed: Orden cambiado
-Delete ticket from route?: ¿Quitar el ticket de la ruta?
-Sort routes: Ordenar rutas
-Add ticket: Añadir ticket
-Tickets to add: Tickets a añadir
-Ticket not found: No se ha encontrado el ticket
-The selected ticket is not suitable for this route: El ticket seleccionado no es apto para esta ruta
-PC: CP
-The route's vehicle doesn't have a delivery point: El vehículo de la ruta no tiene un punto de entrega
-The route doesn't have a vehicle: La ruta no tiene un vehículo
-Population: Población
-Unlink selected zone?: Desvincular zona seleccionada?
-Delete priority: Borrar orden
-Renumber all tickets in the order you see on the screen: Renumerar todos los tickets con el orden que ves por pantalla
-Assign highest priority: Asignar máxima prioridad
\ No newline at end of file
diff --git a/modules/route/front/tickets/style.scss b/modules/route/front/tickets/style.scss
deleted file mode 100644
index 9393a7d59..000000000
--- a/modules/route/front/tickets/style.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-@import "variables";
-
-vn-route-tickets form{
- margin: 0 auto;
- max-width: $width-lg;
-
- .order-field {
- max-width: 30px;
- }
-}
-
-.button-right{
- display: block;
- padding-right: 50px;
- text-align: right;
-}
\ No newline at end of file
diff --git a/modules/ticket/back/methods/expedition/deleteExpeditions.js b/modules/ticket/back/methods/expedition/deleteExpeditions.js
index 90a649425..75993a485 100644
--- a/modules/ticket/back/methods/expedition/deleteExpeditions.js
+++ b/modules/ticket/back/methods/expedition/deleteExpeditions.js
@@ -27,40 +27,33 @@ module.exports = Self => {
const deletedExpeditions = [];
for (let expeditionId of expeditionIds) {
- const filter = {
- fields: [],
- where: {
- id: expeditionId
- },
- include: [
- {
- relation: 'agencyMode',
- scope: {
- fields: ['code'],
+ try {
+ const expedition = await models.Expedition.findById(expeditionId, {
+ include: [
+ {
+ relation: 'agencyMode',
+ scope: {
+ fields: ['code'],
+ }
}
- }
- ]
- };
+ ]
+ });
+ const {code} = expedition.agencyMode();
- const expedition = await models.Expedition.findOne(filter);
- const {code} = expedition.agencyMode();
- let isDeleted = true;
+ if (code?.toLowerCase()?.includes('mrw') && expedition.externalId) {
+ const result = await models.MrwConfig.cancelShipment(expeditionId);
+ if (!result) throw new Error('not deleted');
+ }
- if (code?.toLowerCase()?.includes('mrw')) {
- const result = await models.MrwConfig.cancelShipment(expeditionId);
- isDeleted = result;
- }
+ if (code?.toLowerCase()?.substring(0, 10) == 'viaexpress') {
+ const result = await models.ViaexpressConfig.deleteExpedition(expeditionId);
+ if (result !== 'true') throw new Error('not deleted');
+ }
- if (code?.toLowerCase()?.substring(0, 10) == 'viaexpress') {
- const result = await models.ViaexpressConfig.deleteExpedition(expeditionId);
- if (result !== 'true') isDeleted = false;
- }
-
- if (!isDeleted)
- notDeletedExpeditions.push(expeditionId);
- else {
const deletedExpedition = await models.Expedition.destroyById(expeditionId);
deletedExpeditions.push(deletedExpedition);
+ } catch (e) {
+ notDeletedExpeditions.push(expeditionId);
}
}
diff --git a/modules/ticket/back/methods/sale/clone.js b/modules/ticket/back/methods/sale/clone.js
index 9185a6e75..24346f3ba 100644
--- a/modules/ticket/back/methods/sale/clone.js
+++ b/modules/ticket/back/methods/sale/clone.js
@@ -1,40 +1,25 @@
module.exports = Self => {
Self.remoteMethodCtx('clone', {
- description: 'Clone sales and services provided',
+ description: 'Clone sales, services, and ticket packaging provided',
accessType: 'WRITE',
accepts: [
- {
- arg: 'salesIds',
- type: ['number'],
- }, {
- arg: 'servicesIds',
- type: ['number']
- }, {
- arg: 'withWarehouse',
- type: 'boolean',
- required: true
- }, {
- arg: 'negative',
- type: 'boolean'
- }
+ {arg: 'salesIds', type: ['number']},
+ {arg: 'servicesIds', type: ['number']},
+ {arg: 'ticketPackagingIds', type: ['number']},
+ {arg: 'withWarehouse', type: 'boolean', required: true},
+ {arg: 'negative', type: 'boolean'}
],
- returns: {
- type: ['object'],
- root: true
- },
- http: {
- path: `/clone`,
- verb: 'POST'
- }
+ returns: {type: ['object'], root: true},
+ http: {path: `/clone`, verb: 'POST'}
});
- Self.clone = async(ctx, salesIds, servicesIds, withWarehouse, negative, options) => {
+
+ Self.clone = async(ctx, salesIds, servicesIds, ticketPackagingIds, withWarehouse, negative, options) => {
const models = Self.app.models;
const myOptions = {};
let tx;
const newTickets = [];
- if (typeof options == 'object')
- Object.assign(myOptions, options);
+ if (typeof options === 'object') Object.assign(myOptions, options);
if (!myOptions.transaction) {
tx = await Self.beginTransaction({});
@@ -44,8 +29,9 @@ module.exports = Self => {
try {
let sales;
let services;
+ let ticketPackaging;
- if (salesIds && salesIds.length) {
+ if (salesIds?.length) {
sales = await models.Sale.find({
where: {id: {inq: salesIds}},
include: {
@@ -57,12 +43,18 @@ module.exports = Self => {
}, myOptions);
}
- if (servicesIds && servicesIds.length) {
+ if (servicesIds?.length) {
services = await models.TicketService.find({
where: {id: {inq: servicesIds}}
}, myOptions);
}
+ if (ticketPackagingIds?.length) {
+ ticketPackaging = await models.TicketPackaging.find({
+ where: {id: {inq: ticketPackagingIds}}
+ }, myOptions);
+ }
+
let ticketsIds = sales ?
[...new Set(sales.map(sale => sale.ticketFk))] :
[...new Set(services.map(service => service.ticketFk))];
@@ -74,12 +66,12 @@ module.exports = Self => {
ctx,
ticketId,
withWarehouse,
- negative,
myOptions
);
newTickets.push(newTicket);
mappedTickets.set(ticketId, newTicket.id);
}
+
if (sales) {
for (const sale of sales) {
const newTicketId = mappedTickets.get(sale.ticketFk);
@@ -107,7 +99,7 @@ module.exports = Self => {
await models.TicketService.create({
description: service.description,
- quantity: negative ? - service.quantity : service.quantity,
+ quantity: negative ? -service.quantity : service.quantity,
price: service.price,
taxClassFk: service.taxClassFk,
ticketFk: newTicketId,
@@ -116,6 +108,18 @@ module.exports = Self => {
}
}
+ if (ticketPackaging) {
+ for (const packaging of ticketPackaging) {
+ const newTicketId = mappedTickets.get(packaging.ticketFk);
+
+ await models.TicketPackaging.create({
+ ticketFk: newTicketId,
+ packagingFk: packaging.packagingFk,
+ quantity: negative ? -packaging.quantity : packaging.quantity
+ }, myOptions);
+ }
+ }
+
if (tx) await tx.commit();
return newTickets;
@@ -124,13 +128,7 @@ module.exports = Self => {
throw e;
}
- async function createTicket(
- ctx,
- ticketId,
- withWarehouse,
- negative,
- myOptions
- ) {
+ async function createTicket(ctx, ticketId, withWarehouse, myOptions) {
const models = Self.app.models;
const now = Date.vnNew();
diff --git a/modules/ticket/back/methods/sale/specs/clone.spec.js b/modules/ticket/back/methods/sale/specs/clone.spec.js
index 5b0dc84a7..1738cc08c 100644
--- a/modules/ticket/back/methods/sale/specs/clone.spec.js
+++ b/modules/ticket/back/methods/sale/specs/clone.spec.js
@@ -20,7 +20,7 @@ describe('Ticket cloning - clone function', () => {
const servicesIds = [];
const withWarehouse = true;
const negative = false;
- const newTickets = await models.Sale.clone(ctx, salesIds, servicesIds, withWarehouse, negative, options);
+ const newTickets = await models.Sale.clone(ctx, salesIds, servicesIds, null, withWarehouse, negative, options);
expect(newTickets).toBeDefined();
expect(newTickets.length).toBeGreaterThan(0);
@@ -30,7 +30,7 @@ describe('Ticket cloning - clone function', () => {
const negative = true;
const salesIds = [7, 8];
const servicesIds = [];
- const newTickets = await models.Sale.clone(ctx, salesIds, servicesIds, false, negative, options);
+ const newTickets = await models.Sale.clone(ctx, salesIds, servicesIds, null, false, negative, options);
for (const ticket of newTickets) {
const sales = await models.Sale.find({where: {ticketFk: ticket.id}}, options);
@@ -43,7 +43,7 @@ describe('Ticket cloning - clone function', () => {
it('should create new components and services for cloned tickets', async() => {
const servicesIds = [2];
const salesIds = [5];
- const newTickets = await models.Sale.clone(ctx, salesIds, servicesIds, false, false, options);
+ const newTickets = await models.Sale.clone(ctx, salesIds, servicesIds, null, false, false, options);
for (const ticket of newTickets) {
const sale = await models.Sale.findOne({where: {ticketFk: ticket.id}}, options);
@@ -58,7 +58,7 @@ describe('Ticket cloning - clone function', () => {
it('should create a ticket without sales', async() => {
const servicesIds = [4];
- const tickets = await models.Sale.clone(ctx, null, servicesIds, false, false, options);
+ const tickets = await models.Sale.clone(ctx, null, servicesIds, null, false, false, options);
const refundedTicket = await getTicketRefund(tickets[0].id, options);
expect(refundedTicket).toBeDefined();
diff --git a/modules/ticket/back/methods/ticket/clone.js b/modules/ticket/back/methods/ticket/clone.js
deleted file mode 100644
index 93bc2a94e..000000000
--- a/modules/ticket/back/methods/ticket/clone.js
+++ /dev/null
@@ -1,54 +0,0 @@
-module.exports = Self => {
- Self.remoteMethodCtx('clone', {
- description: 'clone a ticket and return the new ticket id',
- accessType: 'WRITE',
- accepts: [{
- arg: 'id',
- type: 'number',
- required: true,
- description: 'The ticket id',
- http: {source: 'path'}
- }, {
- arg: 'shipped',
- type: 'date',
- }, {
- arg: 'withWarehouse',
- type: 'boolean',
- }
- ],
- returns: {
- type: 'number',
- root: true
- },
- http: {
- path: `/:id/clone`,
- verb: 'POST'
- }
- });
-
- Self.clone = async(ctx, id, shipped, withWarehouse, options) => {
- const myOptions = {userId: ctx.req.accessToken.userId};
- let tx;
-
- if (typeof options == 'object')
- Object.assign(myOptions, options);
-
- if (!myOptions.transaction) {
- tx = await Self.beginTransaction({});
- myOptions.transaction = tx;
- }
-
- try {
- const [, [{clonedTicketId}]] = await Self.rawSql(`
- CALL vn.ticket_cloneAll(?, ?, ?, @clonedTicketId);
- SELECT @clonedTicketId clonedTicketId;`,
- [id, shipped, withWarehouse], myOptions);
-
- if (tx) await tx.commit();
- return clonedTicketId;
- } catch (e) {
- if (tx) await tx.rollback();
- throw e;
- }
- };
-};
diff --git a/modules/ticket/back/methods/ticket/cloneAll.js b/modules/ticket/back/methods/ticket/cloneAll.js
new file mode 100644
index 000000000..29d45615f
--- /dev/null
+++ b/modules/ticket/back/methods/ticket/cloneAll.js
@@ -0,0 +1,80 @@
+module.exports = Self => {
+ Self.remoteMethodCtx('cloneAll', {
+ description: 'Clone tickets, sales, services and packages',
+ accessType: 'WRITE',
+ accepts: [
+ {
+ arg: 'ticketsIds',
+ type: ['number'],
+ required: true,
+ description: 'IDs of the tickets to clone'
+ },
+ {
+ arg: 'withWarehouse',
+ type: 'boolean',
+ required: true,
+ description: 'true: keep original warehouse; false: set to null'
+ },
+ {
+ arg: 'negative',
+ type: 'boolean',
+ required: true,
+ description: 'true: invert quantities; false: keep as is.'
+ }
+ ],
+ returns: {
+ type: ['object'],
+ root: true,
+ description: 'The cloned tickets with associated data'
+ },
+ http: {
+ path: `/cloneAll`,
+ verb: 'POST'
+ }
+ });
+
+ Self.cloneAll = async(ctx, ticketsIds, withWarehouse, negative, options) => {
+ const models = Self.app.models;
+ let tx;
+ const myOptions = {};
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ if (!myOptions.transaction) {
+ tx = await Self.beginTransaction({});
+ myOptions.transaction = tx;
+ }
+
+ try {
+ const filter = {where: {ticketFk: {inq: ticketsIds}}};
+
+ const [sales, services, ticketPackaging] = await Promise.all([
+ models.Sale.find(filter, myOptions),
+ models.TicketService.find(filter, myOptions),
+ models.TicketPackaging.find(filter, myOptions)
+ ]);
+
+ const salesIds = sales.map(({id}) => id);
+ const servicesIds = services.map(({id}) => id);
+ const ticketPackagingIds = ticketPackaging.map(({id}) => id);
+
+ const clonedTickets = await models.Sale.clone(
+ ctx,
+ salesIds,
+ servicesIds,
+ ticketPackagingIds,
+ withWarehouse,
+ negative,
+ myOptions
+ );
+
+ if (tx) await tx.commit();
+
+ return clonedTickets;
+ } catch (e) {
+ if (tx) await tx.rollback();
+ throw e;
+ }
+ };
+};
diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js
index 35b9b1e37..143c0a3f0 100644
--- a/modules/ticket/back/methods/ticket/closeAll.js
+++ b/modules/ticket/back/methods/ticket/closeAll.js
@@ -71,7 +71,8 @@ module.exports = Self => {
JSON_ARRAYAGG(
JSON_OBJECT(
'ticketId', ticketFk,
- 'reason', reason
+ 'reason', reason,
+ 'clientId', clientFk
)
)
)errors
@@ -83,7 +84,8 @@ module.exports = Self => {
IF(hasErrorDeleted, 'Eliminado', NULL),
IF(hasErrorItemTaxCountry, 'Impuesto no informado', NULL),
IF(hasErrorAddress, 'Sin dirección', NULL),
- IF(hasErrorInfoTaxAreaWorld, 'Datos exportaciones', NULL)) reason
+ IF(hasErrorInfoTaxAreaWorld, 'Datos exportaciones', NULL)) reason,
+ clientFk
FROM (
SELECT t.id ticketFk,
SUM(NOT c.hasToInvoice) hasErrorToInvoice,
@@ -91,9 +93,10 @@ module.exports = Self => {
SUM(t.isDeleted) hasErrorDeleted,
SUM(itc.id IS NULL) hasErrorItemTaxCountry,
SUM(a.id IS NULL) hasErrorAddress,
- SUM(ios.code IS NOT NULL
- AND(ad.customsAgentFk IS NULL
- OR ad.incotermsFk IS NULL)) hasErrorInfoTaxAreaWorld
+ SUM(ios.code IS NOT NULL
+ AND(ad.customsAgentFk IS NULL
+ OR ad.incotermsFk IS NULL)) hasErrorInfoTaxAreaWorld,
+ t.clientFk clientFk
FROM ticket t
LEFT JOIN address ad ON ad.id = t.addressFk
JOIN sale s ON s.ticketFk = t.id
@@ -110,24 +113,24 @@ module.exports = Self => {
LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk
LEFT JOIN itemTaxCountry itc ON itc.itemFk = i.id
AND itc.countryFk = su.countryFk
- LEFT JOIN vn.invoiceOutSerial ios ON ios.taxAreaFk = 'WORLD'
- AND ios.code = invoiceSerial(t.clientFk, t.companyFk, 'M')
+ LEFT JOIN vn.invoiceOutSerial ios ON ios.taxAreaFk = 'WORLD'
+ AND ios.code = invoiceSerial(t.clientFk, t.companyFk, 'multiple')
WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code <> 'delivered'))
AND DATE(t.shipped) BETWEEN ? - INTERVAL 2 DAY AND util.dayEnd(?)
AND t.refFk IS NULL
AND IFNULL(a.hasDailyInvoice, co.hasDailyInvoice)
- GROUP BY ticketFk
- HAVING hasErrorToInvoice
- OR hasErrorTaxDataChecked
- OR hasErrorDeleted
- OR hasErrorItemTaxCountry
- OR hasErrorAddress
+ GROUP BY ticketFk
+ HAVING hasErrorToInvoice
+ OR hasErrorTaxDataChecked
+ OR hasErrorDeleted
+ OR hasErrorItemTaxCountry
+ OR hasErrorAddress
OR hasErrorInfoTaxAreaWorld
)sub
)sub2
) SELECT IF(errors = '{"tickets": null}',
'No errors',
- util.notification_send('invoice-ticket-closure', errors, NULL))
+ util.notification_send('invoice-ticket-closure', errors, NULL))
FROM ticketNotInvoiceable`, [toDate, toDate]);
await closure(ctx, Self, tickets);
diff --git a/modules/ticket/back/methods/ticket/closure.js b/modules/ticket/back/methods/ticket/closure.js
index fba39f18f..89343b193 100644
--- a/modules/ticket/back/methods/ticket/closure.js
+++ b/modules/ticket/back/methods/ticket/closure.js
@@ -13,23 +13,20 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
const failedtickets = [];
for (const ticket of tickets) {
try {
- await Self.app.models.InvoiceOut.getSerial(ticket.clientFk, ticket.companyFk, ticket.addressFk, 'M');
+ await Self.app.models.InvoiceOut.getSerial(ticket.clientFk, ticket.companyFk, ticket.addressFk, 'quick');
await Self.rawSql(
`CALL vn.ticket_closeByTicket(?)`,
[ticket.id],
{userId}
);
- const [invoiceOut] = await Self.rawSql(
- `
+ const [invoiceOut] = await Self.rawSql(`
SELECT io.id, io.ref, io.serial, cny.code companyCode, io.issued
FROM ticket t
JOIN invoiceOut io ON io.ref = t.refFk
JOIN company cny ON cny.id = io.companyFk
WHERE t.id = ?
- `,
- [ticket.id],
- );
+ `, [ticket.id]);
const mailOptions = {
overrideAttachments: true,
@@ -104,17 +101,14 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
}
// Incoterms authorization
- const [{firstOrder}] = await Self.rawSql(
- `
- SELECT COUNT(*) as firstOrder
- FROM ticket t
- JOIN client c ON c.id = t.clientFk
- WHERE t.clientFk = ?
- AND NOT t.isDeleted
- AND c.isVies
- `,
- [ticket.clientFk],
- );
+ const [{firstOrder}] = await Self.rawSql(`
+ SELECT COUNT(*) as firstOrder
+ FROM ticket t
+ JOIN client c ON c.id = t.clientFk
+ WHERE t.clientFk = ?
+ AND NOT t.isDeleted
+ AND c.isVies
+ `, [ticket.clientFk]);
if (firstOrder == 1) {
const args = {
@@ -129,26 +123,17 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
const email = new Email('incoterms-authorization', args);
await email.send();
- const [sample] = await Self.rawSql(
- `SELECT id
+ const [sample] = await Self.rawSql(`
+ SELECT id
FROM sample
- WHERE code = 'incoterms-authorization'
- `,
- );
+ WHERE code = 'incoterms-authorization'
+ `);
- await Self.rawSql(
- `
+ await Self.rawSql(`
INSERT INTO clientSample (clientFk, typeFk, companyFk) VALUES(?, ?, ?)
- `,
- [ticket.clientFk, sample.id, ticket.companyFk],
- {userId},
- );
+ `, [ticket.clientFk, sample.id, ticket.companyFk], {userId});
}
} catch (error) {
- await Self.rawSql(`
- INSERT INTO util.debug (variable, value)
- VALUES ('invoicingTicketError', ?)
- `, [ticket.id + ' - ' + error]);
// Domain not found
if (error.responseCode == 450) {
await invalidEmail(ticket);
diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js
index 0823b38b8..2209c8df4 100644
--- a/modules/ticket/back/methods/ticket/filter.js
+++ b/modules/ticket/back/methods/ticket/filter.js
@@ -224,16 +224,14 @@ module.exports = Self => {
const stmts = [];
let stmt;
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.filter');
- stmt = new ParameterizedSQL(
- `CREATE TEMPORARY TABLE tmp.filter
+ stmt = new ParameterizedSQL(`
+ CREATE OR REPLACE TEMPORARY TABLE tmp.filter
(INDEX (id))
ENGINE = MEMORY
- SELECT
- t.id,
+ SELECT t.id,
t.shipped,
- CAST(DATE(t.shipped) AS CHAR) AS shippedDate,
- HOUR(t.shipped) AS shippedHour,
+ CAST(DATE(t.shipped) AS CHAR) shippedDate,
+ HOUR(t.shipped) shippedHour,
t.nickname,
t.refFk,
t.routeFk,
@@ -241,26 +239,26 @@ module.exports = Self => {
t.clientFk,
t.totalWithoutVat,
t.totalWithVat,
- io.id AS invoiceOutId,
+ io.id invoiceOutId,
a.provinceFk,
- p.name AS province,
- w.name AS warehouse,
- am.name AS agencyMode,
- am.id AS agencyModeFk,
- st.name AS state,
+ p.name province,
+ w.name warehouse,
+ am.name agencyMode,
+ am.id agencyModeFk,
+ st.name state,
st.classColor,
- wk.lastName AS salesPerson,
- ts.stateFk AS stateFk,
- ts.alertLevel AS alertLevel,
- ts.code AS alertLevelCode,
- u.name AS userName,
+ wk.lastName salesPerson,
+ ts.stateFk stateFk,
+ ts.alertLevel alertLevel,
+ ts.code alertLevelCode,
+ u.name userName,
c.salesPersonFk,
- z.hour AS zoneLanding,
- HOUR(z.hour) AS zoneHour,
- MINUTE(z.hour) AS zoneMinute,
- z.name AS zoneName,
- z.id AS zoneFk,
- CAST(z.hour AS CHAR) AS hour
+ z.hour zoneLanding,
+ HOUR(z.hour) zoneHour,
+ MINUTE(z.hour) zoneMinute,
+ z.name zoneName,
+ z.id zoneFk,
+ CAST(z.hour AS CHAR) hour
FROM ticket t
LEFT JOIN invoiceOut io ON t.refFk = io.ref
LEFT JOIN zone z ON z.id = t.zoneFk
@@ -273,7 +271,8 @@ module.exports = Self => {
LEFT JOIN client c ON c.id = t.clientFk
LEFT JOIN worker wk ON wk.id = c.salesPersonFk
LEFT JOIN account.user u ON u.id = wk.id
- LEFT JOIN route r ON r.id = t.routeFk`);
+ LEFT JOIN route r ON r.id = t.routeFk
+ `);
if (args.orderFk) {
stmt.merge({
@@ -293,25 +292,31 @@ module.exports = Self => {
stmt.merge(conn.makeWhere(filter.where));
stmts.push(stmt);
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems');
-
stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.sale_getProblems
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
(INDEX (ticketFk))
ENGINE = MEMORY
SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped
FROM tmp.filter f
LEFT JOIN alertLevel al ON al.id = f.alertLevel
WHERE (al.code = 'FREE' OR f.alertLevel IS NULL)
- AND f.shipped >= ?`, [date]);
- stmts.push(stmt);
+ AND f.shipped >= ?
+ `, [date]);
+ stmts.push(stmt);
stmts.push('CALL ticket_getProblems(FALSE)');
+ stmt = new ParameterizedSQL(`
+ UPDATE tmp.ticket_problems
+ SET risk = IF(hasRisk, risk, 0)
+ `);
+ stmts.push(stmt);
+
stmt = new ParameterizedSQL(`
SELECT f.*, tp.*
- FROM tmp.filter f
- LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id`);
+ FROM tmp.filter f
+ LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id
+ `);
if (args.problems != undefined && (!args.from && !args.to))
throw new UserError('Choose a date range or days forward');
diff --git a/modules/ticket/back/methods/ticket/getTicketsFuture.js b/modules/ticket/back/methods/ticket/getTicketsFuture.js
index ab5071be4..9f455ec03 100644
--- a/modules/ticket/back/methods/ticket/getTicketsFuture.js
+++ b/modules/ticket/back/methods/ticket/getTicketsFuture.js
@@ -145,24 +145,30 @@ module.exports = Self => {
stmts.push(stmt);
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems');
-
stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.sale_getProblems
- (INDEX (ticketFk))
- ENGINE = MEMORY
- SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped, f.lines, f.liters
- FROM tmp.filter f
- LEFT JOIN alertLevel al ON al.id = f.alertLevel
- WHERE (al.code = 'FREE' OR f.alertLevel IS NULL)`);
- stmts.push(stmt);
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
+ (INDEX (ticketFk))
+ ENGINE = MEMORY
+ SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped, f.lines, f.liters
+ FROM tmp.filter f
+ LEFT JOIN alertLevel al ON al.id = f.alertLevel
+ WHERE (al.code = 'FREE' OR f.alertLevel IS NULL)
+ `);
+ stmts.push(stmt);
stmts.push('CALL ticket_getProblems(FALSE)');
+ stmt = new ParameterizedSQL(`
+ UPDATE tmp.ticket_problems
+ SET risk = IF(hasRisk, risk, 0)
+ `);
+ stmts.push(stmt);
+
stmt = new ParameterizedSQL(`
SELECT f.*, tp.*
- FROM tmp.filter f
- LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id`);
+ FROM tmp.filter f
+ LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id
+ `);
if (args.problems != undefined && (!args.originDated && !args.futureDated))
throw new UserError('Choose a date range or days forward');
diff --git a/modules/ticket/back/methods/ticket/invoiceTickets.js b/modules/ticket/back/methods/ticket/invoiceTickets.js
index 53400e724..3c725c4a7 100644
--- a/modules/ticket/back/methods/ticket/invoiceTickets.js
+++ b/modules/ticket/back/methods/ticket/invoiceTickets.js
@@ -95,7 +95,7 @@ module.exports = function(Self) {
FROM vn.ticket
WHERE id IN (?)
`, [ticketsIds], myOptions);
- return models.Ticket.makeInvoice(ctx, 'R', companyId, Date.vnNew(), invoiceCorrection, myOptions);
+ return models.Ticket.makeInvoice(ctx, 'quick', companyId, Date.vnNew(), invoiceCorrection, myOptions);
}
};
diff --git a/modules/ticket/back/methods/ticket/refund.js b/modules/ticket/back/methods/ticket/refund.js
deleted file mode 100644
index 7365f34df..000000000
--- a/modules/ticket/back/methods/ticket/refund.js
+++ /dev/null
@@ -1,58 +0,0 @@
-module.exports = Self => {
- Self.remoteMethodCtx('refund', {
- description: 'Create refund tickets with all their sales and services',
- accessType: 'WRITE',
- accepts: [
- {
- arg: 'ticketsIds',
- type: ['number'],
- required: true
- },
- {
- arg: 'withWarehouse',
- type: 'boolean',
- required: true
- }
- ],
- returns: {
- type: ['object'],
- root: true
- },
- http: {
- path: `/refund`,
- verb: 'POST'
- }
- });
-
- Self.refund = async(ctx, ticketsIds, withWarehouse, options) => {
- const models = Self.app.models;
- const myOptions = {};
- let tx;
-
- if (typeof options == 'object')
- Object.assign(myOptions, options);
-
- if (!myOptions.transaction) {
- tx = await Self.beginTransaction({});
- myOptions.transaction = tx;
- }
-
- try {
- const filter = {where: {ticketFk: {inq: ticketsIds}}};
- const sales = await models.Sale.find(filter, myOptions);
- const salesIds = sales.map(sale => sale.id);
-
- const services = await models.TicketService.find(filter, myOptions);
- const servicesIds = services.map(service => service.id);
-
- const refundedTickets = await models.Sale.clone(ctx, salesIds, servicesIds, withWarehouse, true, myOptions);
-
- if (tx) await tx.commit();
-
- return refundedTickets;
- } catch (e) {
- if (tx) await tx.rollback();
- throw e;
- }
- };
-};
diff --git a/modules/ticket/back/methods/ticket/saveSign.js b/modules/ticket/back/methods/ticket/saveSign.js
index a751bd93a..bc0da686c 100644
--- a/modules/ticket/back/methods/ticket/saveSign.js
+++ b/modules/ticket/back/methods/ticket/saveSign.js
@@ -51,23 +51,23 @@ module.exports = Self => {
fields: ['id']
});
- async function setLocation(ticketId) {
+ async function setLocation() {
await models.Delivery.create({
- ticketFk: ticketId,
+ ticketFk: ticket.id,
longitude: location.Longitude,
latitude: location.Latitude,
dated: signedTime || new Date()
}, myOptions);
}
- async function hasSignDms(ticketId) {
+ async function hasSignDms() {
const hasTicketDms = await Self.rawSql(`
SELECT d.id
FROM ticketDms td
JOIN dms d ON d.id = td.dmsFk
WHERE td.ticketFk = ?
AND d.dmsTypeFk = ?
- `, [ticketId, dmsTypeTicket.id], myOptions);
+ `, [ticket.id, dmsTypeTicket.id], myOptions);
if (hasTicketDms.length) return true;
}
@@ -133,9 +133,9 @@ module.exports = Self => {
if (await ticket.isSigned)
throw new UserError('Ticket is already signed');
- if (location) await setLocation(ticketId);
- if (!await hasSignDms(ticketId) && !isSignUploaded)
- await createGestDoc(ticketId);
+ if (location) await setLocation();
+ if (!await hasSignDms() && !isSignUploaded)
+ await createGestDoc();
if (isSignUploaded)
await models.TicketDms.create({ticketFk: ticket.id, dmsFk: dms[0].id}, myOptions);
await ticket.updateAttribute('isSigned', true, myOptions);
diff --git a/modules/ticket/back/methods/ticket/setDeleted.js b/modules/ticket/back/methods/ticket/setDeleted.js
index 2afdf44ac..125827c5e 100644
--- a/modules/ticket/back/methods/ticket/setDeleted.js
+++ b/modules/ticket/back/methods/ticket/setDeleted.js
@@ -43,11 +43,22 @@ module.exports = Self => {
// Check if ticket has refunds
const ticketRefunds = await models.TicketRefund.find({
- where: {originalTicketFk: id},
- fields: ['id']}
- , myOptions);
- if (ticketRefunds.length > 0)
- throw new UserError('Tickets with associated refunds', 'TICKET_REFUND', ticketRefunds[0].id);
+ include: [
+ {relation: 'refundTicket'}
+ ],
+ where: {originalTicketFk: id}
+ }, myOptions);
+
+ const allDeleted = ticketRefunds.every(refund => refund.refundTicket().isDeleted);
+
+ if (ticketRefunds?.length && !allDeleted) {
+ const notDeleted = [];
+ for (const refund of ticketRefunds)
+ if (!refund.refundTicket().isDeleted) notDeleted.push(refund.refundTicket().id);
+
+ throw new UserError('Tickets with associated refunds', 'TICKET_REFUND',
+ notDeleted.join(', '));
+ }
// Check if has sales with shelving
const canDeleteTicketWithPartPrepared =
diff --git a/modules/ticket/back/methods/ticket/specs/clone.spec.js b/modules/ticket/back/methods/ticket/specs/clone.spec.js
deleted file mode 100644
index ccc0dcdf3..000000000
--- a/modules/ticket/back/methods/ticket/specs/clone.spec.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const models = require('vn-loopback/server/server').models;
-
-describe('Ticket cloning - clone function', () => {
- const ctx = beforeAll.getCtx();
- let options;
- let tx;
- const ticketId = 1;
- const shipped = Date.vnNew();
-
- beforeEach(async() => {
- options = {transaction: tx};
- tx = await models.Ticket.beginTransaction({});
- options.transaction = tx;
- });
-
- afterEach(async() => {
- await tx.rollback();
- });
-
- it('should clone a new ticket without warehouse', async() => {
- const originalTicket = await models.Ticket.findById(ticketId, null, options);
-
- const newTicketId = await models.Ticket.clone(ctx, ticketId, shipped, false, options);
- const newTicket = await models.Ticket.findById(newTicketId, null, options);
-
- expect(newTicket.clientFk).toEqual(originalTicket.clientFk);
- expect(newTicket.companyFk).toEqual(originalTicket.companyFk);
- expect(newTicket.addressFk).toEqual(originalTicket.addressFk);
- expect(newTicket.warehouseFk).toBeFalsy();
- });
-
- it('should clone a new ticket with warehouse', async() => {
- const originalTicket = await models.Ticket.findById(ticketId, null, options);
-
- const newTicketId = await models.Ticket.clone(ctx, ticketId, shipped, true, options);
- const newTicket = await models.Ticket.findById(newTicketId, null, options);
-
- expect(newTicket.clientFk).toEqual(originalTicket.clientFk);
- expect(newTicket.companyFk).toEqual(originalTicket.companyFk);
- expect(newTicket.addressFk).toEqual(originalTicket.addressFk);
- expect(newTicket.warehouseFk).toEqual(originalTicket.warehouseFk);
- });
-});
diff --git a/modules/ticket/back/methods/ticket/specs/cloneAll.spec.js b/modules/ticket/back/methods/ticket/specs/cloneAll.spec.js
new file mode 100644
index 000000000..4788df2c2
--- /dev/null
+++ b/modules/ticket/back/methods/ticket/specs/cloneAll.spec.js
@@ -0,0 +1,53 @@
+const models = require('vn-loopback/server/server').models;
+const LoopBackContext = require('loopback-context');
+
+describe('Ticket cloning - cloneAll function', () => {
+ const activeCtx = {
+ accessToken: {userId: 1},
+ http: {
+ req: {
+ headers: {origin: 'http://localhost'}
+ }
+ }
+ };
+ const ctx = {req: activeCtx};
+ let options;
+ let tx;
+ const ticketIds = [1, 2];
+ const withWarehouse = true;
+ const negative = false;
+
+ beforeEach(async() => {
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({active: ctx.req});
+ tx = await models.Ticket.beginTransaction({});
+ options = {transaction: tx};
+ });
+
+ afterEach(async() => {
+ if (tx)
+ await tx.rollback();
+ });
+
+ it('should clone all provided tickets with their associated sales, services, and packages', async() => {
+ const originalTickets = await models.Ticket.find({where: {id: {inq: ticketIds}}}, options);
+ const originalSales = await models.Sale.find({where: {ticketFk: {inq: ticketIds}}}, options);
+ const originalServices = await models.TicketService.find({where: {ticketFk: {inq: ticketIds}}}, options);
+ const originalTicketPackaging =
+ await models.TicketPackaging.find({where: {ticketFk: {inq: ticketIds}}}, options);
+
+ // Pass the ctx correctly to the cloneAll function
+ const clonedTickets = await models.Ticket.cloneAll(ctx, ticketIds, withWarehouse, negative, options);
+
+ expect(clonedTickets.length).toEqual(originalTickets.length);
+
+ const clonedSales = await models.Sale.find({where: {ticketFk: {inq: clonedTickets.map(t => t.id)}}}, options);
+ const clonedServices =
+ await models.TicketService.find({where: {ticketFk: {inq: clonedTickets.map(t => t.id)}}}, options);
+ const clonedTicketPackaging =
+ await models.TicketPackaging.find({where: {ticketFk: {inq: clonedTickets.map(t => t.id)}}}, options);
+
+ expect(clonedSales.length).toEqual(originalSales.length);
+ expect(clonedServices.length).toEqual(originalServices.length);
+ expect(clonedTicketPackaging.length).toEqual(originalTicketPackaging.length);
+ });
+});
diff --git a/modules/ticket/back/methods/ticket/specs/filter.spec.js b/modules/ticket/back/methods/ticket/specs/filter.spec.js
index 1d050931b..72249fe5d 100644
--- a/modules/ticket/back/methods/ticket/specs/filter.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js
@@ -71,7 +71,7 @@ describe('ticket filter()', () => {
const filter = {};
const result = await models.Ticket.filter(ctx, filter, options);
- expect(result.length).toEqual(10);
+ expect(result.length).toEqual(11);
await tx.rollback();
} catch (e) {
diff --git a/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js b/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js
index fea8b2096..88812dc92 100644
--- a/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js
@@ -3,7 +3,7 @@ const LoopBackContext = require('loopback-context');
describe('ticket makeInvoice()', () => {
const userId = 19;
- const invoiceType = 'R';
+ const invoiceType = 'quick';
const companyFk = 442;
const invoiceDate = Date.vnNew();
const activeCtx = {
diff --git a/modules/ticket/back/methods/ticket/specs/saveSign.spec.js b/modules/ticket/back/methods/ticket/specs/saveSign.spec.js
index 53ab42364..e93408973 100644
--- a/modules/ticket/back/methods/ticket/specs/saveSign.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/saveSign.spec.js
@@ -30,8 +30,6 @@ describe('Ticket saveSign()', () => {
it('should change state for ticket', async() => {
const tx = await models.Ticket.beginTransaction({});
const ticketWithPackedState = 7;
- const ticketStateId = 16;
- const ticketCode = 'PARTIAL_DELIVERED';
spyOn(models.Dms, 'uploadFile').and.returnValue([{id: 1}]);
let ticketTrackingAfter;
@@ -39,16 +37,11 @@ describe('Ticket saveSign()', () => {
const options = {transaction: tx};
const tickets = [ticketWithPackedState];
- const state = await models.State.findById(ticketStateId, null, options);
- await state.updateAttributes({
- code: ticketCode,
- name: ticketCode
- }, options);
+ const expedition = await models.Expedition.findById(3, null, options);
+ expedition.updateAttribute('ticketFk', ticketWithPackedState, options);
await models.Ticket.saveSign(ctx, tickets, null, null, options);
- ticketTrackingAfter = await models.TicketLastState.findOne({
- where: {ticketFk: ticketWithPackedState}
- }, options);
+ ticketTrackingAfter = await models.TicketLastState.findById(ticketWithPackedState, null, options);
await tx.rollback();
} catch (e) {
@@ -56,6 +49,6 @@ describe('Ticket saveSign()', () => {
throw e;
}
- expect(ticketTrackingAfter.name).toBe('PARTIAL_DELIVERED');
+ expect(ticketTrackingAfter.name).toBe('Entregado en parte');
});
});
diff --git a/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js b/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js
index ed9347714..782c31c02 100644
--- a/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js
@@ -76,21 +76,42 @@ describe('ticket setDeleted()', () => {
}
});
- it('should show error trying to delete a ticket with a refund', async() => {
- const tx = await models.Ticket.beginTransaction({});
- let error;
- try {
- const options = {transaction: tx};
+ describe('ticket with refund setDeleted()', () => {
+ it('should show error trying to delete a ticket with a refund', async() => {
+ const tx = await models.Ticket.beginTransaction({});
+ let error;
+ try {
+ const options = {transaction: tx};
- const ticketId = 8;
- await models.Ticket.setDeleted(ctx, ticketId, options);
+ const ticketId = 8;
+ await models.Ticket.setDeleted(ctx, ticketId, options);
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- error = e;
- }
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ error = e;
+ }
- expect(error.message).toContain('Tickets with associated refunds');
+ expect(error.message).toContain('Tickets with associated refunds');
+ });
+
+ it('should delete a ticket with a refund if ticket refund is deleted', async() => {
+ const tx = await models.Ticket.beginTransaction({});
+ try {
+ const options = {transaction: tx};
+
+ const ticketId = 8;
+ const ticketRefundId = 24;
+ await models.Ticket.updateAll({id: ticketRefundId}, {isDeleted: true}, options);
+ await models.Ticket.setDeleted(ctx, ticketId, options);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ error = e;
+ }
+
+ expect(error.message).not.toContain('Tickets with associated refunds');
+ });
});
});
diff --git a/modules/ticket/back/methods/ticket/specs/transferClient.spec.js b/modules/ticket/back/methods/ticket/specs/transferClient.spec.js
index 01fd8fcbe..d3ac3c6aa 100644
--- a/modules/ticket/back/methods/ticket/specs/transferClient.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/transferClient.spec.js
@@ -8,6 +8,7 @@ describe('Ticket transferClient()', () => {
const ctx = beforeAll.getCtx();
let options;
let tx;
+
beforeEach(async() => {
options = {transaction: tx};
tx = await models.Ticket.beginTransaction({});
@@ -21,21 +22,23 @@ describe('Ticket transferClient()', () => {
it('should throw an error as the ticket is not editable', async() => {
try {
const ticketId = 4;
- const clientId = 1;
await models.Ticket.transferClient(ctx, ticketId, clientId, options);
} catch (e) {
- expect(e.message).toEqual(`This ticket is locked`);
+ expect(e.message).toEqual('This ticket is locked');
}
});
- it('should be assigned a different clientFk in the original ticket', async() => {
+ it('should be assigned a different clientFk and nickname in the original ticket', async() => {
await models.Ticket.transferClient(ctx, 2, clientId, options);
const afterTransfer = await models.Ticket.findById(2, null, options);
+ const client = await models.Client.findById(clientId, {fields: ['defaultAddressFk']}, options);
+ const address = await models.Address.findById(client.defaultAddressFk, {fields: ['nickname']}, options);
expect(afterTransfer.clientFk).toEqual(clientId);
+ expect(afterTransfer.nickname).toEqual(address.nickname);
});
- it('should be assigned a different clientFk in the original and refund ticket and claim', async() => {
+ it('should be assigned a different clientFk and nickname in the original and refund ticket and claim', async() => {
await models.Ticket.transferClient(ctx, originalTicketId, clientId, options);
const [originalTicket, refundTicket] = await models.Ticket.find({
@@ -46,8 +49,14 @@ describe('Ticket transferClient()', () => {
where: {ticketFk: originalTicketId}
}, options);
+ const client = await models.Client.findById(clientId, {fields: ['defaultAddressFk']}, options);
+ const address = await models.Address.findById(client.defaultAddressFk, {fields: ['nickname']}, options);
+
expect(originalTicket.clientFk).toEqual(clientId);
expect(refundTicket.clientFk).toEqual(clientId);
expect(claim.clientFk).toEqual(clientId);
+
+ expect(originalTicket.nickname).toEqual(address.nickname);
+ expect(refundTicket.nickname).toEqual(address.nickname);
});
});
diff --git a/modules/ticket/back/methods/ticket/transferClient.js b/modules/ticket/back/methods/ticket/transferClient.js
index d38c0e8a7..95bee008d 100644
--- a/modules/ticket/back/methods/ticket/transferClient.js
+++ b/modules/ticket/back/methods/ticket/transferClient.js
@@ -1,6 +1,6 @@
module.exports = Self => {
Self.remoteMethodCtx('transferClient', {
- description: 'Transfering ticket to another client',
+ description: 'Transferring ticket to another client',
accessType: 'WRITE',
accepts: [{
arg: 'id',
@@ -40,10 +40,13 @@ module.exports = Self => {
include: [{relation: 'refundTicket'}, {relation: 'originalTicket'}]
}, myOptions);
- const {defaultAddressFk: addressFk} = await models.Client.findById(clientFk,
+ const client = await models.Client.findById(clientFk,
{fields: ['id', 'defaultAddressFk']}, myOptions);
- const attributes = {clientFk, addressFk};
+ const address = await models.Address.findById(client.defaultAddressFk,
+ {fields: ['id', 'nickname']}, myOptions);
+
+ const attributes = {clientFk, addressFk: client.defaultAddressFk, nickname: address.nickname};
const tickets = [];
const ticketIds = [];
diff --git a/modules/ticket/back/methods/ticket/transferSales.js b/modules/ticket/back/methods/ticket/transferSales.js
index 54306510c..5f5fdde67 100644
--- a/modules/ticket/back/methods/ticket/transferSales.js
+++ b/modules/ticket/back/methods/ticket/transferSales.js
@@ -83,12 +83,12 @@ module.exports = Self => {
for (const sale of sales) {
const originalSale = map.get(sale.id);
- if (sale.quantity == originalSale.quantity) {
+ if (sale.quantity == originalSale?.quantity) {
query = `UPDATE sale
SET ticketFk = ?
WHERE id = ?`;
await Self.rawSql(query, [ticketId, sale.id], myOptions);
- } else if (sale.quantity != originalSale.quantity) {
+ } else if (sale.quantity != originalSale?.quantity) {
await transferPartialSale(
ticketId, originalSale, sale, myOptions);
}
diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js
index 5582dde5c..462862cb3 100644
--- a/modules/ticket/back/models/ticket-methods.js
+++ b/modules/ticket/back/models/ticket-methods.js
@@ -26,7 +26,7 @@ module.exports = function(Self) {
require('../methods/ticket/isLocked')(Self);
require('../methods/ticket/freightCost')(Self);
require('../methods/ticket/getComponentsSum')(Self);
- require('../methods/ticket/refund')(Self);
+ require('../methods/ticket/cloneAll')(Self);
require('../methods/ticket/deliveryNotePdf')(Self);
require('../methods/ticket/deliveryNoteEmail')(Self);
require('../methods/ticket/deliveryNoteCsv')(Self);
@@ -46,5 +46,4 @@ module.exports = function(Self) {
require('../methods/ticket/invoiceTicketsAndPdf')(Self);
require('../methods/ticket/docuwareDownload')(Self);
require('../methods/ticket/myLastModified')(Self);
- require('../methods/ticket/clone')(Self);
};
diff --git a/modules/ticket/back/models/ticket.json b/modules/ticket/back/models/ticket.json
index d8a3206c6..3f073806e 100644
--- a/modules/ticket/back/models/ticket.json
+++ b/modules/ticket/back/models/ticket.json
@@ -69,6 +69,9 @@
},
"cmrFk": {
"type": "number"
+ },
+ "problem": {
+ "type": "string"
}
},
"relations": {
diff --git a/modules/ticket/front/advance/index.js b/modules/ticket/front/advance/index.js
index 1f47d8242..15ad303e3 100644
--- a/modules/ticket/front/advance/index.js
+++ b/modules/ticket/front/advance/index.js
@@ -62,8 +62,11 @@ export default class Controller extends Section {
setDefaultFilter() {
let today = Date.vnNew();
+ today.setHours(0, 0, 0, 0);
const tomorrow = new Date(today);
tomorrow.setDate(tomorrow.getDate() + 1);
+ tomorrow.setHours(23, 59, 59, 999);
+
this.$http.get(`UserConfigs/getUserConfig`)
.then(res => {
this.filterParams = {
@@ -86,15 +89,6 @@ export default class Controller extends Section {
return checkedLines;
}
- dateRange(value) {
- const minHour = new Date(value);
- minHour.setHours(0, 0, 0, 0);
- const maxHour = new Date(value);
- maxHour.setHours(23, 59, 59, 59);
-
- return [minHour, maxHour];
- }
-
totalPriceColor(totalWithVat) {
return this.isLessThan50(totalWithVat) ? 'warning' : '';
}
diff --git a/modules/ticket/front/advance/index.spec.js b/modules/ticket/front/advance/index.spec.js
index 883993c1c..5caca742c 100644
--- a/modules/ticket/front/advance/index.spec.js
+++ b/modules/ticket/front/advance/index.spec.js
@@ -36,24 +36,6 @@ describe('Component vnTicketAdvance', () => {
});
});
- describe('dateRange()', () => {
- it('should return two dates with the hours at the start and end of the given date', () => {
- const now = Date.vnNew();
-
- const today = now.getDate();
-
- const dateRange = controller.dateRange(now);
- const start = dateRange[0].toString();
- const end = dateRange[1].toString();
-
- expect(start).toContain(today);
- expect(start).toContain('00:00:00');
-
- expect(end).toContain(today);
- expect(end).toContain('23:59:59');
- });
- });
-
describe('moveTicketsAdvance()', () => {
it('should make an HTTP Post query', () => {
jest.spyOn(controller.$.model, 'refresh');
diff --git a/modules/ticket/front/descriptor-menu/index.html b/modules/ticket/front/descriptor-menu/index.html
index 3583b1202..82094d7b8 100644
--- a/modules/ticket/front/descriptor-menu/index.html
+++ b/modules/ticket/front/descriptor-menu/index.html
@@ -6,7 +6,7 @@
diff --git a/modules/ticket/front/descriptor-menu/index.js b/modules/ticket/front/descriptor-menu/index.js
index 32f245454..93948def2 100644
--- a/modules/ticket/front/descriptor-menu/index.js
+++ b/modules/ticket/front/descriptor-menu/index.js
@@ -287,15 +287,24 @@ class Controller extends Section {
}
refund(withWarehouse) {
- const params = {ticketsIds: [this.id], withWarehouse: withWarehouse};
- const query = 'Tickets/refund';
+ const params = {
+ ticketsIds: [this.id],
+ withWarehouse: withWarehouse,
+ negative: true // Asumimos que queremos cantidades negativas para reembolsos
+ };
+ const query = 'Tickets/cloneAll';
return this.$http.post(query, params)
.then(res => {
const [refundTicket] = res.data;
- this.vnApp.showSuccess(this.$t('The following refund ticket have been created', {
+ this.vnApp.showSuccess(this.$t('The following refund ticket has been created', {
ticketId: refundTicket.id
}));
this.$state.go('ticket.card.sale', {id: refundTicket.id});
+ })
+ .catch(error => {
+ this.vnApp.showError(this.$t('Error creating refund ticket', {
+ error: error.data?.error?.message || 'Unknown error'
+ }));
});
}
diff --git a/modules/ticket/front/descriptor-menu/index.spec.js b/modules/ticket/front/descriptor-menu/index.spec.js
index 94a991db8..cffbad62e 100644
--- a/modules/ticket/front/descriptor-menu/index.spec.js
+++ b/modules/ticket/front/descriptor-menu/index.spec.js
@@ -217,24 +217,6 @@ describe('Ticket Component vnTicketDescriptorMenu', () => {
});
});
- describe('refund()', () => {
- it('should make a query and go to ticket.card.sale', () => {
- controller.$state.go = jest.fn();
-
- controller._id = ticket.id;
-
- const params = {
- ticketsIds: [16]
- };
- const response = {id: 99};
- $httpBackend.expectPOST('Tickets/refund', params).respond([response]);
- controller.refund();
- $httpBackend.flush();
-
- expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.sale', response);
- });
- });
-
describe('sendChangesSms()', () => {
it('should make a query and open the sms dialog', () => {
controller.$.sms = {open: () => {}};
diff --git a/modules/ticket/front/descriptor/index.html b/modules/ticket/front/descriptor/index.html
index 75bcd2801..32a30833b 100644
--- a/modules/ticket/front/descriptor/index.html
+++ b/modules/ticket/front/descriptor/index.html
@@ -58,7 +58,7 @@
+ ng-if="$ctrl.ticket.problem.includes('hasRisk')">
-
-
-
-
@@ -208,7 +198,7 @@
-
+
diff --git a/modules/ticket/front/sale/index.js b/modules/ticket/front/sale/index.js
index 7ff8d89e3..4f8494ed0 100644
--- a/modules/ticket/front/sale/index.js
+++ b/modules/ticket/front/sale/index.js
@@ -214,7 +214,7 @@ class Controller extends Section {
const params = {ticketId: this.ticket.id, sales: sales};
this.resetChanges();
this.$http.post(`Claims/createFromSales`, params)
- .then(res => this.$state.go('claim.card.basicData', {id: res.data.id}));
+ .then(async res => window.location.href = await this.vnApp.getUrl(`claim/${res.data.id}/basic-data`));
}
showTransferPopover(event) {
@@ -558,6 +558,10 @@ class Controller extends Section {
changedModelId: saleId
});
}
+
+ async goToLilium(section, id) {
+ window.location.href = await this.vnApp.getUrl(`claim/${id}/${section}`);
+ }
}
ngModule.vnComponent('vnTicketSale', {
diff --git a/modules/ticket/front/sale/index.spec.js b/modules/ticket/front/sale/index.spec.js
index 8200d6b89..931776619 100644
--- a/modules/ticket/front/sale/index.spec.js
+++ b/modules/ticket/front/sale/index.spec.js
@@ -295,20 +295,26 @@ describe('Ticket', () => {
describe('onCreateClaimAccepted()', () => {
it('should perform a query and call window open', () => {
jest.spyOn(controller, 'resetChanges').mockReturnThis();
- jest.spyOn(controller.$state, 'go').mockReturnThis();
+ jest.spyOn(controller.vnApp, 'getUrl').mockReturnThis();
+ Object.defineProperty(window, 'location', {
+ value: {
+ href: () => {}
+ },
+ });
+ jest.spyOn(controller.window.location, 'href');
const newEmptySale = {quantity: 10};
controller.sales.push(newEmptySale);
const firstSale = controller.sales[0];
+ const claimId = 1;
firstSale.checked = true;
const expectedParams = {ticketId: 1, sales: [firstSale]};
- $httpBackend.expect('POST', `Claims/createFromSales`, expectedParams).respond(200, {id: 1});
+ $httpBackend.expect('POST', `Claims/createFromSales`, expectedParams).respond(200, {id: claimId});
controller.onCreateClaimAccepted();
$httpBackend.flush();
expect(controller.resetChanges).toHaveBeenCalledWith();
- expect(controller.$state.go).toHaveBeenCalledWith('claim.card.basicData', {id: 1});
});
});
diff --git a/modules/ticket/front/summary/index.html b/modules/ticket/front/summary/index.html
index 025078d36..7ee260f74 100644
--- a/modules/ticket/front/summary/index.html
+++ b/modules/ticket/front/summary/index.html
@@ -152,13 +152,13 @@
-
+
-
+
{
arg: 'continent',
type: 'string',
description: 'The continent code'
- },
+ }, {
+ arg: 'shipmentHour',
+ type: 'string',
+ description: 'The shipment hour'
+ }, {
+ arg: 'landingHour',
+ type: 'string',
+ description: 'The landing hour'
+ }
],
returns: {
type: ['Object'],
@@ -130,6 +138,8 @@ module.exports = Self => {
t.isReceived,
t.m3,
t.kg,
+ t.shipmentHour,
+ t.landingHour,
t.cargoSupplierFk,
t.totalEntries,
am.name agencyModeName,
diff --git a/modules/travel/back/models/travel.json b/modules/travel/back/models/travel.json
index 701894a76..0ebf683e7 100644
--- a/modules/travel/back/models/travel.json
+++ b/modules/travel/back/models/travel.json
@@ -44,6 +44,12 @@
},
"agencyModeFk": {
"type": "number"
+ },
+ "shipmentHour": {
+ "type": "string"
+ },
+ "landingHour": {
+ "type": "string"
}
},
"relations": {
@@ -64,3 +70,4 @@
}
}
}
+
diff --git a/modules/worker/back/locale/worker-time-control/en.yml b/modules/worker/back/locale/worker-time-control/en.yml
new file mode 100644
index 000000000..f1de66474
--- /dev/null
+++ b/modules/worker/back/locale/worker-time-control/en.yml
@@ -0,0 +1,7 @@
+name: time control
+columns:
+ direction: direction
+ isSendMail: sent mail
+ logExclude: excluded log
+ manual: manual
+ timed: timed
diff --git a/modules/worker/back/locale/worker-time-control/es.yml b/modules/worker/back/locale/worker-time-control/es.yml
new file mode 100644
index 000000000..1739c487c
--- /dev/null
+++ b/modules/worker/back/locale/worker-time-control/es.yml
@@ -0,0 +1,7 @@
+name: control horario
+columns:
+ direction: dirección
+ isSendMail: correo enviado
+ logExclude: registro excluido
+ manual: manual
+ timed: fichada
\ No newline at end of file
diff --git a/modules/worker/back/methods/worker-time-control/sendMail.js b/modules/worker/back/methods/worker-time-control/sendMail.js
index e43f4a8ab..2e1e00d83 100644
--- a/modules/worker/back/methods/worker-time-control/sendMail.js
+++ b/modules/worker/back/methods/worker-time-control/sendMail.js
@@ -165,8 +165,8 @@ module.exports = Self => {
const sql = ParameterizedSQL.join(stmts, ';');
const days = await conn.executeStmt(sql, myOptions);
- let previousWorkerFk = days[index][0].workerFk;
- let previousReceiver = days[index][0].receiver;
+ let previousWorkerFk = days[index][0]?.workerFk;
+ let previousReceiver = days[index][0]?.receiver;
const workerTimeControlConfig = await models.WorkerTimeControlConfig.findOne(null, myOptions);
diff --git a/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js b/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js
index f19ab17e1..e352eb3cb 100644
--- a/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js
+++ b/modules/worker/back/methods/worker-time-control/weeklyHourRecordEmail.js
@@ -61,7 +61,7 @@ module.exports = Self => {
const url = `${salix.url}worker/${args.workerId}/time-control?timestamp=${timestamp}`;
ctx.args.url = url;
- await models.WorkerTimeControl.updateMailState(ctx, ctx.workerId, myOptions);
+ await models.WorkerTimeControl.updateMailState(ctx, ctx.args.workerId, myOptions);
return Self.sendTemplate(ctx, 'weekly-hour-record');
};
diff --git a/modules/worker/back/model-config.json b/modules/worker/back/model-config.json
index 651228c04..7bfc667ac 100644
--- a/modules/worker/back/model-config.json
+++ b/modules/worker/back/model-config.json
@@ -125,6 +125,12 @@
"Locker": {
"dataSource": "vn"
},
+ "MedicalReview": {
+ "dataSource": "vn"
+ },
+ "MedicalCenter": {
+ "dataSource": "vn"
+ },
"PayrollComponent": {
"dataSource": "vn"
},
diff --git a/modules/worker/back/models/calendar.json b/modules/worker/back/models/calendar.json
index 40d29c519..4c68c7793 100644
--- a/modules/worker/back/models/calendar.json
+++ b/modules/worker/back/models/calendar.json
@@ -1,9 +1,8 @@
{
"name": "Calendar",
"base": "VnModel",
- "log": {
- "model": "WorkerLog",
- "relation": "labour"
+ "mixins": {
+ "Loggable": true
},
"options": {
"mysql": {
diff --git a/modules/worker/back/models/medical-center.json b/modules/worker/back/models/medical-center.json
new file mode 100644
index 000000000..5f0a3bbd7
--- /dev/null
+++ b/modules/worker/back/models/medical-center.json
@@ -0,0 +1,19 @@
+{
+ "name": "MedicalCenter",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "medicalCenter"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "description": "Identifier"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+}
diff --git a/modules/worker/back/models/medical-review.json b/modules/worker/back/models/medical-review.json
new file mode 100644
index 000000000..6fe7d7a01
--- /dev/null
+++ b/modules/worker/back/models/medical-review.json
@@ -0,0 +1,52 @@
+{
+ "name": "MedicalReview",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "medicalReview"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "description": "Identifier"
+ },
+ "workerFk": {
+ "type": "number"
+ },
+ "centerFk": {
+ "type": "number"
+ },
+ "date": {
+ "type": "date"
+ },
+ "time": {
+ "type": "string"
+ },
+ "isFit": {
+ "type": "boolean"
+ },
+ "amount": {
+ "type": "number"
+ },
+ "invoice": {
+ "type": "string"
+ },
+ "remark": {
+ "type": "string"
+ }
+ },
+ "relations": {
+ "worker": {
+ "type": "belongsTo",
+ "model": "Worker",
+ "foreignKey": "workerFk"
+ },
+ "center": {
+ "type": "belongsTo",
+ "model": "MedicalCenter",
+ "foreignKey": "centerFk"
+ }
+ }
+}
diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json
index 2c749144b..b809768a4 100644
--- a/modules/worker/back/models/worker.json
+++ b/modules/worker/back/models/worker.json
@@ -116,6 +116,11 @@
"model": "Locker",
"foreignKey": "workerFk"
},
+ "medicalReview": {
+ "type": "hasMany",
+ "model": "MedicalReview",
+ "foreignKey": "workerFk"
+ },
"incomes": {
"type": "hasMany",
"model": "WorkerIncome",
@@ -135,5 +140,41 @@
"principalType": "ROLE",
"principalId": "$owner"
}
- ]
-}
+ ],
+ "scopes": {
+ "descriptor": {
+ "include": [
+ {
+ "relation": "user",
+ "scope": {
+ "fields": [
+ "name",
+ "nickname"
+ ],
+ "include": {
+ "relation": "emailUser",
+ "scope": {
+ "fields": [
+ "email"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "relation": "department",
+ "scope": {
+ "include": [
+ {
+ "relation": "department"
+ }
+ ]
+ }
+ },
+ {
+ "relation": "sip"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/worker/front/basic-data/index.html b/modules/worker/front/basic-data/index.html
deleted file mode 100644
index bece1b6fd..000000000
--- a/modules/worker/front/basic-data/index.html
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
diff --git a/modules/worker/front/basic-data/index.js b/modules/worker/front/basic-data/index.js
deleted file mode 100644
index ea75d7b97..000000000
--- a/modules/worker/front/basic-data/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.maritalStatus = [
- {code: 'M', name: this.$t('Married')},
- {code: 'S', name: this.$t('Single')}
- ];
- }
- onSubmit() {
- return this.$.watcher.submit()
- .then(() => this.card.reload());
- }
-}
-
-ngModule.vnComponent('vnWorkerBasicData', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- worker: '<'
- },
- require: {
- card: '^vnWorkerCard'
- }
-});
diff --git a/modules/worker/front/basic-data/locale/es.yml b/modules/worker/front/basic-data/locale/es.yml
deleted file mode 100644
index edf08de90..000000000
--- a/modules/worker/front/basic-data/locale/es.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-Marital status: Estado civil
-Origin country: País origen
-Education level: Nivel educación
-SSN: NSS
-Married: Casado/a
-Single: Soltero/a
-Business phone: Teléfono de empresa
-Mobile extension: Extensión móvil
-Locker: Taquilla
diff --git a/modules/worker/front/calendar/index.html b/modules/worker/front/calendar/index.html
deleted file mode 100644
index 1b0608633..000000000
--- a/modules/worker/front/calendar/index.html
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
- Autonomous worker
-
-
-
-
-
{{'Contract' | translate}} #{{$ctrl.businessId}}
-
- {{'Used' | translate}} {{$ctrl.contractHolidays.holidaysEnjoyed || 0}}
- {{'of' | translate}} {{$ctrl.contractHolidays.totalHolidays || 0}} {{'days' | translate}}
-
-
- {{'Spent' | translate}} {{$ctrl.contractHolidays.hoursEnjoyed || 0}}
- {{'of' | translate}} {{$ctrl.contractHolidays.totalHours || 0}} {{'hours' | translate}}
-
-
- {{'Paid holidays' | translate}} {{$ctrl.contractHolidays.payedHolidays || 0}} {{'days' | translate}}
-
-
-
-
-
{{'Year' | translate}} {{$ctrl.year}}
-
- {{'Used' | translate}} {{$ctrl.yearHolidays.holidaysEnjoyed || 0}}
- {{'of' | translate}} {{$ctrl.yearHolidays.totalHolidays || 0}} {{'days' | translate}}
-
-
- {{'Spent' | translate}} {{$ctrl.yearHolidays.hoursEnjoyed || 0}}
- {{'of' | translate}} {{$ctrl.yearHolidays.totalHours || 0}} {{'hours' | translate}}
-
-
-
-
-
-
-
-
- #{{businessFk}}
-
- {{started | date: 'dd/MM/yyyy'}} - {{ended ? (ended | date: 'dd/MM/yyyy') : 'Indef.'}}
-
-
-
-
-
-
-
-
-
-
- {{absenceType.name}}
-
-
-
-
-
-
- Festive
-
-
-
-
- Current day
-
-
-
-
-
-
-
-
diff --git a/modules/worker/front/calendar/index.js b/modules/worker/front/calendar/index.js
deleted file mode 100644
index 5606ad0ce..000000000
--- a/modules/worker/front/calendar/index.js
+++ /dev/null
@@ -1,302 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.date = Date.vnNew();
- this.events = {};
- this.buildYearFilter();
- }
-
- get year() {
- return this.date.getFullYear();
- }
-
- set year(value) {
- const newYear = Date.vnNew();
- newYear.setFullYear(value);
-
- this.date = newYear;
-
- this.refresh()
- .then(() => this.repaint())
- .then(() => this.getContractHolidays())
- .then(() => this.getYearHolidays());
- }
-
- get businessId() {
- return this._businessId;
- }
-
- set businessId(value) {
- if (!this.card.hasWorkCenter) return;
-
- this._businessId = value;
- if (value) {
- this.refresh()
- .then(() => this.repaint())
- .then(() => this.getContractHolidays())
- .then(() => this.getYearHolidays());
- }
- }
-
- get date() {
- return this._date;
- }
-
- set date(value) {
- this._date = value;
- value.setHours(0, 0, 0, 0);
-
- this.months = new Array(12);
-
- for (let i = 0; i < this.months.length; i++) {
- const now = new Date(value.getTime());
- now.setDate(1);
- now.setMonth(i);
- this.months[i] = now;
- }
- }
-
- get worker() {
- return this._worker;
- }
-
- set worker(value) {
- this._worker = value;
- if (value) {
- this.getIsSubordinate();
- this.getActiveContract();
- }
- }
-
- buildYearFilter() {
- const now = Date.vnNew();
- now.setFullYear(now.getFullYear() + 1);
-
- const maxYear = now.getFullYear();
- const minRange = maxYear - 5;
-
- const years = [];
- for (let i = maxYear; i > minRange; i--)
- years.push({year: i});
-
- this.yearFilter = years;
- }
-
- getIsSubordinate() {
- this.$http.get(`Workers/${this.worker.id}/isSubordinate`)
- .then(res => this.isSubordinate = res.data);
- }
-
- getActiveContract() {
- this.$http.get(`Workers/${this.worker.id}/activeContract`)
- .then(res => {
- if (res.data) this.businessId = res.data.businessFk;
- });
- }
-
- getContractHolidays() {
- this.getHolidays({
- businessFk: this.businessId,
- year: this.year
- }, data => this.contractHolidays = data);
- }
-
- getYearHolidays() {
- this.getHolidays({
- year: this.year
- }, data => this.yearHolidays = data);
- }
-
- getHolidays(params, cb) {
- this.$http.get(`Workers/${this.worker.id}/holidays`, {params})
- .then(res => cb(res.data));
- }
-
- onData(data) {
- this.events = {};
- this.calendar = data.calendar;
-
- let addEvent = (day, newEvent) => {
- const timestamp = new Date(day).getTime();
- const event = this.events[timestamp];
-
- if (event) {
- const oldName = event.name;
- Object.assign(event, newEvent);
- event.name = `${oldName}, ${event.name}`;
- } else
- this.events[timestamp] = newEvent;
- };
-
- if (data.holidays) {
- data.holidays.forEach(holiday => {
- const holidayDetail = holiday.detail && holiday.detail.name;
- const holidayType = holiday.type && holiday.type.name;
- const holidayName = holidayDetail || holidayType;
-
- addEvent(holiday.dated, {
- name: holidayName,
- className: 'festive'
- });
- });
- }
- if (data.absences) {
- data.absences.forEach(absence => {
- let type = absence.absenceType;
- addEvent(absence.dated, {
- name: type.name,
- color: type.rgb,
- type: type.code,
- absenceId: absence.id
- });
- });
- }
- }
-
- repaint() {
- let calendars = this.element.querySelectorAll('vn-calendar');
- for (let calendar of calendars)
- calendar.$ctrl.repaint();
- }
-
- formatDay(day, element) {
- let event = this.events[day.getTime()];
- if (!event) return;
-
- let dayNumber = element.firstElementChild;
- dayNumber.title = event.name;
- dayNumber.style.backgroundColor = event.color;
-
- if (event.border)
- dayNumber.style.border = event.border;
-
- if (event.className)
- dayNumber.classList.add(event.className);
- }
-
- pick(absenceType) {
- if (!this.isSubordinate) return;
- if (absenceType == this.absenceType)
- absenceType = null;
-
- this.absenceType = absenceType;
- }
-
- onSelection($event, $days) {
- if (!this.absenceType)
- return this.vnApp.showMessage(this.$t('Choose an absence type from the right menu'));
-
- const day = $days[0];
- const stamp = day.getTime();
- const event = this.events[stamp];
- const calendar = $event.target.closest('vn-calendar').$ctrl;
-
- if (event && event.absenceId) {
- if (event.type == this.absenceType.code)
- this.delete(calendar, day, event);
- else
- this.edit(calendar, event);
- } else
- this.create(calendar, day);
- }
-
- create(calendar, dated) {
- const absenceType = this.absenceType;
- const params = {
- dated: dated,
- absenceTypeId: absenceType.id,
- businessFk: this.businessId
- };
-
- const path = `Workers/${this.$params.id}/createAbsence`;
- this.$http.post(path, params).then(res => {
- const newEvent = res.data;
- this.events[dated.getTime()] = {
- name: absenceType.name,
- color: absenceType.rgb,
- type: absenceType.code,
- absenceId: newEvent.id
- };
-
- this.repaintCanceller(() =>
- this.refresh()
- .then(calendar.repaint())
- .then(() => this.getContractHolidays())
- .then(() => this.getYearHolidays())
- .then(() => this.repaint())
- );
- });
- }
-
- edit(calendar, event) {
- const absenceType = this.absenceType;
- const params = {
- absenceId: event.absenceId,
- absenceTypeId: absenceType.id
- };
- const path = `Workers/${this.$params.id}/updateAbsence`;
- this.$http.patch(path, params).then(() => {
- event.color = absenceType.rgb;
- event.name = absenceType.name;
- event.type = absenceType.code;
-
- this.repaintCanceller(() =>
- this.refresh()
- .then(calendar.repaint())
- .then(() => this.getContractHolidays())
- .then(() => this.getYearHolidays())
- );
- });
- }
-
- delete(calendar, day, event) {
- const params = {absenceId: event.absenceId};
- const path = `Workers/${this.$params.id}/deleteAbsence`;
- this.$http.delete(path, {params}).then(() => {
- delete this.events[day.getTime()];
-
- this.repaintCanceller(() =>
- this.refresh()
- .then(calendar.repaint())
- .then(() => this.getContractHolidays())
- .then(() => this.getYearHolidays())
- .then(() => this.repaint())
- );
- });
- }
-
- repaintCanceller(cb) {
- if (this.canceller) {
- clearTimeout(this.canceller);
- this.canceller = null;
- }
-
- this.canceller = setTimeout(
- () => cb(), 500);
- }
-
- refresh() {
- const params = {
- workerFk: this.$params.id,
- businessFk: this.businessId,
- year: this.year
- };
- return this.$http.get(`Calendars/absences`, {params})
- .then(res => this.onData(res.data));
- }
-}
-
-ngModule.vnComponent('vnWorkerCalendar', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- worker: '<'
- },
- require: {
- card: '^vnWorkerCard'
- }
-});
diff --git a/modules/worker/front/calendar/index.spec.js b/modules/worker/front/calendar/index.spec.js
deleted file mode 100644
index 5d7ae0795..000000000
--- a/modules/worker/front/calendar/index.spec.js
+++ /dev/null
@@ -1,346 +0,0 @@
-import './index';
-
-describe('Worker', () => {
- describe('Component vnWorkerCalendar', () => {
- let $httpBackend;
- let $httpParamSerializer;
- let $scope;
- let controller;
- let year = Date.vnNew().getFullYear();
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpParamSerializer_, _$httpBackend_) => {
- $scope = $rootScope.$new();
- $httpBackend = _$httpBackend_;
- $httpParamSerializer = _$httpParamSerializer_;
- const $element = angular.element(' ');
- controller = $componentController('vnWorkerCalendar', {$element, $scope});
- controller.isSubordinate = true;
- controller.absenceType = {id: 1, name: 'Holiday', code: 'holiday', rgb: 'red'};
- controller.$params.id = 1106;
- controller._worker = {id: 1106};
- controller.card = {
- hasWorkCenter: true
- };
- }));
-
- describe('year() getter', () => {
- it(`should return the year number of the calendar date`, () => {
- expect(controller.year).toEqual(year);
- });
- });
-
- describe('year() setter', () => {
- it(`should set the year of the calendar date`, () => {
- jest.spyOn(controller, 'refresh').mockReturnValue(Promise.resolve());
-
- const previousYear = year - 1;
- controller.year = previousYear;
-
- expect(controller.year).toEqual(previousYear);
- expect(controller.date.getFullYear()).toEqual(previousYear);
- expect(controller.refresh).toHaveBeenCalledWith();
- });
- });
-
- describe('businessId() setter', () => {
- it(`should set the contract id and then call to the refresh method`, () => {
- jest.spyOn(controller, 'refresh').mockReturnValue(Promise.resolve());
-
- controller.businessId = 1106;
-
- expect(controller.refresh).toHaveBeenCalledWith();
- });
- });
-
- describe('months property', () => {
- it(`should return an array of twelve months length`, () => {
- const started = new Date(year, 0, 1);
- const ended = new Date(year, 11, 1);
-
- expect(controller.months.length).toEqual(12);
- expect(controller.months[0]).toEqual(started);
- expect(controller.months[11]).toEqual(ended);
- });
- });
-
- describe('worker() setter', () => {
- it(`should perform a get query and set the reponse data on the model`, () => {
- controller.getIsSubordinate = jest.fn();
- controller.getActiveContract = jest.fn();
-
- let today = Date.vnNew();
- let tomorrow = new Date(today.getTime());
- tomorrow.setDate(tomorrow.getDate() + 1);
-
- let yesterday = new Date(today.getTime());
- yesterday.setDate(yesterday.getDate() - 1);
-
- controller.worker = {id: 1107};
-
- expect(controller.getIsSubordinate).toHaveBeenCalledWith();
- expect(controller.getActiveContract).toHaveBeenCalledWith();
- });
- });
-
- describe('getIsSubordinate()', () => {
- it(`should return whether the worker is a subordinate`, () => {
- $httpBackend.expect('GET', `Workers/1106/isSubordinate`).respond(true);
- controller.getIsSubordinate();
- $httpBackend.flush();
-
- expect(controller.isSubordinate).toBe(true);
- });
- });
-
- describe('getActiveContract()', () => {
- it(`should return the current contract and then set the businessId property`, () => {
- jest.spyOn(controller, 'refresh').mockReturnValue(Promise.resolve());
-
- $httpBackend.expect('GET', `Workers/1106/activeContract`).respond({businessFk: 1106});
- controller.getActiveContract();
- $httpBackend.flush();
-
- expect(controller.businessId).toEqual(1106);
- });
- });
-
- describe('getContractHolidays()', () => {
- it(`should return the worker holidays amount and then set the contractHolidays property`, () => {
- const today = Date.vnNew();
- const year = today.getFullYear();
-
- const serializedParams = $httpParamSerializer({year});
- $httpBackend.expect('GET', `Workers/1106/holidays?${serializedParams}`).respond({totalHolidays: 28});
- controller.getContractHolidays();
- $httpBackend.flush();
-
- expect(controller.contractHolidays).toEqual({totalHolidays: 28});
- });
- });
-
- describe('formatDay()', () => {
- it(`should set the day element style`, () => {
- const today = Date.vnNew();
-
- controller.events[today.getTime()] = {
- name: 'Holiday',
- color: '#000'
- };
-
- const dayElement = angular.element('
')[0];
- const dayNumber = dayElement.firstElementChild;
-
- controller.formatDay(today, dayElement);
-
- expect(dayNumber.title).toEqual('Holiday');
- expect(dayNumber.style.backgroundColor).toEqual('rgb(0, 0, 0)');
- });
- });
-
- describe('pick()', () => {
- it(`should set the absenceType property to null if they match with the current one`, () => {
- const absenceType = {id: 1, name: 'Holiday'};
- controller.absenceType = absenceType;
- controller.pick(absenceType);
-
- expect(controller.absenceType).toBeNull();
- });
-
- it(`should set the absenceType property`, () => {
- const absenceType = {id: 1, name: 'Holiday'};
- const expectedAbsence = {id: 2, name: 'Leave of absence'};
- controller.absenceType = absenceType;
- controller.pick(expectedAbsence);
-
- expect(controller.absenceType).toEqual(expectedAbsence);
- });
- });
-
- describe('onSelection()', () => {
- it(`should show an snackbar message if no absence type is selected`, () => {
- jest.spyOn(controller.vnApp, 'showMessage').mockReturnThis();
-
- const $event = {};
- const $days = [];
- controller.absenceType = null;
- controller.onSelection($event, $days);
-
- expect(controller.vnApp.showMessage).toHaveBeenCalledWith('Choose an absence type from the right menu');
- });
-
- it(`should call to the create() method`, () => {
- jest.spyOn(controller, 'create').mockReturnThis();
-
- const selectedDay = Date.vnNew();
- const $event = {
- target: {
- closest: () => {
- return {$ctrl: {}};
- }
- }
- };
- const $days = [selectedDay];
- controller.absenceType = {id: 1};
- controller.onSelection($event, $days);
-
- expect(controller.create).toHaveBeenCalledWith(jasmine.any(Object), selectedDay);
- });
-
- it(`should call to the delete() method`, () => {
- jest.spyOn(controller, 'delete').mockReturnThis();
-
- const selectedDay = Date.vnNew();
- const expectedEvent = {
- dated: selectedDay,
- type: 'holiday',
- absenceId: 1
- };
- const $event = {
- target: {
- closest: () => {
- return {$ctrl: {}};
- }
- }
- };
- const $days = [selectedDay];
- controller.events[selectedDay.getTime()] = expectedEvent;
- controller.absenceType = {id: 1, code: 'holiday'};
- controller.onSelection($event, $days);
-
- expect(controller.delete).toHaveBeenCalledWith(jasmine.any(Object), selectedDay, expectedEvent);
- });
-
- it(`should call to the edit() method`, () => {
- jest.spyOn(controller, 'edit').mockReturnThis();
-
- const selectedDay = Date.vnNew();
- const expectedEvent = {
- dated: selectedDay,
- type: 'leaveOfAbsence',
- absenceId: 1
- };
- const $event = {
- target: {
- closest: () => {
- return {$ctrl: {}};
- }
- }
- };
- const $days = [selectedDay];
- controller.events[selectedDay.getTime()] = expectedEvent;
- controller.absenceType = {id: 1, code: 'holiday'};
- controller.onSelection($event, $days);
-
- expect(controller.edit).toHaveBeenCalledWith(jasmine.any(Object), expectedEvent);
- });
- });
-
- describe('create()', () => {
- it(`should make a HTTP POST query and then call to the repaintCanceller() method`, () => {
- jest.spyOn(controller, 'repaintCanceller').mockReturnThis();
-
- const dated = Date.vnNew();
- const calendarElement = {};
- const expectedResponse = {id: 10};
-
- $httpBackend.expect('POST', `Workers/1106/createAbsence`).respond(200, expectedResponse);
- controller.create(calendarElement, dated);
- $httpBackend.flush();
-
- const createdEvent = controller.events[dated.getTime()];
- const absenceType = controller.absenceType;
-
- expect(createdEvent.absenceId).toEqual(expectedResponse.id);
- expect(createdEvent.color).toEqual(absenceType.rgb);
- expect(controller.repaintCanceller).toHaveBeenCalled();
- });
- });
-
- describe('edit()', () => {
- it(`should make a HTTP PATCH query and then call to the repaintCanceller() method`, () => {
- jest.spyOn(controller, 'repaintCanceller').mockReturnThis();
-
- const event = {absenceId: 10};
- const calendarElement = {};
- const newAbsenceType = {
- id: 2,
- name: 'Leave of absence',
- code: 'leaveOfAbsence',
- rgb: 'purple'
- };
- controller.absenceType = newAbsenceType;
-
- const expectedParams = {absenceId: 10, absenceTypeId: 2};
- $httpBackend.expect('PATCH', `Workers/1106/updateAbsence`, expectedParams).respond(200);
- controller.edit(calendarElement, event);
- $httpBackend.flush();
-
- expect(event.name).toEqual(newAbsenceType.name);
- expect(event.color).toEqual(newAbsenceType.rgb);
- expect(event.type).toEqual(newAbsenceType.code);
- expect(controller.repaintCanceller).toHaveBeenCalled();
- });
- });
-
- describe('delete()', () => {
- it(`should make a HTTP DELETE query and then call to the repaintCanceller() method`, () => {
- jest.spyOn(controller, 'repaintCanceller').mockReturnThis();
-
- const expectedParams = {absenceId: 10};
- const calendarElement = {};
- const selectedDay = Date.vnNew();
- const expectedEvent = {
- dated: selectedDay,
- type: 'leaveOfAbsence',
- absenceId: 10
- };
-
- controller.events[selectedDay.getTime()] = expectedEvent;
-
- const serializedParams = $httpParamSerializer(expectedParams);
- $httpBackend.expect('DELETE', `Workers/1106/deleteAbsence?${serializedParams}`).respond(200);
- controller.delete(calendarElement, selectedDay, expectedEvent);
- $httpBackend.flush();
-
- const event = controller.events[selectedDay.getTime()];
-
- expect(event).toBeUndefined();
- expect(controller.repaintCanceller).toHaveBeenCalled();
- });
- });
-
- describe('repaintCanceller()', () => {
- it(`should cancell the callback execution timer`, () => {
- jest.spyOn(window, 'clearTimeout');
- jest.spyOn(window, 'setTimeout');
-
- const timeoutId = 90;
- controller.canceller = timeoutId;
-
- controller.repaintCanceller(() => {
- return 'My callback';
- });
-
- expect(window.clearTimeout).toHaveBeenCalledWith(timeoutId);
- expect(window.setTimeout).toHaveBeenCalledWith(jasmine.any(Function), 500);
- });
- });
-
- describe('refresh()', () => {
- it(`should make a HTTP GET query and then call to the onData() method`, () => {
- jest.spyOn(controller, 'onData').mockReturnThis();
-
- const expecteResponse = [{id: 1}];
- const expectedParams = {workerFk: controller.worker.id, year: year};
- const serializedParams = $httpParamSerializer(expectedParams);
- $httpBackend.expect('GET', `Calendars/absences?${serializedParams}`).respond(200, expecteResponse);
- controller.refresh();
- $httpBackend.flush();
-
- expect(controller.onData).toHaveBeenCalledWith(expecteResponse);
- });
- });
- });
-});
diff --git a/modules/worker/front/calendar/locale/es.yml b/modules/worker/front/calendar/locale/es.yml
deleted file mode 100644
index 50bb4bb52..000000000
--- a/modules/worker/front/calendar/locale/es.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-Calendar: Calendario
-Contract: Contrato
-Festive: Festivo
-Used: Utilizados
-Spent: Utilizadas
-Year: Año
-of: de
-days: días
-hours: horas
-Choose an absence type from the right menu: Elige un tipo de ausencia desde el menú de la derecha
-To start adding absences, click an absence type from the right menu and then on the day you want to add an absence: Para empezar a añadir ausencias, haz clic en un tipo de ausencia desde el menu de la derecha y después en el día que quieres añadir la ausencia
-You can just add absences within the current year: Solo puedes añadir ausencias dentro del año actual
-Current day: Día actual
-Paid holidays: Vacaciones pagadas
-Autonomous worker: Trabajador autónomo
diff --git a/modules/worker/front/calendar/style.scss b/modules/worker/front/calendar/style.scss
deleted file mode 100644
index e99f64689..000000000
--- a/modules/worker/front/calendar/style.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-@import "variables";
-
-vn-worker-calendar {
- .calendars {
- position: relative;
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- align-items: center;
- box-sizing: border-box;
- padding: $spacing-md;
-
- & > vn-calendar {
- border: $border-thin;
- margin: $spacing-md;
- padding: $spacing-xs;
- max-width: 288px;
- }
- }
-
- vn-chip.selectable {
- cursor: pointer
- }
-
- vn-chip.selectable:hover {
- opacity: 0.8
- }
-
- vn-chip vn-avatar {
- text-align: center;
- color: white
- }
-
- vn-icon[icon="info"] {
- position: absolute;
- top: 16px;
- right: 16px
- }
-
- vn-side-menu div > .input {
- border-bottom: $border-thin;
- }
-
- .festive,
- vn-avatar.today {
- color: $color-font;
- width: 24px;
- min-width: 24px;
- height: 24px
- }
-
- .festive {
- border: 2px solid $color-alert
- }
-
- vn-avatar.today {
- border: 2px solid $color-font-link
- }
-
- .check {
- margin-top: 0.5px;
- margin-left: -3px;
- font-size: 125%;
- }
-}
diff --git a/modules/worker/front/create/index.html b/modules/worker/front/create/index.html
deleted file mode 100644
index 3030ffecd..000000000
--- a/modules/worker/front/create/index.html
+++ /dev/null
@@ -1,198 +0,0 @@
-
-
-
-
-
-
diff --git a/modules/worker/front/create/index.js b/modules/worker/front/create/index.js
deleted file mode 100644
index e6d65221f..000000000
--- a/modules/worker/front/create/index.js
+++ /dev/null
@@ -1,141 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.worker = {companyFk: this.vnConfig.user.companyFk};
- this.$http.get(`WorkerConfigs/findOne`, {field: ['payMethodFk']}).then(res => {
- if (res.data) this.worker.payMethodFk = res.data.payMethodFk;
- });
- }
-
- onSubmit() {
- if (!this.worker.iban && !this.worker.bankEntityFk) {
- delete this.worker.iban;
- delete this.worker.bankEntityFk;
- }
-
- return this.$.watcher.submit().then(json => {
- this.$state.go('worker.card.basicData', {id: json.data.id});
- });
- }
-
- get ibanCountry() {
- if (!this.worker || !this.worker.iban) return false;
-
- let countryCode = this.worker.iban.substr(0, 2);
-
- return countryCode;
- }
-
- autofillBic() {
- if (!this.worker || !this.worker.iban) return;
-
- let bankEntityId = parseInt(this.worker.iban.substr(4, 4));
- let filter = {where: {id: bankEntityId}};
-
- this.$http.get(`BankEntities`, {filter}).then(response => {
- const hasData = response.data && response.data[0];
-
- if (hasData)
- this.worker.bankEntityFk = response.data[0].id;
- else if (!hasData)
- this.worker.bankEntityFk = null;
- });
- }
-
- generateCodeUser() {
- if (!this.worker.firstName || !this.worker.lastNames) return;
-
- const totalName = this.worker.firstName.concat(' ' + this.worker.lastNames).toLowerCase();
- const totalNameArray = totalName.split(' ');
- let newCode = '';
-
- for (let part of totalNameArray)
- newCode += part.charAt(0);
-
- this.worker.code = newCode.toUpperCase().slice(0, 3);
- this.worker.name = totalNameArray[0] + newCode.slice(1);
-
- if (!this.worker.companyFk)
- this.worker.companyFk = this.vnConfig.user.companyFk;
- }
-
- get province() {
- return this._province;
- }
-
- // Province auto complete
- set province(selection) {
- this._province = selection;
-
- if (!selection) return;
-
- const country = selection.country;
-
- if (!this.worker.countryFk)
- this.worker.countryFk = country.id;
- }
-
- get town() {
- return this._town;
- }
-
- // Town auto complete
- set town(selection) {
- this._town = selection;
-
- if (!selection) return;
-
- const province = selection.province;
- const country = province.country;
- const postcodes = selection.postcodes;
-
- if (!this.worker.provinceFk)
- this.worker.provinceFk = province.id;
-
- if (!this.worker.countryFk)
- this.worker.countryFk = country.id;
-
- if (postcodes.length === 1)
- this.worker.postcode = postcodes[0].code;
- }
-
- get postcode() {
- return this._postcode;
- }
-
- // Postcode auto complete
- set postcode(selection) {
- this._postcode = selection;
-
- if (!selection) return;
-
- const town = selection.town;
- const province = town.province;
- const country = province.country;
-
- if (!this.worker.city)
- this.worker.city = town.name;
-
- if (!this.worker.provinceFk)
- this.worker.provinceFk = province.id;
-
- if (!this.worker.countryFk)
- this.worker.countryFk = country.id;
- }
-
- onResponse(response) {
- this.worker.postcode = response.code;
- this.worker.city = response.city;
- this.worker.provinceFk = response.provinceFk;
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnWorkerCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/worker/front/create/index.spec.js b/modules/worker/front/create/index.spec.js
deleted file mode 100644
index c2e9acce0..000000000
--- a/modules/worker/front/create/index.spec.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import './index';
-
-describe('Worker', () => {
- describe('Component vnWorkerCreate', () => {
- let $scope;
- let $state;
- let controller;
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($componentController, $rootScope, _$state_) => {
- $scope = $rootScope.$new();
- $state = _$state_;
- $scope.watcher = {
- submit: () => {
- return {
- then: callback => {
- callback({data: {id: '1234'}});
- }
- };
- }
- };
- const $element = angular.element(' ');
- controller = $componentController('vnWorkerCreate', {$element, $scope});
- controller.worker = {};
- controller.vnConfig = {user: {companyFk: 1}};
- }));
-
- describe('onSubmit()', () => {
- it(`should call submit() on the watcher then expect a callback`, () => {
- jest.spyOn($state, 'go');
- controller.onSubmit();
-
- expect(controller.$state.go).toHaveBeenCalledWith('worker.card.basicData', {id: '1234'});
- });
- });
-
- describe('province() setter', () => {
- it(`should set countryFk property`, () => {
- controller.worker.countryFk = null;
- controller.province = {
- id: 1,
- name: 'New york',
- country: {
- id: 2,
- name: 'USA'
- }
- };
-
- expect(controller.worker.countryFk).toEqual(2);
- });
- });
-
- describe('town() setter', () => {
- it(`should set provinceFk property`, () => {
- controller.town = {
- provinceFk: 1,
- code: 46001,
- province: {
- id: 1,
- name: 'New york',
- country: {
- id: 2,
- name: 'USA'
- }
- },
- postcodes: []
- };
-
- expect(controller.worker.provinceFk).toEqual(1);
- });
-
- it(`should set provinceFk property and fill the postalCode if there's just one`, () => {
- controller.town = {
- provinceFk: 1,
- code: 46001,
- province: {
- id: 1,
- name: 'New york',
- country: {
- id: 2,
- name: 'USA'
- }
- },
- postcodes: [{code: '46001'}]
- };
-
- expect(controller.worker.provinceFk).toEqual(1);
- expect(controller.worker.postcode).toEqual('46001');
- });
- });
-
- describe('postcode() setter', () => {
- it(`should set the town, provinceFk and contryFk properties`, () => {
- controller.postcode = {
- townFk: 1,
- code: 46001,
- town: {
- id: 1,
- name: 'New York',
- province: {
- id: 1,
- name: 'New york',
- country: {
- id: 2,
- name: 'USA'
- }
- }
- }
- };
-
- expect(controller.worker.city).toEqual('New York');
- expect(controller.worker.provinceFk).toEqual(1);
- expect(controller.worker.countryFk).toEqual(2);
- });
- });
-
- describe('generateCodeUser()', () => {
- it(`should generate worker code, name and company `, () => {
- controller.worker = {
- firstName: 'default',
- lastNames: 'generate worker'
- };
-
- controller.generateCodeUser();
-
- expect(controller.worker.code).toEqual('DGW');
- expect(controller.worker.name).toEqual('defaultgw');
- expect(controller.worker.companyFk).toEqual(controller.vnConfig.user.companyFk);
- });
- });
- });
-});
diff --git a/modules/worker/front/create/locale/es.yml b/modules/worker/front/create/locale/es.yml
deleted file mode 100644
index 4e8d2df1e..000000000
--- a/modules/worker/front/create/locale/es.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-Firstname: Nombre
-Lastname: Apellidos
-Fi: DNI/NIF/NIE
-Birth: Fecha de nacimiento
-Worker code: Código de trabajador
-Province: Provincia
-City: Población
-ProfileType: Tipo de perfil
-Street: Dirección
-Postcode: Código postal
-Web user: Usuario Web
-Access permission: Permiso de acceso
-Pay method: Método de pago
diff --git a/modules/worker/front/dms/create/index.html b/modules/worker/front/dms/create/index.html
deleted file mode 100644
index 0f2d51dd3..000000000
--- a/modules/worker/front/dms/create/index.html
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
diff --git a/modules/worker/front/dms/create/index.js b/modules/worker/front/dms/create/index.js
deleted file mode 100644
index ff6112211..000000000
--- a/modules/worker/front/dms/create/index.js
+++ /dev/null
@@ -1,113 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.dms = {
- files: [],
- hasFile: false,
- hasFileAttached: false
- };
- }
-
- get worker() {
- return this._worker;
- }
-
- set worker(value) {
- this._worker = value;
-
- if (value) {
- this.setDefaultParams();
- this.getAllowedContentTypes();
- }
- }
-
- getAllowedContentTypes() {
- this.$http.get('DmsContainers/allowedContentTypes').then(res => {
- const contentTypes = res.data.join(', ');
- this.allowedContentTypes = contentTypes;
- });
- }
-
- get contentTypesInfo() {
- return this.$t('ContentTypesInfo', {
- allowedContentTypes: this.allowedContentTypes
- });
- }
-
- setDefaultParams() {
- const params = {filter: {
- where: {code: 'hhrrData'}
- }};
- this.$http.get('DmsTypes/findOne', {params}).then(res => {
- const dmsType = res.data && res.data;
- const companyId = this.vnConfig.companyFk;
- const warehouseId = this.vnConfig.warehouseFk;
- const defaultParams = {
- reference: this.worker.id,
- warehouseId: warehouseId,
- companyId: companyId,
- dmsTypeId: dmsType.id,
- description: this.$t('WorkerFileDescription', {
- dmsTypeName: dmsType.name,
- workerId: this.worker.id,
- workerName: this.worker.name
- }).toUpperCase()
- };
-
- this.dms = Object.assign(this.dms, defaultParams);
- });
- }
-
- onSubmit() {
- const query = `Workers/${this.worker.id}/uploadFile`;
- const options = {
- method: 'POST',
- url: query,
- params: this.dms,
- headers: {
- 'Content-Type': undefined
- },
- transformRequest: files => {
- const formData = new FormData();
-
- for (let i = 0; i < files.length; i++)
- formData.append(files[i].name, files[i]);
-
- return formData;
- },
- data: this.dms.files
- };
- this.$http(options).then(res => {
- if (res) {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.$.watcher.updateOriginalData();
- this.$state.go('worker.card.dms.index');
- }
- });
- }
-
- onFileChange(files) {
- let hasFileAttached = false;
-
- if (files.length > 0)
- hasFileAttached = true;
-
- this.$.$applyAsync(() => {
- this.dms.hasFileAttached = hasFileAttached;
- });
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnWorkerDmsCreate', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- worker: '<'
- }
-});
diff --git a/modules/worker/front/dms/create/index.spec.js b/modules/worker/front/dms/create/index.spec.js
deleted file mode 100644
index 08a2a5981..000000000
--- a/modules/worker/front/dms/create/index.spec.js
+++ /dev/null
@@ -1,77 +0,0 @@
-import './index';
-
-describe('Client', () => {
- describe('Component vnWorkerDmsCreate', () => {
- let $element;
- let controller;
- let $scope;
- let $httpBackend;
- let $httpParamSerializer;
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($compile, $rootScope, _$httpBackend_, _$httpParamSerializer_) => {
- $scope = $rootScope.$new();
- $httpBackend = _$httpBackend_;
- $httpParamSerializer = _$httpParamSerializer_;
- $element = $compile(` `)($rootScope);
- controller = $element.controller('vnWorkerDmsCreate');
- controller._worker = {id: 1101, name: 'Bruce wayne'};
- $httpBackend.whenRoute('GET', `Warehouses?filter=%7B%7D`).respond([{$oldData: {}}]);
- }));
-
- describe('worker() setter', () => {
- it('should set the worker data and then call setDefaultParams() and getAllowedContentTypes()', () => {
- jest.spyOn(controller, 'setDefaultParams');
- jest.spyOn(controller, 'getAllowedContentTypes');
- controller.worker = {
- id: 15,
- name: 'Bruce wayne'
- };
-
- expect(controller.worker).toBeDefined();
- expect(controller.setDefaultParams).toHaveBeenCalledWith();
- expect(controller.getAllowedContentTypes).toHaveBeenCalledWith();
- });
- });
-
- describe('setDefaultParams()', () => {
- it('should perform a GET query and define the dms property on controller', () => {
- $httpBackend.whenRoute('GET', `DmsTypes`).respond({id: 12, code: 'hhrrData'});
- const params = {filter: {
- where: {code: 'hhrrData'}
- }};
- let serializedParams = $httpParamSerializer(params);
- $httpBackend.when('GET', `DmsTypes/findOne?${serializedParams}`).respond({id: 12, code: 'hhrrData'});
- controller.setDefaultParams();
- $httpBackend.flush();
-
- expect(controller.dms).toBeDefined();
- expect(controller.dms.reference).toEqual(1101);
- expect(controller.dms.dmsTypeId).toEqual(12);
- });
- });
-
- describe('onFileChange()', () => {
- it('should set dms hasFileAttached property to true if has any files', () => {
- const files = [{id: 1, name: 'MyFile'}];
- controller.onFileChange(files);
- $scope.$apply();
-
- expect(controller.dms.hasFileAttached).toBeTruthy();
- });
- });
-
- describe('getAllowedContentTypes()', () => {
- it('should make an HTTP GET request to get the allowed content types', () => {
- const expectedResponse = ['image/png', 'image/jpg'];
- $httpBackend.expect('GET', `DmsContainers/allowedContentTypes`).respond(expectedResponse);
- controller.getAllowedContentTypes();
- $httpBackend.flush();
-
- expect(controller.allowedContentTypes).toBeDefined();
- expect(controller.allowedContentTypes).toEqual('image/png, image/jpg');
- });
- });
- });
-});
diff --git a/modules/worker/front/dms/create/style.scss b/modules/worker/front/dms/create/style.scss
deleted file mode 100644
index 73f136fc1..000000000
--- a/modules/worker/front/dms/create/style.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-vn-ticket-request {
- .vn-textfield {
- margin: 0!important;
- max-width: 100px;
- }
-}
-
diff --git a/modules/worker/front/dms/edit/index.html b/modules/worker/front/dms/edit/index.html
deleted file mode 100644
index 39d4af801..000000000
--- a/modules/worker/front/dms/edit/index.html
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
diff --git a/modules/worker/front/dms/edit/index.js b/modules/worker/front/dms/edit/index.js
deleted file mode 100644
index 31d4c2853..000000000
--- a/modules/worker/front/dms/edit/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-class Controller extends Section {
- get worker() {
- return this._worker;
- }
-
- set worker(value) {
- this._worker = value;
-
- if (value) {
- this.setDefaultParams();
- this.getAllowedContentTypes();
- }
- }
-
- getAllowedContentTypes() {
- this.$http.get('DmsContainers/allowedContentTypes').then(res => {
- const contentTypes = res.data.join(', ');
- this.allowedContentTypes = contentTypes;
- });
- }
-
- get contentTypesInfo() {
- return this.$t('ContentTypesInfo', {
- allowedContentTypes: this.allowedContentTypes
- });
- }
-
- setDefaultParams() {
- const path = `Dms/${this.$params.dmsId}`;
- this.$http.get(path).then(res => {
- const dms = res.data && res.data;
- this.dms = {
- reference: dms.reference,
- warehouseId: dms.warehouseFk,
- companyId: dms.companyFk,
- dmsTypeId: dms.dmsTypeFk,
- description: dms.description,
- hasFile: dms.hasFile,
- hasFileAttached: false,
- files: []
- };
- });
- }
-
- onSubmit() {
- const query = `dms/${this.$params.dmsId}/updateFile`;
- const options = {
- method: 'POST',
- url: query,
- params: this.dms,
- headers: {
- 'Content-Type': undefined
- },
- transformRequest: files => {
- const formData = new FormData();
-
- for (let i = 0; i < files.length; i++)
- formData.append(files[i].name, files[i]);
-
- return formData;
- },
- data: this.dms.files
- };
- this.$http(options).then(res => {
- if (res) {
- this.vnApp.showSuccess(this.$t('Data saved!'));
- this.$.watcher.updateOriginalData();
- this.$state.go('worker.card.dms.index');
- }
- });
- }
-
- onFileChange(files) {
- let hasFileAttached = false;
- if (files.length > 0)
- hasFileAttached = true;
-
- this.$.$applyAsync(() => {
- this.dms.hasFileAttached = hasFileAttached;
- });
- }
-}
-
-ngModule.vnComponent('vnWorkerDmsEdit', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- worker: '<'
- }
-});
diff --git a/modules/worker/front/dms/edit/index.spec.js b/modules/worker/front/dms/edit/index.spec.js
deleted file mode 100644
index 0b69f2894..000000000
--- a/modules/worker/front/dms/edit/index.spec.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import './index';
-
-describe('Worker', () => {
- describe('Component vnClientDmsEdit', () => {
- let controller;
- let $scope;
- let $element;
- let $httpBackend;
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $scope = $rootScope.$new();
- $httpBackend = _$httpBackend_;
- $element = angular.element(` {
- it('should set the worker data and then call setDefaultParams() and getAllowedContentTypes()', () => {
- jest.spyOn(controller, 'setDefaultParams');
- jest.spyOn(controller, 'getAllowedContentTypes');
- controller._worker = undefined;
- controller.worker = {
- id: 1106
- };
-
- expect(controller.setDefaultParams).toHaveBeenCalledWith();
- expect(controller.worker).toBeDefined();
- expect(controller.getAllowedContentTypes).toHaveBeenCalledWith();
- });
- });
-
- describe('setDefaultParams()', () => {
- it('should perform a GET query and define the dms property on controller', () => {
- const dmsId = 4;
- const expectedResponse = {
- reference: 1101,
- warehouseFk: 1,
- companyFk: 442,
- dmsTypeFk: 3,
- description: 'Test',
- hasFile: false,
- hasFileAttached: false
- };
-
- $httpBackend.expect('GET', `Dms/${dmsId}`).respond(expectedResponse);
- controller.setDefaultParams();
- $httpBackend.flush();
-
- expect(controller.dms).toBeDefined();
- expect(controller.dms.reference).toEqual(1101);
- expect(controller.dms.dmsTypeId).toEqual(3);
- });
- });
-
- describe('onFileChange()', () => {
- it('should set dms hasFileAttached property to true if has any files', () => {
- const files = [{id: 1, name: 'MyFile'}];
- controller.dms = {hasFileAttached: false};
- controller.onFileChange(files);
- $scope.$apply();
-
- expect(controller.dms.hasFileAttached).toBeTruthy();
- });
- });
-
- describe('getAllowedContentTypes()', () => {
- it('should make an HTTP GET request to get the allowed content types', () => {
- const expectedResponse = ['image/png', 'image/jpg'];
- $httpBackend.expect('GET', `DmsContainers/allowedContentTypes`).respond(expectedResponse);
- controller.getAllowedContentTypes();
- $httpBackend.flush();
-
- expect(controller.allowedContentTypes).toBeDefined();
- expect(controller.allowedContentTypes).toEqual('image/png, image/jpg');
- });
- });
- });
-});
diff --git a/modules/worker/front/dms/edit/style.scss b/modules/worker/front/dms/edit/style.scss
deleted file mode 100644
index 73f136fc1..000000000
--- a/modules/worker/front/dms/edit/style.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-vn-ticket-request {
- .vn-textfield {
- margin: 0!important;
- max-width: 100px;
- }
-}
-
diff --git a/modules/worker/front/dms/index/index.html b/modules/worker/front/dms/index/index.html
deleted file mode 100644
index 310fb95d1..000000000
--- a/modules/worker/front/dms/index/index.html
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
-
-
-
-
- Id
- Order
- Reference
- Description
- Original
- File
- Created
-
-
-
-
-
-
-
- {{::document.id}}
-
-
- {{::document.dms.hardCopyNumber}}
-
-
-
-
- {{::document.dms.reference}}
-
-
-
-
- {{::document.dms.description}}
-
-
-
-
-
-
-
-
- {{::document.dms.file}}
-
-
-
- {{::document.dms.created | date:'dd/MM/yyyy HH:mm'}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/worker/front/dms/index/index.js b/modules/worker/front/dms/index/index.js
deleted file mode 100644
index 6fdc46dbb..000000000
--- a/modules/worker/front/dms/index/index.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import ngModule from '../../module';
-import Component from 'core/lib/component';
-import './style.scss';
-
-class Controller extends Component {
- constructor($element, $, vnFile) {
- super($element, $);
- this.vnFile = vnFile;
- this.filter = {
- include: {
- relation: 'dms',
- scope: {
- fields: [
- 'dmsTypeFk',
- 'reference',
- 'hardCopyNumber',
- 'workerFk',
- 'description',
- 'hasFile',
- 'file',
- 'created',
- 'companyFk',
- 'warehouseFk',
- ],
- include: [
- {
- relation: 'dmsType',
- scope: {
- fields: ['name'],
- },
- },
- {
- relation: 'worker',
- scope: {
- fields: ['id'],
- include: {
- relation: 'user',
- scope: {
- fields: ['name'],
- },
- },
- },
- },
- ],
- },
- },
- };
- }
-
- deleteDms(index) {
- const workerDmsId = this.workerDms[index].dmsFk;
- return this.$http.post(`WorkerDms/${workerDmsId}/removeFile`)
- .then(() => {
- this.$.model.remove(index);
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-
- downloadFile(dmsId, isDocuware) {
- if (isDocuware) return this.vnFile.download(`api/workerDms/${dmsId}/docuwareDownload`);
- this.vnFile.download(`api/workerDms/${dmsId}/downloadFile`);
- }
-
- async openDocuware() {
- const url = await this.vnApp.getUrl(`WebClient`, 'docuware');
- if (url) window.open(url).focus();
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnFile'];
-
-ngModule.vnComponent('vnWorkerDmsIndex', {
- template: require('./index.html'),
- controller: Controller,
-});
diff --git a/modules/worker/front/dms/index/index.spec.js b/modules/worker/front/dms/index/index.spec.js
deleted file mode 100644
index 9c1e87011..000000000
--- a/modules/worker/front/dms/index/index.spec.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import './index';
-import crudModel from 'core/mocks/crud-model';
-
-describe('Worker', () => {
- describe('Component vnWorkerDmsIndex', () => {
- let $scope;
- let $httpBackend;
- let controller;
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- $scope = $rootScope.$new();
- controller = $componentController('vnWorkerDmsIndex', {$element: null, $scope});
- controller.$.model = crudModel;
- }));
-
- describe('deleteDms()', () => {
- it('should make an HTTP Post query', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
- jest.spyOn(controller.$.model, 'remove');
-
- const workerDmsId = 4;
- const dmsIndex = 0;
- controller.workerDms = [{id: 1, dmsFk: 4}];
-
- $httpBackend.expectPOST(`WorkerDms/${workerDmsId}/removeFile`).respond();
- controller.deleteDms(dmsIndex);
- $httpBackend.flush();
-
- expect(controller.$.model.remove).toHaveBeenCalledWith(dmsIndex);
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
- });
-});
diff --git a/modules/worker/front/dms/index/locale/es.yml b/modules/worker/front/dms/index/locale/es.yml
deleted file mode 100644
index b6feb4206..000000000
--- a/modules/worker/front/dms/index/locale/es.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-Are you sure?: Estas seguro?
-Download file: Descargar fichero
-File: Fichero
-File deleted: Fichero eliminado
-Hard copy: Copia
-My documentation: Mi documentacion
-Remove file: Eliminar fichero
-This file will be deleted: Este fichero va a ser borrado
-Type: Tipo
\ No newline at end of file
diff --git a/modules/worker/front/dms/index/style.scss b/modules/worker/front/dms/index/style.scss
deleted file mode 100644
index a6758e2e6..000000000
--- a/modules/worker/front/dms/index/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-vn-client-risk-index {
- .totalBox {
- display: table;
- float: right;
- }
-}
\ No newline at end of file
diff --git a/modules/worker/front/dms/locale/en.yml b/modules/worker/front/dms/locale/en.yml
deleted file mode 100644
index 766853fca..000000000
--- a/modules/worker/front/dms/locale/en.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-ClientFileDescription: "{{dmsTypeName}} from client {{clientName}} id {{clientId}}"
-ContentTypesInfo: Allowed file types {{allowedContentTypes}}
\ No newline at end of file
diff --git a/modules/worker/front/dms/locale/es.yml b/modules/worker/front/dms/locale/es.yml
deleted file mode 100644
index fa4178d35..000000000
--- a/modules/worker/front/dms/locale/es.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-Reference: Referencia
-Description: Descripción
-Company: Empresa
-Upload file: Subir fichero
-Edit file: Editar fichero
-Upload: Subir
-File: Fichero
-WorkerFileDescription: "{{dmsTypeName}} del empleado {{workerName}} id {{workerId}}"
-ContentTypesInfo: "Tipos de archivo permitidos: {{allowedContentTypes}}"
-Generate identifier for original file: Generar identificador para archivo original
-Are you sure you want to continue?: ¿Seguro que quieres continuar?
-File management: Gestión documental
-Hard copy: Copia
-This file will be deleted: Este fichero va a ser borrado
-Are you sure?: ¿Seguro?
-File deleted: Fichero eliminado
-Remove file: Eliminar fichero
-Download file: Descargar fichero
-Created: Creado
-Employee: Empleado
\ No newline at end of file
diff --git a/modules/worker/front/index.js b/modules/worker/front/index.js
index 5c03dc8de..26cb403bb 100644
--- a/modules/worker/front/index.js
+++ b/modules/worker/front/index.js
@@ -1,24 +1,9 @@
export * from './module';
import './main';
-import './index/';
import './summary';
import './card';
-import './create';
import './descriptor';
import './descriptor-popover';
-import './search-panel';
-import './basic-data';
-import './pbx';
-import './pda';
import './department';
-import './calendar';
-import './time-control';
-import './log';
-import './dms/index';
-import './dms/create';
-import './dms/edit';
-import './note/index';
-import './note/create';
-import './notifications';
diff --git a/modules/worker/front/index/index.html b/modules/worker/front/index/index.html
deleted file mode 100644
index 7044ca551..000000000
--- a/modules/worker/front/index/index.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/worker/front/index/index.js b/modules/worker/front/index/index.js
deleted file mode 100644
index 77dd872e1..000000000
--- a/modules/worker/front/index/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- preview(event, worker) {
- if (event.defaultPrevented) return;
-
- event.preventDefault();
- event.stopPropagation();
-
- this.selectedWorker = worker;
- this.$.preview.show();
- }
-
- goToTimeControl(event, workerId) {
- if (event.defaultPrevented) return;
-
- event.preventDefault();
- event.stopPropagation();
- this.$state.go('worker.card.timeControl', {id: workerId}, {absolute: true});
- }
-
- onMoreChange(callback) {
- callback.call(this);
- }
-}
-
-ngModule.vnComponent('vnWorkerIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/worker/front/index/locale/es.yml b/modules/worker/front/index/locale/es.yml
deleted file mode 100644
index df6383273..000000000
--- a/modules/worker/front/index/locale/es.yml
+++ /dev/null
@@ -1 +0,0 @@
-New worker: Nuevo trabajador
diff --git a/modules/worker/front/log/index.html b/modules/worker/front/log/index.html
deleted file mode 100644
index 090dbf2e3..000000000
--- a/modules/worker/front/log/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/worker/front/log/index.js b/modules/worker/front/log/index.js
deleted file mode 100644
index e30ce7e22..000000000
--- a/modules/worker/front/log/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-ngModule.vnComponent('vnWorkerLog', {
- template: require('./index.html'),
- controller: Section,
-});
diff --git a/modules/worker/front/main/index.html b/modules/worker/front/main/index.html
index 376c8f534..e69de29bb 100644
--- a/modules/worker/front/main/index.html
+++ b/modules/worker/front/main/index.html
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/worker/front/main/index.js b/modules/worker/front/main/index.js
index d97a2d636..29da1bcc1 100644
--- a/modules/worker/front/main/index.js
+++ b/modules/worker/front/main/index.js
@@ -1,7 +1,15 @@
import ngModule from '../module';
import ModuleMain from 'salix/components/module-main';
-export default class Worker extends ModuleMain {}
+export default class Worker extends ModuleMain {
+ constructor($element, $) {
+ super($element, $);
+ }
+ async $onInit() {
+ this.$state.go('home');
+ window.location.href = await this.vnApp.getUrl(`worker/`);
+ }
+}
ngModule.vnComponent('vnWorker', {
controller: Worker,
diff --git a/modules/worker/front/note/create/index.html b/modules/worker/front/note/create/index.html
deleted file mode 100644
index d09fc2da5..000000000
--- a/modules/worker/front/note/create/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/modules/worker/front/note/create/index.js b/modules/worker/front/note/create/index.js
deleted file mode 100644
index 81ee247db..000000000
--- a/modules/worker/front/note/create/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.note = {
- workerFk: parseInt(this.$params.id),
- text: null
- };
- }
-
- cancel() {
- this.$state.go('worker.card.note.index', {id: this.$params.id});
- }
-}
-
-ngModule.vnComponent('vnNoteWorkerCreate', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/worker/front/note/create/index.spec.js b/modules/worker/front/note/create/index.spec.js
deleted file mode 100644
index d900c8ee0..000000000
--- a/modules/worker/front/note/create/index.spec.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import './index';
-
-describe('Worker', () => {
- describe('Component vnNoteWorkerCreate', () => {
- let $state;
- let controller;
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($componentController, _$state_) => {
- $state = _$state_;
- $state.params.id = '1234';
- const $element = angular.element(' ');
- controller = $componentController('vnNoteWorkerCreate', {$element, $state});
- }));
-
- it('should define workerFk using $state.params.id', () => {
- expect(controller.note.workerFk).toBe(1234);
- expect(controller.note.worker).toBe(undefined);
- });
- });
-});
diff --git a/modules/worker/front/note/create/locale/es.yml b/modules/worker/front/note/create/locale/es.yml
deleted file mode 100644
index bfe773f48..000000000
--- a/modules/worker/front/note/create/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-New note: Nueva nota
-Note: Nota
\ No newline at end of file
diff --git a/modules/worker/front/note/index/index.html b/modules/worker/front/note/index/index.html
deleted file mode 100644
index 9f5c27008..000000000
--- a/modules/worker/front/note/index/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- {{::note.user.nickname}}
- {{::note.created | date:'dd/MM/yyyy HH:mm'}}
-
-
- {{::note.text}}
-
-
-
-
-
-
-
diff --git a/modules/worker/front/note/index/index.js b/modules/worker/front/note/index/index.js
deleted file mode 100644
index d20971413..000000000
--- a/modules/worker/front/note/index/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import ngModule from '../../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-export default class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- this.filter = {
- order: 'created DESC',
- };
- }
-}
-
-Controller.$inject = ['$element', '$scope'];
-
-ngModule.vnComponent('vnWorkerNote', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- worker: '<'
- }
-});
diff --git a/modules/worker/front/note/index/style.scss b/modules/worker/front/note/index/style.scss
deleted file mode 100644
index 5ff6baf4f..000000000
--- a/modules/worker/front/note/index/style.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-vn-worker-note {
- .note:last-child {
- margin-bottom: 0;
- }
-}
\ No newline at end of file
diff --git a/modules/worker/front/notifications/index.html b/modules/worker/front/notifications/index.html
deleted file mode 100644
index 7fb3b870e..000000000
--- a/modules/worker/front/notifications/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/modules/worker/front/notifications/index.js b/modules/worker/front/notifications/index.js
deleted file mode 100644
index 622892979..000000000
--- a/modules/worker/front/notifications/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- }
-
- async $onInit() {
- const url = await this.vnApp.getUrl(`worker/${this.$params.id}/notifications`);
- window.open(url).focus();
- }
-}
-
-ngModule.vnComponent('vnWorkerNotifications', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- ticket: '<'
- }
-});
diff --git a/modules/worker/front/pbx/index.html b/modules/worker/front/pbx/index.html
deleted file mode 100644
index e1ca61a4a..000000000
--- a/modules/worker/front/pbx/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
diff --git a/modules/worker/front/pbx/index.js b/modules/worker/front/pbx/index.js
deleted file mode 100644
index 3b6443d3c..000000000
--- a/modules/worker/front/pbx/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- onSubmit() {
- const sip = this.worker.sip;
- const params = {
- userFk: this.worker.id,
- extension: sip.extension
- };
- this.$.watcher.check();
- this.$http.patch('Sips', params).then(() => {
- this.$.watcher.updateOriginalData();
- this.vnApp.showSuccess(this.$t('Data saved! User must access web'));
- });
- }
-}
-
-ngModule.vnComponent('vnWorkerPbx', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- worker: '<'
- }
-});
diff --git a/modules/worker/front/pda/index.js b/modules/worker/front/pda/index.js
deleted file mode 100644
index c3616b41e..000000000
--- a/modules/worker/front/pda/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-class Controller extends Section {
- constructor($element, $) {
- super($element, $);
- }
-
- async $onInit() {
- const url = await this.vnApp.getUrl(`worker/${this.$params.id}/pda`);
- this.$state.go('worker.card.summary', {id: this.$params.id});
- window.location.href = url;
- }
-}
-
-ngModule.vnComponent('vnWorkerPda', {
- controller: Controller
-});
diff --git a/modules/worker/front/routes.json b/modules/worker/front/routes.json
index 489b4346a..9b3a50230 100644
--- a/modules/worker/front/routes.json
+++ b/modules/worker/front/routes.json
@@ -9,23 +9,6 @@
{"state": "worker.index", "icon": "icon-worker"},
{"state": "worker.department", "icon": "work"}
],
- "card": [
- {"state": "worker.card.basicData", "icon": "settings"},
- {"state": "worker.card.note.index", "icon": "insert_drive_file"},
- {"state": "worker.card.timeControl", "icon": "access_time"},
- {"state": "worker.card.calendar", "icon": "icon-calendar"},
- {"state": "worker.card.pda", "icon": "phone_android"},
- {"state": "worker.card.notifications", "icon": "notifications"},
- {"state": "worker.card.pbx", "icon": "icon-pbx"},
- {"state": "worker.card.dms.index", "icon": "cloud_upload"},
- {
- "icon": "icon-wiki",
- "external":true,
- "url": "http://wiki.verdnatura.es",
- "description": "Wikipedia"
- },
- {"state": "worker.card.workerLog", "icon": "history"}
- ],
"department": [
{"state": "worker.department.card.basicData", "icon": "settings"}
]
@@ -43,12 +26,14 @@
"abstract": true,
"component": "vn-worker",
"description": "Workers"
- }, {
+ },
+ {
"url": "/index?q",
"state": "worker.index",
"component": "vn-worker-index",
"description": "Workers"
- }, {
+ },
+ {
"url" : "/summary",
"state": "worker.card.summary",
"component": "vn-worker-summary",
@@ -56,91 +41,14 @@
"params": {
"worker": "$ctrl.worker"
}
- }, {
- "url": "/:id",
- "state": "worker.card",
- "component": "vn-worker-card",
- "abstract": true,
- "description": "Detail"
- }, {
- "url": "/basic-data",
- "state": "worker.card.basicData",
- "component": "vn-worker-basic-data",
- "description": "Basic data",
- "params": {
- "worker": "$ctrl.worker"
- },
- "acl": ["hr"]
- }, {
- "url" : "/log",
- "state": "worker.card.workerLog",
- "component": "vn-worker-log",
- "description": "Log",
- "acl": ["hr"]
- }, {
- "url": "/note",
- "state": "worker.card.note",
- "component": "ui-view",
- "abstract": true
- }, {
- "url": "/index",
- "state": "worker.card.note.index",
- "component": "vn-worker-note",
- "description": "Notes",
- "params": {
- "worker": "$ctrl.worker"
- },
- "acl": ["hr"]
- }, {
- "url": "/create",
- "state": "worker.card.note.create",
- "component": "vn-note-worker-create",
- "description": "New note"
- }, {
- "url": "/pbx",
- "state": "worker.card.pbx",
- "component": "vn-worker-pbx",
- "description": "Private Branch Exchange",
- "params": {
- "worker": "$ctrl.worker"
- },
- "acl": ["hr"]
- }, {
- "url": "/calendar",
- "state": "worker.card.calendar",
- "component": "vn-worker-calendar",
- "description": "Calendar",
- "params": {
- "worker": "$ctrl.worker"
- }
- }, {
- "url": "/notifications",
- "state": "worker.card.notifications",
- "component": "vn-worker-notifications",
- "description": "Notifications",
- "params": {
- "worker": "$ctrl.worker"
- }
- }, {
- "url": "/time-control?timestamp",
- "state": "worker.card.timeControl",
- "component": "vn-worker-time-control",
- "description": "Time control",
- "params": {
- "worker": "$ctrl.worker"
- }
- }, {
+ },
+ {
"url": "/department?q",
"state": "worker.department",
"component": "vn-worker-department",
"description":"Departments"
- }, {
- "url": "/:id",
- "state": "worker.department.card",
- "component": "vn-worker-department-card",
- "abstract": true,
- "description": "Detail"
- }, {
+ },
+ {
"url" : "/summary",
"state": "worker.department.card.summary",
"component": "vn-worker-department-summary",
@@ -148,62 +56,6 @@
"params": {
"department": "$ctrl.department"
}
- },
- {
- "url": "/basic-data",
- "state": "worker.department.card.basicData",
- "component": "vn-worker-department-basic-data",
- "description": "Basic data",
- "params": {
- "department": "$ctrl.department"
- }
- },
- {
- "url": "/dms",
- "state": "worker.card.dms",
- "abstract": true,
- "component": "ui-view"
- },
- {
- "url": "/index",
- "state": "worker.card.dms.index",
- "component": "vn-worker-dms-index",
- "description": "My documentation",
- "acl": ["employee"]
- },
- {
- "url": "/create",
- "state": "worker.card.dms.create",
- "component": "vn-worker-dms-create",
- "description": "Upload file",
- "params": {
- "worker": "$ctrl.worker"
- },
- "acl": ["hr"]
- },
- {
- "url": "/:dmsId/edit",
- "state": "worker.card.dms.edit",
- "component": "vn-worker-dms-edit",
- "description": "Edit file",
- "params": {
- "worker": "$ctrl.worker"
- },
- "acl": ["hr"]
- },
- {
- "url": "/create",
- "state": "worker.create",
- "component": "vn-worker-create",
- "description": "New worker",
- "acl": ["hr"]
- },
- {
- "url": "/pda",
- "state": "worker.card.pda",
- "component": "vn-worker-pda",
- "description": "PDA",
- "acl": ["hr", "productionAssi"]
}
]
}
diff --git a/modules/worker/front/search-panel/index.html b/modules/worker/front/search-panel/index.html
deleted file mode 100644
index c93eef78b..000000000
--- a/modules/worker/front/search-panel/index.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
diff --git a/modules/worker/front/search-panel/index.js b/modules/worker/front/search-panel/index.js
deleted file mode 100644
index ac7405e78..000000000
--- a/modules/worker/front/search-panel/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-ngModule.vnComponent('vnWorkerSearchPanel', {
- template: require('./index.html'),
- controller: SearchPanel
-});
diff --git a/modules/worker/front/time-control/index.html b/modules/worker/front/time-control/index.html
deleted file mode 100644
index c34a1e3ca..000000000
--- a/modules/worker/front/time-control/index.html
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
-
-
-
-
- {{::$ctrl.weekdayNames[$index].name}}
-
- {{::weekday.dated | date: 'dd'}}
-
- {{::weekday.dated | date: 'MMMM'}}
-
-
-
-
-
-
- {{::weekday.event.name}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{::hour.timed | date: 'HH:mm'}}
-
-
-
-
-
-
-
-
- {{$ctrl.formatHours(weekday.workedHours)}} h.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Hours
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Save
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Save
-
-
-
-
-
- Are you sure you want to send it?
-
-
-
- Confirm
-
-
diff --git a/modules/worker/front/time-control/index.js b/modules/worker/front/time-control/index.js
deleted file mode 100644
index 7f7bad137..000000000
--- a/modules/worker/front/time-control/index.js
+++ /dev/null
@@ -1,508 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-import UserError from 'core/lib/user-error';
-
-class Controller extends Section {
- constructor($element, $, vnWeekDays, moment) {
- super($element, $);
- this.weekDays = [];
- this.weekdayNames = vnWeekDays.locales;
- this.moment = moment;
- this.entryDirections = [
- {code: 'in', description: this.$t('In')},
- {code: 'middle', description: this.$t('Intermediate')},
- {code: 'out', description: this.$t('Out')}
- ];
- }
-
- $postLink() {
- const timestamp = this.$params.timestamp;
- let initialDate = Date.vnNew();
-
- if (timestamp) {
- initialDate = new Date(timestamp * 1000);
- this.$.calendar.defaultDate = initialDate;
- }
-
- this.date = initialDate;
-
- this.getMailStates(this.date);
- }
-
- get isHr() {
- return this.aclService.hasAny(['hr']);
- }
-
- get isHimSelf() {
- const userId = window.localStorage.currentUserWorkerId;
- return userId == this.$params.id;
- }
-
- get worker() {
- return this._worker;
- }
-
- get weekNumber() {
- return this.getWeekNumber(this.date);
- }
-
- set weekNumber(value) {
- this._weekNumber = value;
- }
-
- set worker(value) {
- this._worker = value;
- this.fetchHours();
- if (this.date)
- this.getWeekData();
- }
-
- /**
- * Worker hours data
- */
- get hours() {
- return this._hours;
- }
-
- set hours(value) {
- this._hours = value;
-
- for (const weekDay of this.weekDays) {
- if (value) {
- let day = weekDay.dated.getDay();
- weekDay.hours = value
- .filter(hour => new Date(hour.timed).getDay() == day)
- .sort((a, b) => new Date(a.timed) - new Date(b.timed));
- } else
- weekDay.hours = null;
- }
- }
-
- /**
- * The current selected date
- */
- get date() {
- return this._date;
- }
-
- set date(value) {
- this._date = value;
- value.setHours(0, 0, 0, 0);
-
- let weekOffset = value.getDay() - 1;
- if (weekOffset < 0) weekOffset = 6;
-
- let started = new Date(value.getTime());
- started.setDate(started.getDate() - weekOffset);
- this.started = started;
-
- let ended = new Date(started.getTime());
- ended.setHours(23, 59, 59, 59);
- ended.setDate(ended.getDate() + 6);
- this.ended = ended;
-
- this.weekDays = [];
- let dayIndex = new Date(started.getTime());
-
- while (dayIndex < ended) {
- this.weekDays.push({
- dated: new Date(dayIndex.getTime())
- });
- dayIndex.setDate(dayIndex.getDate() + 1);
- }
-
- if (this.worker) {
- this.fetchHours();
- this.getWeekData();
- }
- }
-
- set weekTotalHours(totalHours) {
- this._weekTotalHours = this.formatHours(totalHours);
- }
-
- get weekTotalHours() {
- return this._weekTotalHours;
- }
-
- getWeekData() {
- const filter = {
- where: {
- workerFk: this.$params.id,
- year: this._date.getFullYear(),
- week: this.getWeekNumber(this._date)
- },
- };
- this.$http.get('WorkerTimeControlMails', {filter})
- .then(res => {
- if (!res.data.length) {
- this.state = null;
- return;
- }
- const [mail] = res.data;
- this.state = mail.state;
- this.reason = mail.reason;
- });
- this.canBeResend();
- }
-
- canBeResend() {
- this.canResend = false;
- const filter = {
- where: {
- year: this._date.getFullYear(),
- week: this.getWeekNumber(this._date)
- },
- limit: 1
- };
- this.$http.get('WorkerTimeControlMails', {filter})
- .then(res => {
- if (res.data.length)
- this.canResend = true;
- });
- }
-
- fetchHours() {
- if (!this.worker || !this.date) return;
-
- const params = {workerFk: this.$params.id};
- const filter = {
- where: {and: [
- {timed: {gte: this.started}},
- {timed: {lte: this.ended}}
- ]}
- };
- this.$.model.applyFilter(filter, params).then(() => {
- this.getWorkedHours(this.started, this.ended);
- this.getAbsences();
- });
- }
-
- getWorkedHours(from, to) {
- this.weekTotalHours = null;
- let weekTotalHours = 0;
- let params = {
- id: this.$params.id,
- from: from,
- to: to
- };
- const query = `Workers/${this.$params.id}/getWorkedHours`;
- return this.$http.get(query, {params}).then(res => {
- const workDays = res.data;
- const map = new Map();
-
- for (const workDay of workDays) {
- workDay.dated = new Date(workDay.dated);
- map.set(workDay.dated, workDay);
- weekTotalHours += workDay.workedHours;
- }
-
- for (const weekDay of this.weekDays) {
- const workDay = workDays.find(day => {
- let from = new Date(day.dated);
- from.setHours(0, 0, 0, 0);
-
- let to = new Date(day.dated);
- to.setHours(23, 59, 59, 59);
-
- return weekDay.dated >= from && weekDay.dated <= to;
- });
-
- if (workDay) {
- weekDay.expectedHours = workDay.expectedHours;
- weekDay.workedHours = workDay.workedHours;
- }
- }
- this.weekTotalHours = weekTotalHours;
- });
- }
-
- getAbsences() {
- const fullYear = this.started.getFullYear();
- let params = {
- workerFk: this.$params.id,
- businessFk: null,
- year: fullYear
- };
-
- return this.$http.get(`Calendars/absences`, {params})
- .then(res => this.onData(res.data));
- }
-
- hasEvents(day) {
- return day >= this.started && day < this.ended;
- }
-
- onData(data) {
- const events = {};
-
- const addEvent = (day, event) => {
- events[new Date(day).getTime()] = event;
- };
-
- if (data.holidays) {
- data.holidays.forEach(holiday => {
- const holidayDetail = holiday.detail && holiday.detail.description;
- const holidayType = holiday.type && holiday.type.name;
- const holidayName = holidayDetail || holidayType;
-
- addEvent(holiday.dated, {
- name: holidayName,
- color: '#ff0'
- });
- });
- }
- if (data.absences) {
- data.absences.forEach(absence => {
- const type = absence.absenceType;
- addEvent(absence.dated, {
- name: type.name,
- color: type.rgb
- });
- });
- }
-
- this.weekDays.forEach(day => {
- const timestamp = day.dated.getTime();
- if (events[timestamp])
- day.event = events[timestamp];
- });
- }
-
- getFinishTime() {
- if (!this.weekDays) return;
-
- let today = Date.vnNew();
- today.setHours(0, 0, 0, 0);
-
- let todayInWeek = this.weekDays.find(day => day.dated.getTime() === today.getTime());
-
- if (todayInWeek && todayInWeek.hours && todayInWeek.hours.length) {
- const remainingTime = todayInWeek.workedHours ?
- ((todayInWeek.expectedHours - todayInWeek.workedHours) * 1000) : null;
- const lastKnownEntry = todayInWeek.hours[todayInWeek.hours.length - 1];
- const lastKnownTime = new Date(lastKnownEntry.timed).getTime();
- const finishTimeStamp = lastKnownTime && remainingTime ? lastKnownTime + remainingTime : null;
-
- if (finishTimeStamp) {
- let finishDate = new Date(finishTimeStamp);
- let hour = finishDate.getHours();
- let minute = finishDate.getMinutes();
-
- if (hour < 10) hour = `0${hour}`;
- if (minute < 10) minute = `0${minute}`;
-
- return `${hour}:${minute} h.`;
- }
- }
- }
-
- formatHours(timestamp = 0) {
- let hour = Math.floor(timestamp / 3600);
- let min = Math.floor(timestamp / 60 - 60 * hour);
-
- if (hour < 10) hour = `0${hour}`;
- if (min < 10) min = `0${min}`;
-
- return `${hour}:${min}`;
- }
-
- showAddTimeDialog(weekday) {
- const timed = new Date(weekday.dated.getTime());
- timed.setHours(0, 0, 0, 0);
-
- this.newTimeEntry = {
- workerFk: this.$params.id,
- timed: timed
- };
- this.selectedWeekday = weekday;
- this.$.addTimeDialog.show();
- }
-
- addTime() {
- try {
- const entry = this.newTimeEntry;
- if (!entry.direction)
- throw new Error(`The entry type can't be empty`);
-
- const query = `WorkerTimeControls/${this.worker.id}/addTimeEntry`;
- this.$http.post(query, entry)
- .then(() => {
- this.fetchHours();
- this.getMailStates(this.date);
- });
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- return false;
- }
-
- return true;
- }
-
- showDeleteDialog($event, hour) {
- $event.preventDefault();
-
- this.timeEntryToDelete = hour;
- this.$.deleteEntryDialog.show();
- }
-
- deleteTimeEntry() {
- const entryId = this.timeEntryToDelete.id;
-
- this.$http.post(`WorkerTimeControls/${entryId}/deleteTimeEntry`).then(() => {
- this.fetchHours();
- this.getMailStates(this.date);
- this.vnApp.showSuccess(this.$t('Entry removed'));
- });
- }
-
- edit($event, hour) {
- if ($event.defaultPrevented) return;
-
- this.selectedRow = hour;
- this.$.editEntry.show($event);
- }
-
- getWeekNumber(date) {
- const tempDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
- return this.moment(tempDate).isoWeek();
- }
-
- isSatisfied() {
- this.updateWorkerTimeControlMail('CONFIRMED');
- }
-
- isUnsatisfied() {
- if (!this.reason) throw new UserError(`You must indicate a reason`);
- this.updateWorkerTimeControlMail('REVISE', this.reason);
- }
-
- updateWorkerTimeControlMail(state, reason) {
- const params = {
- workerId: this.worker.id,
- year: this.date.getFullYear(),
- week: this.weekNumber,
- state
- };
-
- if (reason)
- params.reason = reason;
-
- const query = `WorkerTimeControls/updateWorkerTimeControlMail`;
- this.$http.post(query, params).then(() => {
- this.getMailStates(this.date);
- this.getWeekData();
- this.vnApp.showSuccess(this.$t('Data saved!'));
- });
- }
-
- state(state, reason) {
- this.state = state;
- this.reason = reason;
- this.repaint();
- }
-
- save() {
- try {
- const entry = this.selectedRow;
- if (!entry.direction)
- throw new Error(`The entry type can't be empty`);
-
- const query = `WorkerTimeControls/${entry.id}/updateTimeEntry`;
- if (entry.direction !== entry.$orgRow.direction) {
- this.$http.post(query, {direction: entry.direction})
- .then(() => this.vnApp.showSuccess(this.$t('Data saved!')))
- .then(() => this.$.editEntry.hide())
- .then(() => this.fetchHours())
- .then(() => this.getMailStates(this.date));
- }
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- }
- }
-
- resendEmail() {
- const params = {
- recipient: this.worker.user.emailUser.email,
- week: this.weekNumber,
- year: this.date.getFullYear(),
- workerId: this.worker.id,
- state: 'SENDED'
- };
- this.$http.post(`WorkerTimeControls/weekly-hour-record-email`, params)
- .then(() => {
- this.getMailStates(this.date);
- this.vnApp.showSuccess(this.$t('Email sended'));
- });
- }
-
- getTime(timeString) {
- const [hours, minutes, seconds] = timeString.split(':');
- return [parseInt(hours), parseInt(minutes), parseInt(seconds)];
- }
-
- getMailStates(date) {
- const params = {
- month: date.getMonth() + 1,
- year: date.getFullYear()
- };
- const query = `WorkerTimeControls/${this.$params.id}/getMailStates`;
- this.$http.get(query, {params})
- .then(res => {
- this.workerTimeControlMails = res.data;
- this.repaint();
- });
- }
-
- formatWeek($element) {
- const weekNumberHTML = $element.firstElementChild;
- const weekNumberValue = weekNumberHTML.innerHTML;
-
- if (!this.workerTimeControlMails) return;
- const workerTimeControlMail = this.workerTimeControlMails.find(
- workerTimeControlMail => workerTimeControlMail.week == weekNumberValue
- );
-
- if (!workerTimeControlMail) return;
- const state = workerTimeControlMail.state;
-
- if (state == 'CONFIRMED') {
- weekNumberHTML.classList.remove('revise');
- weekNumberHTML.classList.remove('sended');
-
- weekNumberHTML.classList.add('confirmed');
- weekNumberHTML.setAttribute('title', 'Conforme');
- }
- if (state == 'REVISE') {
- weekNumberHTML.classList.remove('confirmed');
- weekNumberHTML.classList.remove('sended');
-
- weekNumberHTML.classList.add('revise');
- weekNumberHTML.setAttribute('title', 'No conforme');
- }
- if (state == 'SENDED') {
- weekNumberHTML.classList.add('sended');
- weekNumberHTML.setAttribute('title', 'Pendiente');
- }
- }
-
- repaint() {
- let calendars = this.element.querySelectorAll('vn-calendar');
- for (let calendar of calendars)
- calendar.$ctrl.repaint();
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnWeekDays', 'moment'];
-
-ngModule.vnComponent('vnWorkerTimeControl', {
- template: require('./index.html'),
- controller: Controller,
- bindings: {
- worker: '<'
- },
- require: {
- card: '^vnWorkerCard'
- }
-});
diff --git a/modules/worker/front/time-control/index.spec.js b/modules/worker/front/time-control/index.spec.js
deleted file mode 100644
index 42df4ba9b..000000000
--- a/modules/worker/front/time-control/index.spec.js
+++ /dev/null
@@ -1,286 +0,0 @@
-import './index.js';
-
-describe('Component vnWorkerTimeControl', () => {
- let $httpBackend;
- let $scope;
- let $element;
- let controller;
- let $httpParamSerializer;
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($componentController, $rootScope, $stateParams, _$httpBackend_, _$httpParamSerializer_) => {
- $stateParams.id = 1;
- $httpBackend = _$httpBackend_;
- $httpParamSerializer = _$httpParamSerializer_;
- $scope = $rootScope.$new();
- $element = angular.element(' ');
- controller = $componentController('vnWorkerTimeControl', {$element, $scope});
- controller.card = {
- hasWorkCenter: true
- };
- }));
-
- describe('date() setter', () => {
- it(`should set the weekDays and the date in the controller`, () => {
- let today = Date.vnNew();
- jest.spyOn(controller, 'fetchHours').mockReturnThis();
-
- controller.date = today;
-
- expect(controller._date).toEqual(today);
- expect(controller.started).toBeDefined();
- expect(controller.ended).toBeDefined();
- expect(controller.weekDays.length).toEqual(7);
- });
- });
-
- describe('hours() setter', () => {
- it(`should set hours data at it's corresponding week day`, () => {
- let today = Date.vnNew();
- jest.spyOn(controller, 'fetchHours').mockReturnThis();
-
- controller.date = today;
-
- let hours = [
- {
- id: 1,
- timed: controller.started.toJSON(),
- userFk: 1
- }, {
- id: 2,
- timed: controller.ended.toJSON(),
- userFk: 1
- }, {
- id: 3,
- timed: controller.ended.toJSON(),
- userFk: 1
- }
- ];
-
- controller.hours = hours;
-
- expect(controller.weekDays.length).toEqual(7);
- expect(controller.weekDays[0].hours.length).toEqual(1);
- expect(controller.weekDays[6].hours.length).toEqual(2);
- });
- });
-
- describe('getWorkedHours() ', () => {
- it('should set the weekdays expected and worked hours plus the total worked hours', () => {
- let today = Date.vnNew();
- jest.spyOn(controller, 'fetchHours').mockReturnThis();
-
- controller.date = today;
-
- let sixHoursInSeconds = 6 * 60 * 60;
- let tenHoursInSeconds = 10 * 60 * 60;
- let response = [
- {
- dated: today,
- expectedHours: sixHoursInSeconds,
- workedHours: tenHoursInSeconds,
-
- },
- ];
- $httpBackend.whenRoute('GET', 'Workers/:id/getWorkedHours')
- .respond(response);
-
- $httpBackend.whenRoute('GET', 'WorkerTimeControlMails')
- .respond([]);
-
- today.setHours(0, 0, 0, 0);
-
- let weekOffset = today.getDay() - 1;
- if (weekOffset < 0) weekOffset = 6;
-
- let started = new Date(today.getTime());
- started.setDate(started.getDate() - weekOffset);
- controller.started = started;
-
- let ended = new Date(started.getTime());
- ended.setHours(23, 59, 59, 59);
- ended.setDate(ended.getDate() + 6);
- controller.ended = ended;
-
- controller.getWorkedHours(controller.started, controller.ended);
- $httpBackend.flush();
-
- expect(controller.weekDays.length).toEqual(7);
- expect(controller.weekDays[weekOffset].expectedHours).toEqual(response[0].expectedHours);
- expect(controller.weekDays[weekOffset].workedHours).toEqual(response[0].workedHours);
- expect(controller.weekTotalHours).toEqual('10:00');
- });
-
- describe('formatHours() ', () => {
- it(`should format a passed timestamp to hours and minutes`, () => {
- const result = controller.formatHours(3600);
-
- expect(result).toEqual('01:00');
- });
- });
-
- describe('save() ', () => {
- it(`should make a query an then call to the fetchHours() method`, () => {
- const today = Date.vnNew();
-
- jest.spyOn(controller, 'getWeekData').mockReturnThis();
- jest.spyOn(controller, 'getMailStates').mockReturnThis();
-
- controller.$.model = {applyFilter: jest.fn().mockReturnValue(Promise.resolve())};
- controller.date = today;
- controller.fetchHours = jest.fn();
- controller.selectedRow = {id: 1, timed: Date.vnNew(), direction: 'in', $orgRow: {direction: null}};
- controller.$.editEntry = {
- hide: () => {}
- };
- const expectedParams = {direction: 'in'};
- $httpBackend.expect('POST', 'WorkerTimeControls/1/updateTimeEntry', expectedParams).respond(200);
- controller.save();
- $httpBackend.flush();
-
- expect(controller.fetchHours).toHaveBeenCalledWith();
- });
- });
-
- describe('$postLink() ', () => {
- it(`should set the controller date as today if no timestamp is defined`, () => {
- controller.$.model = {applyFilter: jest.fn().mockReturnValue(Promise.resolve())};
- controller.$params = {timestamp: undefined};
- controller.$postLink();
-
- expect(controller.date).toEqual(jasmine.any(Date));
- });
-
- it(`should set the controller date using the received timestamp`, () => {
- const timestamp = 1;
- const date = new Date(timestamp);
-
- controller.$.model = {applyFilter: jest.fn().mockReturnValue(Promise.resolve())};
- controller.$.calendar = {};
- controller.$params = {timestamp: timestamp};
-
- controller.$postLink();
-
- expect(controller.date.toDateString()).toEqual(date.toDateString());
- });
- });
-
- describe('getWeekData() ', () => {
- it(`should make a query an then update the state and reason`, () => {
- const today = Date.vnNew();
- const response = [
- {
- state: 'SENDED',
- reason: null
- }
- ];
-
- controller._date = today;
-
- $httpBackend.whenRoute('GET', 'WorkerTimeControlMails')
- .respond(response);
-
- controller.getWeekData();
- $httpBackend.flush();
-
- expect(controller.state).toBe('SENDED');
- expect(controller.reason).toBe(null);
- });
- });
-
- describe('isSatisfied() ', () => {
- it(`should make a query an then call three methods`, () => {
- const today = Date.vnNew();
- jest.spyOn(controller, 'getWeekData').mockReturnThis();
- jest.spyOn(controller, 'getMailStates').mockReturnThis();
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- controller.$.model = {applyFilter: jest.fn().mockReturnValue(Promise.resolve())};
- controller.worker = {id: 1};
- controller.date = today;
- controller.weekNumber = 1;
-
- $httpBackend.expect('POST', 'WorkerTimeControls/updateWorkerTimeControlMail').respond();
- controller.isSatisfied();
- $httpBackend.flush();
-
- expect(controller.getMailStates).toHaveBeenCalledWith(controller.date);
- expect(controller.getWeekData).toHaveBeenCalled();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('isUnsatisfied() ', () => {
- it(`should throw an error is reason is empty`, () => {
- let error;
- try {
- controller.isUnsatisfied();
- } catch (e) {
- error = e;
- }
-
- expect(error).toBeDefined();
- expect(error.message).toBe(`You must indicate a reason`);
- });
-
- it(`should make a query an then call three methods`, () => {
- const today = Date.vnNew();
- jest.spyOn(controller, 'getWeekData').mockReturnThis();
- jest.spyOn(controller, 'getMailStates').mockReturnThis();
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- controller.$.model = {applyFilter: jest.fn().mockReturnValue(Promise.resolve())};
- controller.worker = {id: 1};
- controller.date = today;
- controller.weekNumber = 1;
- controller.reason = 'reason';
-
- $httpBackend.expect('POST', 'WorkerTimeControls/updateWorkerTimeControlMail').respond();
- controller.isSatisfied();
- $httpBackend.flush();
-
- expect(controller.getMailStates).toHaveBeenCalledWith(controller.date);
- expect(controller.getWeekData).toHaveBeenCalled();
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('resendEmail() ', () => {
- it(`should make a query an then call showSuccess method`, () => {
- const today = Date.vnNew();
-
- jest.spyOn(controller, 'getWeekData').mockReturnThis();
- jest.spyOn(controller, 'getMailStates').mockReturnThis();
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- controller.$.model = {applyFilter: jest.fn().mockReturnValue(Promise.resolve())};
- controller.worker = {id: 1};
- controller.worker = {user: {emailUser: {email: 'employee@verdnatura.es'}}};
- controller.date = today;
- controller.weekNumber = 1;
-
- $httpBackend.expect('POST', 'WorkerTimeControls/weekly-hour-record-email').respond();
- controller.resendEmail();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
-
- describe('getMailStates() ', () => {
- it(`should make a query an then call showSuccess method`, () => {
- const today = Date.vnNew();
- jest.spyOn(controller, 'repaint').mockReturnThis();
-
- controller.$params = {id: 1};
-
- $httpBackend.expect('GET', `WorkerTimeControls/1/getMailStates?month=1&year=2001`).respond();
- controller.getMailStates(today);
- $httpBackend.flush();
-
- expect(controller.repaint).toHaveBeenCalled();
- });
- });
- });
-});
diff --git a/modules/worker/front/time-control/locale/es.yml b/modules/worker/front/time-control/locale/es.yml
deleted file mode 100644
index 091c01baa..000000000
--- a/modules/worker/front/time-control/locale/es.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-In: Entrada
-Out: Salida
-Intermediate: Intermedio
-Hour: Hora
-Hours: Horas
-Add time: Añadir hora
-Week total: Total semana
-Current week: Semana actual
-This time entry will be deleted: Se eliminará la hora fichada
-Are you sure you want to delete this entry?: ¿Seguro que quieres eliminarla?
-Finish at: Termina a las
-Entry removed: Fichada borrada
-The entry type can't be empty: El tipo de fichada no puede quedar vacía
-Satisfied: Conforme
-Not satisfied: No conforme
-Reason: Motivo
-Resend: Reenviar
-Email sended: Email enviado
-You must indicate a reason: Debes indicar un motivo
-Send time control email: Enviar email control horario
-Are you sure you want to send it?: ¿Seguro que quieres enviarlo?
-Resend email of this week to the user: Reenviar email de esta semana al usuario
diff --git a/modules/worker/front/time-control/style.scss b/modules/worker/front/time-control/style.scss
deleted file mode 100644
index 9d7545aaf..000000000
--- a/modules/worker/front/time-control/style.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-@import "variables";
-
-vn-worker-time-control {
- vn-thead > vn-tr > vn-td > div.weekday {
- margin-bottom: 5px;
- color: $color-main
- }
- vn-td.hours {
- min-width: 100px;
- vertical-align: top;
-
- & > section {
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 4px 0;
-
- & > vn-icon {
- color: $color-font-secondary;
- padding-right: 1px;
- }
- }
- }
- .totalBox {
- max-width: none
- }
-
-}
-
-.reasonDialog{
- min-width: 500px;
-}
-
-.edit-time-entry {
- width: 200px
-}
-
-.right {
- float: right;
- }
-
-.confirmed {
- color: #97B92F;
-}
-
-.revise {
- color: #f61e1e;
-}
-
-.sended {
- color: #d19b25;
-}
diff --git a/myt.config.yml b/myt.config.yml
index 56239ca3c..ffa4188b2 100755
--- a/myt.config.yml
+++ b/myt.config.yml
@@ -42,7 +42,7 @@ fixtures:
- ACL
- fieldAcl
- module
- - defaultViewConfig
+ - defaultViewMultiConfig
vn:
- alertLevel
- bookingPlanner
@@ -66,7 +66,6 @@ fixtures:
- siiTrascendencyInvoiceIn
- siiTypeInvoiceIn
- siiTypeInvoiceOut
- - silexACL
- state
- ticketUpdateAction
- volumeConfig
@@ -363,7 +362,7 @@ localFixtures:
- travelConfig
- travelRecalc
- travelThermograph
- - userConfig
+ - userMultiConfig
- vehicle
- wagonConfig
- wagonType
diff --git a/package.json b/package.json
index 9016f74a6..bbb83c4b0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "salix-back",
- "version": "24.32.0",
+ "version": "24.36.0",
"author": "Verdnatura Levante SL",
"description": "Salix backend",
"license": "GPL-3.0",
@@ -43,6 +43,7 @@
"mysql": "2.18.1",
"node-ssh": "^11.0.0",
"object.pick": "^1.3.0",
+ "pdf-merger-js": "^5.1.2",
"puppeteer": "21.11.0",
"read-chunk": "^3.2.0",
"require-yaml": "0.0.1",
@@ -80,10 +81,10 @@
"gulp-merge-json": "^1.3.1",
"gulp-nodemon": "^2.5.0",
"gulp-print": "^2.0.1",
- "gulp-wrap": "^0.15.0",
- "gulp-yaml": "^1.0.1",
"gulp-rename": "^2.0.0",
"gulp-replace": "^1.1.4",
+ "gulp-wrap": "^0.15.0",
+ "gulp-yaml": "^1.0.1",
"html-loader": "^0.4.5",
"html-loader-jest": "^0.2.1",
"html-webpack-plugin": "^5.5.1",
@@ -117,7 +118,10 @@
"test:front": "jest --watch",
"back": "nodemon --inspect -w modules ./node_modules/gulp/bin/gulp.js back",
"lint": "eslint ./ --cache --ignore-pattern .gitignore",
- "watch:db": "node ./db/dbWatcher.js"
+ "watch:db": "node ./db/dbWatcher.js",
+ "commitlint": "commitlint --edit",
+ "prepare": "npx husky install",
+ "addReferenceTag": "node .husky/addReferenceTag.js"
},
"jest": {
"projects": [
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 22d5b46f1..b4030d779 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -95,6 +95,9 @@ dependencies:
object.pick:
specifier: ^1.3.0
version: 1.3.0
+ pdf-merger-js:
+ specifier: ^5.1.2
+ version: 5.1.2
puppeteer:
specifier: 21.11.0
version: 21.11.0(typescript@5.4.4)
@@ -2090,6 +2093,18 @@ packages:
rimraf: 3.0.2
dev: true
+ /@pdf-lib/standard-fonts@1.0.0:
+ resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==}
+ dependencies:
+ pako: 1.0.11
+ dev: false
+
+ /@pdf-lib/upng@1.0.1:
+ resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==}
+ dependencies:
+ pako: 1.0.11
+ dev: false
+
/@pkgjs/parseargs@0.11.0:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -4486,6 +4501,11 @@ packages:
engines: {node: '>=14'}
dev: true
+ /commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
+ dev: false
+
/commander@2.17.1:
resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==}
dev: true
@@ -11323,6 +11343,24 @@ packages:
pinkie-promise: 2.0.1
dev: true
+ /pdf-lib@1.17.1:
+ resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==}
+ dependencies:
+ '@pdf-lib/standard-fonts': 1.0.0
+ '@pdf-lib/upng': 1.0.1
+ pako: 1.0.11
+ tslib: 1.14.1
+ dev: false
+
+ /pdf-merger-js@5.1.2:
+ resolution: {integrity: sha512-RCBjLQILZ8UA4keO/Ip2/gjUuxigMMoK7mO5eJg6zjlnyymboFnRTgzKwOs/FiU9ornS2m72Qr95oARX1C24fw==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dependencies:
+ commander: 11.1.0
+ pdf-lib: 1.17.1
+ dev: false
+
/pend@1.2.0:
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
dev: false
@@ -13836,6 +13874,10 @@ packages:
resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==}
dev: false
+ /tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: false
+
/tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
diff --git a/print/templates/email/buyer-week-waste/sql/wasteWeekly.sql b/print/templates/email/buyer-week-waste/sql/wasteWeekly.sql
index 943c085d0..1b486a004 100644
--- a/print/templates/email/buyer-week-waste/sql/wasteWeekly.sql
+++ b/print/templates/email/buyer-week-waste/sql/wasteWeekly.sql
@@ -1,11 +1,13 @@
-SELECT *, 100 * dwindle / total AS percentage
+SELECT *, 100 * dwindle / total `percentage`
FROM (
- SELECT buyer,
- sum(saleTotal) as total,
- sum(saleWaste) as dwindle
+ SELECT u.name buyer,
+ SUM(saleTotal) total,
+ SUM(w.saleInternalWaste + w.saleExternalWaste) dwindle
FROM bs.waste w
- JOIN vn.time t ON w.year = t.year AND w.week = t.week
- WHERE t.dated = DATE_ADD(CURDATE(), INTERVAL -1 WEEK)
- GROUP BY buyer
+ JOIN account.user u ON u.id = w.buyerFk
+ JOIN vn.itemType it ON it.id = w.itemTypeFk
+ WHERE w.year = YEAR(util.VN_CURDATE() - INTERVAL 1 WEEK)
+ AND w.week = WEEK(util.VN_CURDATE() - INTERVAL 1 WEEK, 4)
+ GROUP BY buyerFk
) sub
- ORDER BY percentage DESC;
\ No newline at end of file
+ ORDER BY `percentage` DESC;
diff --git a/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html b/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html
index 2effa8917..f72b2177f 100644
--- a/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html
+++ b/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html
@@ -7,6 +7,7 @@
{{ $t('ticketId') }}: {{ticket.ticketId}}
{{ $t('reason') }}: {{ticket.reason}}
+
{{ $t('clientId')}} {{ticket.clientId}}
diff --git a/print/templates/email/invoice-ticket-closure/locale/en.yml b/print/templates/email/invoice-ticket-closure/locale/en.yml
index fef73d23f..34f31c8e3 100644
--- a/print/templates/email/invoice-ticket-closure/locale/en.yml
+++ b/print/templates/email/invoice-ticket-closure/locale/en.yml
@@ -1,4 +1,5 @@
subject: Nightly ticket closing process report
title: Nightly ticket closing process report
reason: Reason
-ticketId: Ticket
\ No newline at end of file
+ticketId: Ticket
+clientId: Client
\ No newline at end of file
diff --git a/print/templates/email/invoice-ticket-closure/locale/es.yml b/print/templates/email/invoice-ticket-closure/locale/es.yml
index 7d146b83d..a87311114 100644
--- a/print/templates/email/invoice-ticket-closure/locale/es.yml
+++ b/print/templates/email/invoice-ticket-closure/locale/es.yml
@@ -1,4 +1,5 @@
subject: Informe proceso de cierre de tickets nocturno
title: Informe proceso de cierre de tickets nocturno
reason: Motivo
-ticketId: Ticket
\ No newline at end of file
+ticketId: Ticket
+clientId: Cliente
\ No newline at end of file
diff --git a/print/templates/email/printer-setup/locale/fr.yml b/print/templates/email/printer-setup/locale/fr.yml
new file mode 100644
index 000000000..0c9f7031a
--- /dev/null
+++ b/print/templates/email/printer-setup/locale/fr.yml
@@ -0,0 +1,39 @@
+subject: Instalation et configuration de l'imprimante
+title: "Merci pour votre confiance !"
+description:
+ dear: Cher client
+ instructions: Veuillez suivre les instructions spécifiées dans cet e-mail pour procéder à l'installation de l'imprimante.
+ followGuide: Vous pouvez utiliser comme guide la vidéo du montage du ruban et de la bande.
+ https://www.youtube.com/watch?v=qhb0kgQF3o8 . Vous
+ aurez également besoin de GoLabel, le programme pour imprimer les bandes.
+ downloadFrom: Vous pouvez le télécharger depuis ce lien. https://cdn.verdnatura.es/public/GoLabel.zip
+ downloadDriver: Vous pouvez télécharger le pilote de l'imprimante depuis ce lien. https://es.seagullscientific.com/support/downloads/drivers/godex/download/
+sections:
+ GoLabel:
+ title: Utilisation de GoLabel
+ description: Pour utiliser le programme d'impression des bandes, suivez ces étapes
+ steps:
+ - Ci-joint à cet e-mail, vous trouverez le fichier 'model.ezp' (le modèle de bandes de corona standard). Téléchargez-le et vous le trouverez probablement dans le dossier 'Téléchargements'.
+ - Ouvrez le programme GoLabel.
+ - Cliquez sur l'icône de la barre supérieure en forme de dossier avec une feuille.
+ - Sélectionnez le fichier nommé 'model.ezp' (qui se trouve probablement dans 'Téléchargements'), puis cliquez sur Ouvrir.
+ - Une fois le fichier ouvert, double-cliquez sur le texte. Dans la boîte qui s'ouvre, cliquez sur le texte d'exemple (dans ce cas "TUS HERMANOS") et il apparaîtra dans la même zone à gauche pour que vous puissiez l'éditer et écrire ce que vous souhaitez.
+ - Lorsque vous avez le texte souhaité, cliquez sur le bouton 'OK'.
+ - Allez dans 'Fichier' → 'Enregistrer sous' et enregistrez-le sur le bureau sous un autre nom.
+ - Ensuite, pour imprimer, vous devez d'abord configurer l'imprimante.
+ - Cliquez sur la huitième icône de la barre supérieure, qui sera ici une imprimante avec un engrenage orange.
+ - Une fois là, cliquez sur le menu déroulant du modèle d'imprimante et choisissez le modèle qui correspond au vôtre 'G***'.
+ - Cliquez sur 'Enregistrer' et notre imprimante sera configurée et prête.
+ - Et enfin, pour imprimer, cliquez sur la neuvième icône, qui correspond à une imprimante bleue.
+ help:
+ title: "Avez-vous besoin d'aide ?"
+ description: Si vous avez besoin d'aide, téléchargez notre programme de support afin que nous puissions nous connecter à distance à votre ordinateur et effectuer l'installation. Veuillez nous fournir un horaire de contact pour vous assister, et nous vous contacterons.
+ remoteSupport: Vous pouvez télécharger le programme depuis ce lien. http://soporte.verdnatura.es .
+help: Pour toute question que vous pourriez avoir, n'hésitez pas à nous la poser. Nous sommes là pour vous aider !
+salesPersonName: Je suis votre commercial et mon nom est
+salesPersonPhone: Téléphone et WhatsApp.
+salesPersonEmail: Adresse e-mail.
diff --git a/print/templates/email/sepa-core/locale/en.yml b/print/templates/email/sepa-core/locale/en.yml
new file mode 100644
index 000000000..c6cc4dab4
--- /dev/null
+++ b/print/templates/email/sepa-core/locale/en.yml
@@ -0,0 +1,16 @@
+subject: Bank Direct Debit Request
+title: SEPA CORE Direct Debit
+description:
+ dear: Dear Customer
+ instructions: Given the excellent relationship between our two companies
+ and to facilitate the payment processes of our invoices, we suggest the use
+ of the SEPA CORE direct debit system.
+ This service involves issuing our receipts to your company in an automated
+ and electronic manner, which represents a substantial reduction in costs for you
+ in terms of fees and bank charges.
+ If you accept our proposal, on the due date of each payment, it will be automatically
+ debited from your account through your bank.
+ This system is based on the electronic transmission of data; the handling of
+ physical documents has been eliminated.
+ We appreciate your cooperation,
+ conclusion: Thank you for your attention!
diff --git a/print/templates/email/sepa-core/locale/es.yml b/print/templates/email/sepa-core/locale/es.yml
index 10a1d32fe..a8dd9032e 100644
--- a/print/templates/email/sepa-core/locale/es.yml
+++ b/print/templates/email/sepa-core/locale/es.yml
@@ -9,9 +9,7 @@ description:
forma automatizada y electrónicamente, lo que supone para usted una reducción
sustancial de costos en términos de honorarios y gastos bancarios.
En caso de que acepte nuestra propuesta, a la fecha de vencimiento de cada efecto,
- se debitará a su cuenta automáticamente a través de su entidad bancaria.
- Por tanto, le pedimos que firme y envíe a su banco la autorización original adjunta,
- debidamente cumplimentada, y nos devuelva una fotocopia de dicha autorización.
+ se debitará a su cuenta automáticamente a través de su entidad bancaria.
Este sistema se basa en la transmisión electrónica de datos;
el manejo de documentos físicos ha sido eliminado.
Le agradecemos su cooperación,
diff --git a/print/templates/email/sepa-core/locale/fr.yml b/print/templates/email/sepa-core/locale/fr.yml
index 98bd7593a..6d76ef24f 100644
--- a/print/templates/email/sepa-core/locale/fr.yml
+++ b/print/templates/email/sepa-core/locale/fr.yml
@@ -14,11 +14,7 @@ description:
et commissions bancaires.
Dans le cas où vous accepteriez notre proposition, à
l’échéance de chaque effet, votre compte sera débité
- automatiquement par votre Banque.
- Ainsi, nous vous demandons de signer et envoyer à votre
- Banque l'original de l'autorisation pour débit en annexe,
- dûment remplie, et de nous retourner une photocopie de la
- dite autorisation.
+ automatiquement par votre Banque.
Ce système étant basé sur la transmission de données de
manière électronique, le maniement de documents
physiques á été éliminé
diff --git a/print/templates/reports/buy-label/assets/css/style.css b/print/templates/reports/buy-label/assets/css/style.css
index 0d4a2891d..3b1f2f91e 100644
--- a/print/templates/reports/buy-label/assets/css/style.css
+++ b/print/templates/reports/buy-label/assets/css/style.css
@@ -33,9 +33,6 @@ span {
.barcode {
text-align: center;
}
-#variant {
+.one-third {
width: 314px;
-}
-#producer {
- width: 471px;
}
\ No newline at end of file
diff --git a/print/templates/reports/buy-label/buy-label.html b/print/templates/reports/buy-label/buy-label.html
index b14e54759..5777d34de 100644
--- a/print/templates/reports/buy-label/buy-label.html
+++ b/print/templates/reports/buy-label/buy-label.html
@@ -4,7 +4,7 @@
-
+
{{$t('variety')}}
{{buy.name}}
@@ -63,24 +63,30 @@
-
-
+
+
{{$t('producer')}}
{{buy.producer}}
+
+
+ {{$t('control')}}
+ {{`${weekNum} / ${dayNum}`}}
+
+
-
-
{{$t('control')}}
- {{`${weekNum} / ${dayNum}`}}
+
+ {{$t('reference')}}
+ {{buy.comment}}
{{$t('boxNum')}}
- {{`${buy.labelNum} / ${maxLabelNum}`}}
+ {{`${buy.labelNum} / ${buy.maxLabelNum}`}}
diff --git a/print/templates/reports/buy-label/buy-label.js b/print/templates/reports/buy-label/buy-label.js
index 7d626c052..289483051 100755
--- a/print/templates/reports/buy-label/buy-label.js
+++ b/print/templates/reports/buy-label/buy-label.js
@@ -1,5 +1,6 @@
const vnReport = require('../../../core/mixins/vn-report.js');
const {DOMImplementation, XMLSerializer} = require('xmldom');
+const {models} = require('vn-loopback/server/server');
const jsBarcode = require('jsbarcode');
const moment = require('moment');
@@ -7,15 +8,14 @@ module.exports = {
name: 'buy-label',
mixins: [vnReport],
async serverPrefetch() {
- this.buys = await this.rawSqlFromDef('buys', [this.id, this.id]);
- this.maxLabelNum = Math.max(...this.buys.map(buy => buy.labelNum));
+ const buy = await models.Buy.findById(this.id, null);
+ this.buys = await this.rawSqlFromDef('buy', [buy.entryFk, buy.entryFk, buy.entryFk, this.id]);
const date = new Date();
this.weekNum = moment(date).isoWeek();
this.dayNum = moment(date).day();
},
methods: {
getBarcode(id) {
- const xmlSerializer = new XMLSerializer();
const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
const svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
@@ -26,7 +26,7 @@ module.exports = {
width: 3.8,
height: 115,
});
- return xmlSerializer.serializeToString(svgNode);
+ return new XMLSerializer().serializeToString(svgNode);
}
},
props: {
diff --git a/print/templates/reports/buy-label/locale/en.yml b/print/templates/reports/buy-label/locale/en.yml
index d48d00771..333282759 100644
--- a/print/templates/reports/buy-label/locale/en.yml
+++ b/print/templates/reports/buy-label/locale/en.yml
@@ -9,4 +9,5 @@ grouping: Grouping
unitSale: Un. sale
producer: Producer
control: Control
-boxNum: Box no.
\ No newline at end of file
+boxNum: Box no.
+reference: Reference
\ No newline at end of file
diff --git a/print/templates/reports/buy-label/locale/es.yml b/print/templates/reports/buy-label/locale/es.yml
index 33a4a499d..af1d9aa1c 100644
--- a/print/templates/reports/buy-label/locale/es.yml
+++ b/print/templates/reports/buy-label/locale/es.yml
@@ -9,4 +9,5 @@ grouping: Grouping
saleUnit: Sale un.
producer: Productor
control: Control
-boxNum: Caja nº
\ No newline at end of file
+boxNum: Caja nº
+reference: Referencia
\ No newline at end of file
diff --git a/print/templates/reports/buy-label/sql/buy.sql b/print/templates/reports/buy-label/sql/buy.sql
new file mode 100644
index 000000000..26efeb06e
--- /dev/null
+++ b/print/templates/reports/buy-label/sql/buy.sql
@@ -0,0 +1,38 @@
+WITH RECURSIVE numbers AS (
+ SELECT 1 n
+ UNION ALL
+ SELECT n + 1
+ FROM numbers
+ WHERE n < (
+ SELECT MAX(stickers)
+ FROM buy
+ WHERE entryFk = ?
+ )
+),
+labels AS (
+ SELECT ROW_NUMBER() OVER(ORDER BY b.id, num.n) labelNum,
+ i.name,
+ i.`size`,
+ i.category,
+ ink.id color,
+ o.code,
+ b.packing,
+ b.`grouping`,
+ i.stems,
+ b.id,
+ b.itemFk,
+ p.name producer,
+ IFNULL(i2.comment, i.comment) comment
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ LEFT JOIN producer p ON p.id = i.producerFk
+ LEFT JOIN ink ON ink.id = i.inkFk
+ LEFT JOIN origin o ON o.id = i.originFk
+ LEFT JOIN item i2 ON i2.id = b.itemOriginalFk
+ JOIN numbers num
+ WHERE b.entryFk = ?
+ AND num.n <= b.stickers
+)
+SELECT *, (SELECT SUM(stickers) FROM buy WHERE entryFk = ?) maxLabelNum
+ FROM labels
+ WHERE id = ?
\ No newline at end of file
diff --git a/print/templates/reports/buy-label/sql/buys.sql b/print/templates/reports/buy-label/sql/buys.sql
deleted file mode 100644
index e05ca2a66..000000000
--- a/print/templates/reports/buy-label/sql/buys.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-WITH RECURSIVE numbers AS (
- SELECT 1 n
- UNION ALL
- SELECT n + 1
- FROM numbers
- WHERE n < (
- SELECT MAX(stickers)
- FROM buy
- WHERE entryFk = ?
- )
-)
-SELECT ROW_NUMBER() OVER(ORDER BY b.id, num.n) labelNum,
- i.name,
- i.`size`,
- i.category,
- ink.id color,
- o.code,
- b.packing,
- b.`grouping`,
- i.stems,
- b.id,
- b.itemFk,
- p.name producer
- FROM buy b
- JOIN item i ON i.id = b.itemFk
- LEFT JOIN producer p ON p.id = i.producerFk
- LEFT JOIN ink ON ink.id = i.inkFk
- LEFT JOIN origin o ON o.id = i.originFk
- JOIN numbers num
- WHERE b.entryFk = ?
- AND num.n <= b.stickers
\ No newline at end of file
diff --git a/print/templates/reports/collection-label/collection-label.html b/print/templates/reports/collection-label/collection-label.html
index 65709ead0..1f57fc3d9 100644
--- a/print/templates/reports/collection-label/collection-label.html
+++ b/print/templates/reports/collection-label/collection-label.html
@@ -10,14 +10,10 @@
{{dashIfEmpty(labelData.shipped)}}
-
+
{{dashIfEmpty(labelData.workerCode)}}
-
-
- {{dashIfEmpty(labelData.workerCode)}}
-
{{labelCount || labelData.labelCount || 0}}
diff --git a/print/templates/reports/collection-label/collection-label.js b/print/templates/reports/collection-label/collection-label.js
index f2f697ae6..4aeaca854 100644
--- a/print/templates/reports/collection-label/collection-label.js
+++ b/print/templates/reports/collection-label/collection-label.js
@@ -1,7 +1,5 @@
-const {DOMImplementation, XMLSerializer} = require('xmldom');
const vnReport = require('../../../core/mixins/vn-report.js');
const {toDataURL} = require('qrcode');
-const jsBarcode = require('jsbarcode');
module.exports = {
name: 'collection-label',
@@ -30,11 +28,8 @@ module.exports = {
const labels = await this.rawSqlFromDef('labelsData', [ticketIds]);
- const [{scannableCodeType}] = await this.rawSqlFromDef('barcodeType');
- if (scannableCodeType === 'qr') {
- for (const labelData of labels)
- labelData.qrData = await this.getQr(labelData?.ticketFk, labelData?.workerFk);
- }
+ for (const labelData of labels)
+ labelData.qrData = await this.getQr(labelData?.ticketFk, labelData?.workerFk);
this.labelsData = labels;
this.checkMainEntity(this.labelsData);
@@ -50,20 +45,6 @@ module.exports = {
});
return toDataURL(QRdata, {margin: 0});
},
- getBarcode(id) {
- const xmlSerializer = new XMLSerializer();
- const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
- const svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
-
- jsBarcode(svgNode, id, {
- xmlDocument: document,
- format: 'code128',
- displayValue: false,
- width: 3.8,
- height: 115,
- });
- return xmlSerializer.serializeToString(svgNode);
- },
getVertical(labelData) {
let value;
if (labelData.collectionFk) {
diff --git a/print/templates/reports/collection-label/sql/barcodeType.sql b/print/templates/reports/collection-label/sql/barcodeType.sql
deleted file mode 100644
index 0700c95a2..000000000
--- a/print/templates/reports/collection-label/sql/barcodeType.sql
+++ /dev/null
@@ -1,3 +0,0 @@
-SELECT scannableCodeType
- FROM productionConfig
- LIMIT 1
\ No newline at end of file
diff --git a/print/templates/reports/entry-order/assets/css/style.css b/print/templates/reports/entry-order/assets/css/style.css
index cabdadf9f..767b1185a 100644
--- a/print/templates/reports/entry-order/assets/css/style.css
+++ b/print/templates/reports/entry-order/assets/css/style.css
@@ -1,14 +1,20 @@
-
-
h3 {
font-weight: 100;
color: #555
}
-
.report-info {
font-size: 20px
}
-
.description strong {
text-transform: uppercase;
+}
+.nowrap {
+ white-space: nowrap;
+}
+.padding {
+ padding: 16px;
+}
+.tags {
+ font-size: 10px;
+ margin: 0;
}
\ No newline at end of file
diff --git a/print/templates/reports/entry-order/entry-order.html b/print/templates/reports/entry-order/entry-order.html
index ddf0e9b5d..e5d3bfb6d 100644
--- a/print/templates/reports/entry-order/entry-order.html
+++ b/print/templates/reports/entry-order/entry-order.html
@@ -4,23 +4,23 @@
-
+
{{$t('title')}}
+
-
{{$t('title')}}
- {{$t('entryId')}}
+ {{$t('entryId')}}
{{entry.id}}
- {{$t('date')}}
+ {{$t('date')}}
{{formatDate(entry.landed,'%d-%m-%Y')}}
- {{$t('ref')}}
- {{entry.invoiceNumber}}
+ {{$t('ref')}}
+ {{entry.invoiceNumber | dashIfEmpty}}
@@ -38,42 +38,56 @@
-
+
{{$t('boxes')}}
+
{{$t('packing')}}
- {{$t('concept')}}
+ {{$t('concept')}}
+ {{$t('reference')}}
+ {{$t('tags')}}
{{$t('quantity')}}
+
{{$t('price')}}
+
{{$t('amount')}}
- {{buy.box}}
+ {{buy.stickers}}
+ x
{{buy.packing}}
- {{buy.itemName}}
+ {{buy.name}}
+ {{buy.comment}}
+
+ {{buy.tag5}} → {{buy.value5}}
+ {{buy.tag6}} → {{buy.value6}}
+ {{buy.tag7}} → {{buy.value7}}
+
{{buy.quantity | number($i18n.locale)}}
+ x
{{buy.buyingValue | currency('EUR', $i18n.locale)}}
+ =
{{buy.buyingValue * buy.quantity | currency('EUR', $i18n.locale)}}
-
-
- {{buy.tag5}} {{buy.value5}}
- {{buy.tag6}} {{buy.value6}}
- {{buy.tag7}} {{buy.value7}}
-
-
-
-
- {{$t('total')}}
-
- {{getTotal() | currency('EUR', $i18n.locale)}}
+
+ {{getTotalBy('stickers')}}
+
+
+
+
+
+ {{getTotalBy('quantity') | number($i18n.locale)}}
+
+
+
+ {{getTotalBy('amount') | currency('EUR', $i18n.locale)}}
diff --git a/print/templates/reports/entry-order/entry-order.js b/print/templates/reports/entry-order/entry-order.js
index d31ad1a36..56356e068 100755
--- a/print/templates/reports/entry-order/entry-order.js
+++ b/print/templates/reports/entry-order/entry-order.js
@@ -13,13 +13,17 @@ module.exports = {
return {totalBalance: 0.00};
},
methods: {
- getTotal() {
- let total = 0.00;
- this.buys.forEach(buy => {
- total += buy.quantity * buy.buyingValue;
- });
-
- return total;
+ getTotalBy(property) {
+ return this.buys.reduce((total, buy) => {
+ switch (property) {
+ case 'amount':
+ return total + buy.quantity * buy.buyingValue;
+ case 'quantity':
+ return total + buy.quantity;
+ case 'stickers':
+ return total + buy.stickers;
+ }
+ }, 0);
}
},
props: {
diff --git a/print/templates/reports/entry-order/locale/es.yml b/print/templates/reports/entry-order/locale/es.yml
index 5c633aeaa..5a6716ba1 100644
--- a/print/templates/reports/entry-order/locale/es.yml
+++ b/print/templates/reports/entry-order/locale/es.yml
@@ -2,7 +2,7 @@ reportName: pedido-de-entrada
title: Pedido
supplierName: Proveedor
supplierStreet: Dirección
-entryId: Referencia interna
+entryId: Nº Entrada
date: Fecha
ref: Nº Factura
boxes: Cajas
@@ -14,4 +14,6 @@ concept: Descripción
total: Total
entry: Entrada {0}
supplierData: Datos del proveedor
-notes: Notas
\ No newline at end of file
+notes: Notas
+reference: Referencia
+tags: Tags
\ No newline at end of file
diff --git a/print/templates/reports/entry-order/sql/buys.sql b/print/templates/reports/entry-order/sql/buys.sql
index 5bf9f2dfe..92c055483 100644
--- a/print/templates/reports/entry-order/sql/buys.sql
+++ b/print/templates/reports/entry-order/sql/buys.sql
@@ -1,16 +1,17 @@
-SELECT
- b.itemFk,
- b.quantity,
- b.buyingValue,
- b.stickers box,
- b.packing,
- i.name itemName,
- i.tag5,
- i.value5,
- i.tag6,
- i.value6,
- i.tag7,
- i.value7
-FROM buy b
- JOIN item i ON i.id = b.itemFk
-WHERE b.entryFk = ?
\ No newline at end of file
+SELECT b.itemFk,
+ b.quantity,
+ b.buyingValue,
+ b.stickers,
+ b.packing,
+ i.name,
+ IFNULL(i2.comment, i.comment) comment,
+ i.tag5,
+ i.value5,
+ i.tag6,
+ i.value6,
+ i.tag7,
+ i.value7
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ LEFT JOIN item i2 ON i2.id = b.itemOriginalFk
+ WHERE b.entryFk = ?
diff --git a/print/templates/reports/entry-order/sql/entry.sql b/print/templates/reports/entry-order/sql/entry.sql
index c30eebca8..2ab599123 100644
--- a/print/templates/reports/entry-order/sql/entry.sql
+++ b/print/templates/reports/entry-order/sql/entry.sql
@@ -1,9 +1,8 @@
-SELECT
- e.id,
- e.invoiceNumber,
- c.code companyCode,
- t.landed
-FROM entry e
- JOIN travel t ON t.id = e.travelFk
- JOIN company c ON c.id = e.companyFk
-WHERE e.id = ?
+SELECT e.id,
+ e.invoiceNumber,
+ c.code companyCode,
+ t.landed
+ FROM entry e
+ JOIN travel t ON t.id = e.travelFk
+ JOIN company c ON c.id = e.companyFk
+ WHERE e.id = ?
diff --git a/print/templates/reports/entry-order/sql/supplier.sql b/print/templates/reports/entry-order/sql/supplier.sql
index 81ed7e883..214f7913f 100644
--- a/print/templates/reports/entry-order/sql/supplier.sql
+++ b/print/templates/reports/entry-order/sql/supplier.sql
@@ -1,11 +1,10 @@
-SELECT
- s.name,
- s.street,
- s.nif,
- s.postCode,
- s.city,
- p.name province
-FROM supplier s
- JOIN entry e ON e.supplierFk = s.id
- LEFT JOIN province p ON p.id = s.provinceFk
-WHERE e.id = ?
+SELECT s.name,
+ s.street,
+ s.nif,
+ s.postCode,
+ s.city,
+ p.name province
+ FROM supplier s
+ JOIN entry e ON e.supplierFk = s.id
+ LEFT JOIN province p ON p.id = s.provinceFk
+ WHERE e.id = ?
diff --git a/print/templates/reports/sepa-core/locale/en.yml b/print/templates/reports/sepa-core/locale/en.yml
new file mode 100644
index 000000000..6d7e23501
--- /dev/null
+++ b/print/templates/reports/sepa-core/locale/en.yml
@@ -0,0 +1,46 @@
+reportName: direct-debit-order
+title: SEPA CORE Direct Debit Order
+description: By signing this direct debit order, the debtor authorizes (A) the creditor
+ to send instructions to the debtor's bank to debit their account and (B) the bank to debit
+ their account according to the creditor's instructions. As part of their rights,
+ the debtor is entitled to a refund by their bank under the terms and conditions
+ of the contract signed with the bank. The refund request must be made within
+ eight weeks of the debit. You can obtain additional information about your rights
+ from your financial institution.
+documentCopy: You must take a signed copy of this document to your Bank for registration to avoid returns.
+mandatoryFields: ALL FIELDS MUST BE COMPLETED.
+sendOrder: ONCE THIS DIRECT DEBIT ORDER IS SIGNED, IT MUST BE SENT TO THE CREDITOR
+ FOR SAFEGUARDING AND IT IS RECOMMENDED TO PROVIDE A COPY TO YOUR BANK.
+supplier:
+ toCompleteBySupplier: To be completed by the creditor
+ orderReference: Direct debit order reference
+ identifier: Creditor identifier
+ name: Creditor's name
+ street: Address
+ location: Postal Code - City - Province
+ country: Country
+client:
+ toCompleteByClient: To be completed by the debtor
+ name: Debtor's name(s)
+ fiscalId: NIF
+ street: Debtor's address
+ location: Postal Code - City - Province
+ country: Debtor's country
+ swift: Swift BIC
+ accountNumber: IBAN
+ accountHolder: "(Account holder(s))"
+ accountNumberFormat: In {0}, the IBAN consists of {1} characters always starting with {2}
+ paymentType: Payment type
+ recurrent: Recurrent
+ unique: Unique
+ signLocation: Date - City
+ sign: Debtor's signature and stamp
+order: Direct Debit Order {0}
+Francia: France
+España: Spain
+Portugal: Portugal
+instructions:
+ title: Instructions
+ accountFields: Fill in the fields related to the bank account
+ signDocument: Sign and stamp the document. For it to be valid, the stamp must show the CIF/NIF. If not, the request must be accompanied by an account ownership certificate.
+ thanks: Thank you for your cooperation!
\ No newline at end of file
diff --git a/print/templates/reports/sepa-core/sepa-core.js b/print/templates/reports/sepa-core/sepa-core.js
index 6b941556e..8c4e4911c 100755
--- a/print/templates/reports/sepa-core/sepa-core.js
+++ b/print/templates/reports/sepa-core/sepa-core.js
@@ -1,13 +1,12 @@
const vnReport = require('../../../core/mixins/vn-report.js');
-const db = require('../../../core/database');
module.exports = {
name: 'sepa-core',
mixins: [vnReport],
async serverPrefetch() {
- this.client = await this.findOneFromDef('client', [this.companyId, this.companyId, this.id]);
+ this.client = await this.findOneFromDef('client', [this.id]);
this.checkMainEntity(this.client);
- const suppliers = await this.rawSqlFromDef('supplier', [this.companyId, this.companyId, this.id]);
+ const suppliers = await this.rawSqlFromDef('supplier', [this.companyId, this.id]);
this.supplier = {
...suppliers[0],
accountDetailValue: suppliers.map(val => val?.accountDetailValue)
@@ -23,16 +22,5 @@ module.exports = {
type: Number,
required: true
}
- },
- methods: {
- getSupplierCif() {
- return db.findOne(`
- SELECT DISTINCT ad.value
- FROM supplierAccount sa
- JOIN accountDetail ad ON ad.supplierAccountFk = sa.id
- JOIN accountDetailType adt ON adt.id = ad.accountDetailTypeFk AND adt.id = 3
- WHERE sa.supplierFk = ?`) [this.companyId];
- }
}
-
};
diff --git a/print/templates/reports/sepa-core/sql/client.sql b/print/templates/reports/sepa-core/sql/client.sql
index b3ba180b3..6e0ec89eb 100644
--- a/print/templates/reports/sepa-core/sql/client.sql
+++ b/print/templates/reports/sepa-core/sql/client.sql
@@ -1,19 +1,14 @@
-SELECT
- c.id,
- m.code mandateCode,
+SELECT c.id,
c.socialName,
c.street,
c.postcode,
c.city,
c.fi,
- p.name AS province,
+ p.name province,
ct.name country,
- ct.code AS countryCode,
- ct.ibanLength AS ibanLength
-FROM client c
- JOIN country ct ON ct.id = c.countryFk
- LEFT JOIN mandate m ON m.clientFk = c.id
- AND m.companyFk = ? AND m.finished IS NULL
- LEFT JOIN province p ON p.id = c.provinceFk
-WHERE (m.companyFk = ? OR m.companyFk IS NULL) AND c.id = ?
-ORDER BY m.created DESC LIMIT 1
\ No newline at end of file
+ ct.code countryCode,
+ ct.ibanLength ibanLength
+ FROM client c
+ JOIN country ct ON ct.id = c.countryFk
+ JOIN province p ON p.id = c.provinceFk
+ WHERE c.id = ?
\ No newline at end of file
diff --git a/print/templates/reports/sepa-core/sql/supplier.sql b/print/templates/reports/sepa-core/sql/supplier.sql
index 1276f2437..e7bede26d 100644
--- a/print/templates/reports/sepa-core/sql/supplier.sql
+++ b/print/templates/reports/sepa-core/sql/supplier.sql
@@ -1,29 +1,24 @@
-SELECT
- m.code mandateCode,
- s.name,
- s.street,
- sc.name country,
- s.postCode,
- s.city,
- sp.name province,
- s.nif,
- sa.supplierFk,
- be.name bankName,
- ad.value accountDetailValue
-FROM
- client c
- LEFT JOIN mandate m ON m.clientFk = c.id AND m.companyFk = ? AND m.finished IS NULL
- LEFT JOIN supplier s ON s.id = m.companyFk
- LEFT JOIN country sc ON sc.id = s.countryFk
- LEFT JOIN province sp ON sp.id = s.provinceFk
- LEFT JOIN province p ON p.id = c.provinceFk
- LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id
- LEFT JOIN bankEntity be ON sa.bankEntityFk = be.id
- LEFT JOIN accountDetail ad ON ad.supplierAccountFk = sa.id
- JOIN accountDetailType adt ON adt.id = ad.accountDetailTypeFk AND adt.id = 3
-WHERE
- (m.companyFk = ? OR m.companyFk IS NULL)
- AND (c.id = ? OR (c.id IS NULL AND c.countryFk = sa.countryFk))
-GROUP BY ad.value
-ORDER BY
-m.created DESC;
+SELECT m.code mandateCode,
+ s.name,
+ s.street,
+ sc.name country,
+ s.postCode,
+ s.city,
+ sp.name province,
+ ad.value accountDetailValue
+ FROM client c
+ JOIN mandate m ON m.clientFk = c.id
+ JOIN mandateType mt ON mt.id = m.mandateTypeFk
+ JOIN supplier s ON s.id = m.companyFk
+ LEFT JOIN country sc ON sc.id = s.countryFk
+ LEFT JOIN province sp ON sp.id = s.provinceFk
+ JOIN supplierAccount sa ON sa.supplierFk = s.id
+ JOIN accountDetail ad ON ad.supplierAccountFk = sa.id
+ JOIN accountDetailType adt ON adt.id = ad.accountDetailTypeFk
+ WHERE m.companyFk = ?
+ AND m.finished IS NULL
+ AND c.id = ?
+ AND mt.code = 'CORE'
+ AND adt.description = 'Referencia Remesas'
+ GROUP BY m.id, ad.value
+ ORDER BY m.created DESC