diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4572b137ad..f59a3d4c6e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -102,6 +102,7 @@
- feat: refs #7438 Added volume to item_valuateInventory by:guillermo
- feat: refs #7438 Requested changes and little changes by:guillermo
- refs #6281 feat:buyFk in itemShelving by:sergiodt
+- feat: refs #6449 item ID is displayed in the sale line by:jorgep
### Changed 馃摝
diff --git a/back/methods/collection/spec/getSales.spec.js b/back/methods/collection/spec/getSales.spec.js
index e6205cc792..520657ec1e 100644
--- a/back/methods/collection/spec/getSales.spec.js
+++ b/back/methods/collection/spec/getSales.spec.js
@@ -4,15 +4,7 @@ describe('collection getSales()', () => {
const collectionOrTicketFk = 999999;
const print = true;
const source = 'CHECKER';
-
- beforeAll(() => {
- ctx = {
- req: {
- accessToken: {userId: 9},
- headers: {origin: 'http://localhost'},
- }
- };
- });
+ const ctx = beforeAll.getCtx();
it('should return a collection with tickets, placements and barcodes settled correctly', async() => {
const tx = await models.Collection.beginTransaction({});
diff --git a/back/methods/collection/spec/getTickets.spec.js b/back/methods/collection/spec/getTickets.spec.js
index 969800839a..0e006706d7 100644
--- a/back/methods/collection/spec/getTickets.spec.js
+++ b/back/methods/collection/spec/getTickets.spec.js
@@ -1,15 +1,7 @@
const models = require('vn-loopback/server/server').models;
describe('collection getTickets()', () => {
- let ctx;
- beforeAll(async() => {
- ctx = {
- req: {
- accessToken: {userId: 9},
- headers: {origin: 'http://localhost'}
- }
- };
- });
+ const ctx = beforeAll.getCtx();
it('should get tickets, sales and barcodes from collection', async() => {
const tx = await models.Collection.beginTransaction({});
diff --git a/back/methods/collection/spec/setSaleQuantity.spec.js b/back/methods/collection/spec/setSaleQuantity.spec.js
index b563f5b198..00ddae0feb 100644
--- a/back/methods/collection/spec/setSaleQuantity.spec.js
+++ b/back/methods/collection/spec/setSaleQuantity.spec.js
@@ -1,20 +1,7 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('setSaleQuantity()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should change quantity sale', async() => {
const tx = await models.Ticket.beginTransaction({});
diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js
index 56d2065290..0efd00874a 100644
--- a/back/methods/mrw-config/cancelShipment.js
+++ b/back/methods/mrw-config/cancelShipment.js
@@ -37,6 +37,7 @@ module.exports = Self => {
});
const xmlString = response.data;
+ console.log('xmlString: ', xmlString);
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
const result = xmlDoc.getElementsByTagName('Mensaje')[0].textContent;
diff --git a/back/methods/starred-module/specs/getStarredModules.spec.js b/back/methods/starred-module/specs/getStarredModules.spec.js
index bf9bd1d730..afe1dd9c29 100644
--- a/back/methods/starred-module/specs/getStarredModules.spec.js
+++ b/back/methods/starred-module/specs/getStarredModules.spec.js
@@ -1,22 +1,7 @@
const {models} = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
describe('getStarredModules()', () => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- const ctx = {req: activeCtx};
-
- beforeEach(() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ const ctx = beforeAll.getCtx();
it(`should return the starred modules for a given user`, async() => {
const newStarred = await models.StarredModule.create({workerFk: 9, moduleFk: 'customer', position: 1});
diff --git a/back/methods/starred-module/specs/setPosition.spec.js b/back/methods/starred-module/specs/setPosition.spec.js
index a428fcf22c..63addeffc3 100644
--- a/back/methods/starred-module/specs/setPosition.spec.js
+++ b/back/methods/starred-module/specs/setPosition.spec.js
@@ -1,24 +1,8 @@
const {models} = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
describe('setPosition()', () => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- const ctx = {
- req: activeCtx
- };
-
- beforeEach(() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ const ctx = beforeAll.getCtx();
+ beforeAll.mockLoopBackContext();
it('should increase the orders module position by replacing it with clients and vice versa', async() => {
const tx = await models.StarredModule.beginTransaction({});
diff --git a/back/methods/starred-module/specs/toggleStarredModule.spec.js b/back/methods/starred-module/specs/toggleStarredModule.spec.js
index 848c1475a7..d506abc334 100644
--- a/back/methods/starred-module/specs/toggleStarredModule.spec.js
+++ b/back/methods/starred-module/specs/toggleStarredModule.spec.js
@@ -1,24 +1,7 @@
const {models} = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
describe('toggleStarredModule()', () => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- const ctx = {
- req: activeCtx
- };
-
- beforeEach(() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ const ctx = beforeAll.getCtx();
it('should create a new starred module and then remove it by calling the method again with same args', async() => {
const starredModule = await models.StarredModule.toggleStarredModule(ctx, 'order');
@@ -26,7 +9,7 @@ describe('toggleStarredModule()', () => {
expect(starredModules.length).toEqual(1);
expect(starredModule.moduleFk).toEqual('order');
- expect(starredModule.workerFk).toEqual(activeCtx.accessToken.userId);
+ expect(starredModule.workerFk).toEqual(ctx.req.accessToken.userId);
expect(starredModule.position).toEqual(starredModules.length);
await models.StarredModule.toggleStarredModule(ctx, 'order');
diff --git a/back/methods/user-config/specs/getUserConfig.spec.js b/back/methods/user-config/specs/getUserConfig.spec.js
index 8b510a7062..bbfb98ef77 100644
--- a/back/methods/user-config/specs/getUserConfig.spec.js
+++ b/back/methods/user-config/specs/getUserConfig.spec.js
@@ -1,12 +1,12 @@
const models = require('vn-loopback/server/server').models;
describe('userConfig getUserConfig()', () => {
+ const ctx = beforeAll.getCtx();
it(`should return the configuration data of a given user`, async() => {
const tx = await models.Item.beginTransaction({});
const options = {transaction: tx};
try {
- const ctx = {req: {accessToken: {userId: 9}}};
const result = await models.UserConfig.getUserConfig(ctx, options);
expect(result.warehouseFk).toEqual(1);
diff --git a/back/models/specs/mailAliasAccount.spec.js b/back/models/specs/mailAliasAccount.spec.js
index 8f0278a50d..0f4cbdbb1b 100644
--- a/back/models/specs/mailAliasAccount.spec.js
+++ b/back/models/specs/mailAliasAccount.spec.js
@@ -1,12 +1,13 @@
const models = require('vn-loopback/server/server').models;
describe('loopback model MailAliasAccount', () => {
+ const ctx = beforeAll.getCtx();
it('should add a mail Alias', async() => {
const tx = await models.MailAliasAccount.beginTransaction({});
let error;
try {
- const options = {transaction: tx, accessToken: {userId: 9}};
+ const options = {transaction: tx, ctx};
await models.MailAliasAccount.create({mailAlias: 2, account: 5}, options);
await tx.rollback();
@@ -23,7 +24,7 @@ describe('loopback model MailAliasAccount', () => {
let error;
try {
- const options = {transaction: tx, accessToken: {userId: 9}};
+ const options = {transaction: tx, ctx};
await models.MailAliasAccount.create({mailAlias: 3, account: 5}, options);
await tx.rollback();
diff --git a/back/models/warehouse.json b/back/models/warehouse.json
index 756a538c05..54006130b3 100644
--- a/back/models/warehouse.json
+++ b/back/models/warehouse.json
@@ -1,59 +1,59 @@
-{
- "name": "Warehouse",
- "description": "Warehouses from where orders are sent",
- "base": "VnModel",
- "options": {
- "mysql": {
- "table": "warehouse"
- }
- },
- "properties": {
- "id": {
- "id": true,
- "type": "number",
- "forceId": false
- },
- "name": {
- "type": "string"
- },
- "code": {
- "type": "string"
- },
- "isInventory": {
- "type": "number"
- },
- "isManaged": {
- "type": "boolean"
- },
- "countryFk": {
- "type": "number"
- }
- },
- "relations": {
- "country": {
- "type": "belongsTo",
- "model": "Country",
- "foreignKey": "countryFk"
- },
- "address": {
- "type": "belongsTo",
- "model": "Address",
- "foreignKey": "addressFk"
- }
- },
- "acls": [
- {
- "accessType": "READ",
- "principalType": "ROLE",
- "principalId": "$everyone",
- "permission": "ALLOW"
- }
- ],
- "scope": {
- "where": {
- "isForTicket": {
- "neq": 0
- }
- }
- }
-}
\ No newline at end of file
+{
+ "name": "Warehouse",
+ "description": "Warehouses from where orders are sent",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "warehouse"
+ }
+ },
+ "properties": {
+ "id": {
+ "id": true,
+ "type": "number",
+ "forceId": false
+ },
+ "name": {
+ "type": "string"
+ },
+ "code": {
+ "type": "string"
+ },
+ "isInventory": {
+ "type": "number"
+ },
+ "isManaged": {
+ "type": "boolean"
+ },
+ "countryFk": {
+ "type": "number"
+ }
+ },
+ "relations": {
+ "country": {
+ "type": "belongsTo",
+ "model": "Country",
+ "foreignKey": "countryFk"
+ },
+ "address": {
+ "type": "belongsTo",
+ "model": "Address",
+ "foreignKey": "addressFk"
+ }
+ },
+ "acls": [
+ {
+ "accessType": "READ",
+ "principalType": "ROLE",
+ "principalId": "$everyone",
+ "permission": "ALLOW"
+ }
+ ],
+ "scope": {
+ "where": {
+ "isForTicket": {
+ "neq": 0
+ }
+ }
+ }
+}
diff --git a/back/tests-helper.js b/back/tests-helper.js
index 6d465bc2a9..96f75f0642 100644
--- a/back/tests-helper.js
+++ b/back/tests-helper.js
@@ -10,7 +10,6 @@ async function init() {
host: process.env.DB_HOST,
port: process.env.DB_PORT
});
-
const bootOptions = {dataSources};
await new Promise((resolve, reject) => {
app.boot(bootOptions,
@@ -33,3 +32,4 @@ module.exports = {
if (require.main === module)
init();
+
diff --git a/back/tests.js b/back/tests.js
index 50698eb922..2527367c29 100644
--- a/back/tests.js
+++ b/back/tests.js
@@ -84,7 +84,7 @@ async function test() {
'loopback/**/*[sS]pec.js',
'modules/*/back/**/*.[sS]pec.js'
],
- helpers: []
+ helpers: [`back/vn-jasmine.js`],
};
if (PARALLEL) {
@@ -114,7 +114,6 @@ async function test() {
if (opts.ci)
runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = SPEC_TIMEOUT;
- // runner.loadConfigFile('back/jasmine.json');
runner.loadConfig(config);
process.env.SPEC_IS_RUNNING = true;
await runner.execute();
diff --git a/back/vn-jasmine.js b/back/vn-jasmine.js
new file mode 100644
index 0000000000..2b981c6d9f
--- /dev/null
+++ b/back/vn-jasmine.js
@@ -0,0 +1,48 @@
+
+const LoopBackContext = require('loopback-context');
+const getAccessToken = (userId = 9) => {
+ return {accessToken: {userId}};
+};
+const DEFAULT_HEADERS = {headers: {origin: 'http://localhost'}};
+const default_before_all = userId => {
+ return {
+ req: {
+ ...getAccessToken(userId),
+ ...DEFAULT_HEADERS,
+ ...{__: value => value}
+
+ },
+ args: {}
+ };
+};
+const default_loopback_ctx = userId => {
+ return {
+ ...getAccessToken(userId),
+ ...default_before_all(userId),
+ http: {
+ ...default_before_all(userId)
+ },
+ args: {}
+ };
+};
+
+function vnBeforeAll() {
+ Object.assign(beforeAll, {getCtx: default_before_all, mockLoopBackContext});
+}
+
+const mockLoopBackContext = userId => {
+ const activeCtx = default_loopback_ctx(userId);
+ beforeAll(() => {
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
+ active: activeCtx
+ });
+ });
+ return activeCtx;
+};
+module.exports = {
+ mockLoopBackContext
+};
+
+(function init() {
+ vnBeforeAll();
+})();
diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql
index 2eb0b8d1df..db0fab77f9 100644
--- a/db/dump/fixtures.before.sql
+++ b/db/dump/fixtures.before.sql
@@ -115,6 +115,9 @@ INSERT INTO `hedera`.`tpvConfig`(`id`, `currency`, `terminal`, `transactionType`
VALUES
(1, 978, 1, 0, 2000, 9, 0);
+INSERT INTO hedera.orderConfig (`id`, `employeeFk`, `defaultAgencyFk`, `guestMethod`, `guestAgencyFk`, `reserveTime`, `defaultCompanyFk`)
+ VALUES (1, 1, 2, 'PICKUP', 1, '00:20:00', 442);
+
INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`)
VALUES
(1101, 'brucewayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'),
@@ -301,6 +304,17 @@ UPDATE `vn`.`agencyMode` SET `deliveryMethodFk` = 1 WHERE `id` = 8;
UPDATE `vn`.`agencyMode` SET `deliveryMethodFk` = 4 WHERE `id` = 23;
UPDATE `vn`.`agencyMode` SET `deliveryMethodFk` = 1 WHERE `id` = 10;
+UPDATE `vn`.`agencyMode` SET `description` = 'inhouse pickup' WHERE `id` = 1;
+UPDATE `vn`.`agencyMode` SET `description` = 'Super-Man delivery' WHERE `id` = 2;
+UPDATE `vn`.`agencyMode` SET `description` = 'Teleportation device' WHERE `id` = 3;
+UPDATE `vn`.`agencyMode` SET `description` = 'Entanglement' WHERE `id` = 4;
+UPDATE `vn`.`agencyMode` SET `description` = 'Quantum break device' WHERE `id` = 5;
+UPDATE `vn`.`agencyMode` SET `description` = 'Walking' WHERE `id` = 6;
+UPDATE `vn`.`agencyMode` SET `description` = 'Gotham247' WHERE `id` = 7;
+UPDATE `vn`.`agencyMode` SET `description` = 'Gotham247Expensive' WHERE `id` = 8;
+UPDATE `vn`.`agencyMode` SET `description` = 'Other agency' WHERE `id` = 10;
+UPDATE `vn`.`agencyMode` SET `description` = 'Refund' WHERE `id` = 23;
+
UPDATE `vn`.`agencyMode` SET `web` = 1, `reportMail` = 'no-reply@gothamcity.com';
UPDATE `vn`.`agencyMode` SET `code` = 'refund' WHERE `id` = 23;
@@ -528,7 +542,8 @@ INSERT INTO `vn`.`observationType`(`id`,`description`, `code`)
(5, 'Administrative', 'administrative'),
(6, 'Weight', 'weight'),
(7, 'InvoiceOut', 'invoiceOut'),
- (8, 'DropOff', 'dropOff');
+ (8, 'DropOff', 'dropOff'),
+ (9, 'Sustituci贸n', 'substitution');
INSERT INTO `vn`.`addressObservation`(`id`,`addressFk`,`observationTypeFk`,`description`)
VALUES
@@ -978,6 +993,14 @@ INSERT INTO `vn`.`priceFixed`(`id`, `itemFk`, `rate0`, `rate1`, `rate2`, `rate3`
(2, 3, 10, 10, 10, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 0, 1, util.VN_CURDATE()),
(3, 13, 8.5, 10, 7.5, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 1, 2, util.VN_CURDATE());
+INSERT INTO `vn`.`itemMinimumQuantity`(`itemFk`, `quantity`, `started`, `ended`, `warehouseFk`)
+ VALUES
+ (1, 5, util.VN_CURDATE() - INTERVAL 2 MONTH, util.VN_CURDATE() + INTERVAL 1 MONTH, 1),
+ (2, 10, util.VN_CURDATE() - INTERVAL 2 DAY, util.VN_CURDATE() - INTERVAL 1 DAY, 2),
+ (3, 15, util.VN_CURDATE() + INTERVAL 3 DAY, util.VN_CURDATE() + INTERVAL 2 WEEK, 3),
+ (2, 10, util.VN_CURDATE() + INTERVAL 2 MONTH, NULL, 5),
+ (4, 8, util.VN_CURDATE() - INTERVAL 3 MONTH, NULL, NULL);
+
INSERT INTO `vn`.`expeditionBoxVol`(`boxFk`, `m3`, `ratio`)
VALUES
(71,0.141,1);
@@ -3235,7 +3258,6 @@ INSERT IGNORE INTO vn.itemType
workerFk = 103,
isInventory = TRUE,
life = 10,
- density = 250,
itemPackingTypeFk = NULL,
temperatureFk = 'warm';
diff --git a/db/routines/account/triggers/mailAliasAccount_afterDelete.sql b/db/routines/account/triggers/mailAliasAccount_afterDelete.sql
new file mode 100644
index 0000000000..83af7169c2
--- /dev/null
+++ b/db/routines/account/triggers/mailAliasAccount_afterDelete.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` 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 ;
\ No newline at end of file
diff --git a/db/routines/account/triggers/mailAliasAccount_beforeInsert.sql b/db/routines/account/triggers/mailAliasAccount_beforeInsert.sql
new file mode 100644
index 0000000000..a435832f20
--- /dev/null
+++ b/db/routines/account/triggers/mailAliasAccount_beforeInsert.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `account`.`mailAliasAccount_beforeInsert`
+ BEFORE INSERT ON `mailAliasAccount`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/account/triggers/mailAliasAccount_beforeUpdate.sql b/db/routines/account/triggers/mailAliasAccount_beforeUpdate.sql
new file mode 100644
index 0000000000..471a349006
--- /dev/null
+++ b/db/routines/account/triggers/mailAliasAccount_beforeUpdate.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `account`.`mailAliasAccount_beforeUpdate`
+ BEFORE UPDATE ON `mailAliasAccount`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/bi/procedures/rutasAnalyze.sql b/db/routines/bi/procedures/rutasAnalyze.sql
index 5f0d55c7a9..e277968bfc 100644
--- a/db/routines/bi/procedures/rutasAnalyze.sql
+++ b/db/routines/bi/procedures/rutasAnalyze.sql
@@ -59,7 +59,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
diff --git a/db/routines/bi/views/tarifa_componentes_series.sql b/db/routines/bi/views/tarifa_componentes_series.sql
index f231ae420b..ed2f8e29a4 100644
--- a/db/routines/bi/views/tarifa_componentes_series.sql
+++ b/db/routines/bi/views/tarifa_componentes_series.sql
@@ -2,7 +2,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `bi`.`tarifa_componentes_series`
AS SELECT `ct`.`id` AS `tarifa_componentes_series_id`,
- `ct`.`type` AS `Serie`,
+ `ct`.`name` AS `Serie`,
`ct`.`isBase` AS `base`,
`ct`.`isMargin` AS `margen`
FROM `vn`.`componentType` `ct`
diff --git a/db/routines/cache/procedures/availableNoRaids_refresh.sql b/db/routines/cache/procedures/availableNoRaids_refresh.sql
index 383e354360..37715d270d 100644
--- a/db/routines/cache/procedures/availableNoRaids_refresh.sql
+++ b/db/routines/cache/procedures/availableNoRaids_refresh.sql
@@ -117,7 +117,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 ;
diff --git a/db/routines/cache/procedures/available_refresh.sql b/db/routines/cache/procedures/available_refresh.sql
index d0939e5682..abf023a41f 100644
--- a/db/routines/cache/procedures/available_refresh.sql
+++ b/db/routines/cache/procedures/available_refresh.sql
@@ -121,7 +121,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 ;
diff --git a/db/routines/cache/procedures/visible_refresh.sql b/db/routines/cache/procedures/visible_refresh.sql
index 63b42dfd92..78d23dbfbc 100644
--- a/db/routines/cache/procedures/visible_refresh.sql
+++ b/db/routines/cache/procedures/visible_refresh.sql
@@ -1,13 +1,13 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`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;
@@ -15,22 +15,23 @@ 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
+ SELECT item_id, amount stock, amount visible
+ FROM cache.stock
WHERE warehouse_id = v_warehouse;
-- 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$$
diff --git a/db/routines/edi/procedures/ekt_refresh.sql b/db/routines/edi/procedures/ekt_refresh.sql
index 0e9ed7d3ce..8ba438c0ac 100644
--- a/db/routines/edi/procedures/ekt_refresh.sql
+++ b/db/routines/edi/procedures/ekt_refresh.sql
@@ -7,7 +7,6 @@ BEGIN
*/
DECLARE vRewriteKop INT DEFAULT NULL;
DECLARE vTruncatePutOrder INT DEFAULT NULL;
- DECLARE vBarcode CHAR(15) DEFAULT NULL;
DECLARE vKop INT;
DECLARE vPutOrderFk BIGINT;
@@ -16,17 +15,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
@@ -46,10 +34,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 ;
diff --git a/db/routines/edi/views/ektRecent.sql b/db/routines/edi/views/ektRecent.sql
index 3e41490ab1..66ff7875e5 100644
--- a/db/routines/edi/views/ektRecent.sql
+++ b/db/routines/edi/views/ektRecent.sql
@@ -2,7 +2,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `edi`.`ektRecent`
AS SELECT `e`.`id` AS `id`,
- `e`.`barcode` AS `barcode`,
`e`.`entryYear` AS `entryYear`,
`e`.`batchNumber` AS `batchNumber`,
`e`.`deliveryNumber` AS `deliveryNumber`,
diff --git a/db/routines/hedera/procedures/item_calcCatalog.sql b/db/routines/hedera/procedures/item_calcCatalog.sql
index e72c2fd062..fae89bd5cc 100644
--- a/db/routines/hedera/procedures/item_calcCatalog.sql
+++ b/db/routines/hedera/procedures/item_calcCatalog.sql
@@ -25,11 +25,7 @@ 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 ;
diff --git a/db/routines/hedera/procedures/order_addItem.sql b/db/routines/hedera/procedures/order_addItem.sql
index d9c15c0eb7..f690f9aa68 100644
--- a/db/routines/hedera/procedures/order_addItem.sql
+++ b/db/routines/hedera/procedures/order_addItem.sql
@@ -56,11 +56,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;
diff --git a/db/routines/vn/events/claim_changeState.sql b/db/routines/vn/events/claim_changeState.sql
new file mode 100644
index 0000000000..5d94170a0c
--- /dev/null
+++ b/db/routines/vn/events/claim_changeState.sql
@@ -0,0 +1,22 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`claim_changeState`
+ ON SCHEDULE EVERY 1 DAY
+ STARTS '2024-06-06 07:52:46.000'
+ 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$$
+DELIMITER ;
diff --git a/db/routines/vn/functions/ticket_isProblemCalcNeeded.sql b/db/routines/vn/functions/ticket_isProblemCalcNeeded.sql
new file mode 100644
index 0000000000..4974a8c769
--- /dev/null
+++ b/db/routines/vn/functions/ticket_isProblemCalcNeeded.sql
@@ -0,0 +1,27 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_isProblemCalcNeeded`(
+ vSelf INT
+)
+ RETURNS BOOL
+ 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 ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/XDiario_check.sql b/db/routines/vn/procedures/XDiario_check.sql
index 0fb1c410de..ef969924b2 100644
--- a/db/routines/vn/procedures/XDiario_check.sql
+++ b/db/routines/vn/procedures/XDiario_check.sql
@@ -6,19 +6,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 (
diff --git a/db/routines/vn/procedures/address_updateCoordinates.sql b/db/routines/vn/procedures/address_updateCoordinates.sql
new file mode 100644
index 0000000000..bdeb886dfa
--- /dev/null
+++ b/db/routines/vn/procedures/address_updateCoordinates.sql
@@ -0,0 +1,25 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`address_updateCoordinates`(
+ vTicketFk INT,
+ vLongitude INT,
+ vLatitude INT)
+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 ;
diff --git a/db/routines/vn/procedures/buyUltimate.sql b/db/routines/vn/procedures/buyUltimate.sql
index 4346ef6402..98b16cbc0d 100644
--- a/db/routines/vn/procedures/buyUltimate.sql
+++ b/db/routines/vn/procedures/buyUltimate.sql
@@ -1,5 +1,8 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimate`(vWarehouseFk SMALLINT, vDated DATE)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimate`(
+ vWarehouseFk SMALLINT,
+ vDated DATE
+)
BEGIN
/**
* Calcula las 煤ltimas compras realizadas hasta una fecha
@@ -19,21 +22,22 @@ BEGIN
FROM cache.last_buy
WHERE warehouse_id = vWarehouseFk OR vWarehouseFk IS NULL;
- CALL buyUltimateFromInterval(vWarehouseFk, util.VN_CURDATE(), vDated);
+ IF vDated >= util.VN_CURDATE() THEN
+ CALL buyUltimateFromInterval(vWarehouseFk, util.VN_CURDATE(), vDated);
- REPLACE INTO tmp.buyUltimate
- SELECT itemFk, buyFk, warehouseFk, landed landing
- FROM tmp.buyUltimateFromInterval
- WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
- AND landed <= vDated
- AND NOT isIgnored;
-
- INSERT IGNORE INTO tmp.buyUltimate
- SELECT itemFk, buyFk, warehouseFk, landed landing
- FROM tmp.buyUltimateFromInterval
- WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
- AND landed > vDated
- ORDER BY isIgnored = FALSE DESC;
+ REPLACE INTO tmp.buyUltimate
+ SELECT itemFk, buyFk, warehouseFk, landed landing
+ FROM tmp.buyUltimateFromInterval
+ WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
+ AND landed <= vDated
+ AND NOT isIgnored;
+ INSERT IGNORE INTO tmp.buyUltimate
+ SELECT itemFk, buyFk, warehouseFk, landed landing
+ FROM tmp.buyUltimateFromInterval
+ WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
+ AND landed > vDated
+ ORDER BY isIgnored = FALSE DESC;
+ END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/buyUltimateFromInterval.sql b/db/routines/vn/procedures/buyUltimateFromInterval.sql
index e264b500d8..5879b58e14 100644
--- a/db/routines/vn/procedures/buyUltimateFromInterval.sql
+++ b/db/routines/vn/procedures/buyUltimateFromInterval.sql
@@ -1,5 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimateFromInterval`(vWarehouseFk SMALLINT, vStarted DATE, vEnded DATE)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimateFromInterval`(
+ vWarehouseFk SMALLINT,
+ vStarted DATE,
+ vEnded DATE
+)
BEGIN
/**
* Calcula las 煤ltimas compras realizadas
@@ -21,12 +25,13 @@ BEGIN
-- 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))
+ (PRIMARY KEY (itemFk, warehouseFk),
+ INDEX(buyFk), INDEX(landed), INDEX(warehouseFk), INDEX(itemFk))
ENGINE = MEMORY
SELECT itemFk,
warehouseFk,
buyFk,
- MAX(landed) landed,
+ landed,
isIgnored
FROM (SELECT b.itemFk,
t.warehouseInFk warehouseFk,
@@ -45,93 +50,117 @@ BEGIN
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;
+ SELECT itemFk,
+ warehouseFk,
+ buyFk,
+ landed,
+ isIgnored
+ FROM (SELECT b.itemFk,
+ t.warehouseInFk warehouseFk,
+ b.id buyFk,
+ t.landed,
+ b.isIgnored
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE t.landed > vEnded
+ AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
+ AND b.price2 > 0
+ AND NOT b.isIgnored
+ ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
+ LIMIT 10000000000000000000) sub
+ GROUP BY itemFk, warehouseFk;
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
- SELECT
- 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;
+ SELECT itemFk,
+ warehouseFk,
+ buyFk,
+ landed,
+ isIgnored
+ FROM (SELECT b.itemFk,
+ t.warehouseInFk warehouseFk,
+ b.id buyFk,
+ t.landed,
+ b.isIgnored
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE t.landed BETWEEN vStarted AND vEnded
+ AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
+ AND b.quantity = 0
+ ORDER BY NOT b.isIgnored DESC, t.landed DESC, b.id DESC
+ LIMIT 10000000000000000000) sub
+ GROUP BY itemFk, warehouseFk;
-- ItemOriginal
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
SELECT itemFk,
- warehouseFk,
- buyFk,
- 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;
+ warehouseFk,
+ buyFk,
+ landed,
+ isIgnored
+ FROM (SELECT b.itemFk,
+ t.warehouseInFk warehouseFk,
+ b.id buyFk,
+ t.landed,
+ itemOriginalFk,
+ b.isIgnored
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE t.landed BETWEEN vStarted AND vEnded
+ AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
+ AND b.price2 > 0
+ AND NOT b.isIgnored
+ AND b.quantity > 0
+ AND itemOriginalFk
+ ORDER BY t.landed DESC, b.id DESC
+ LIMIT 10000000000000000000) sub
+ GROUP BY itemFk, warehouseFk;
+ INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
+ SELECT itemFk,
+ warehouseFk,
+ buyFk,
+ landed,
+ isIgnored
+ FROM (SELECT b.itemFk,
+ t.warehouseInFk warehouseFk,
+ b.id buyFk,
+ t.landed,
+ b.isIgnored
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE t.landed > vEnded
+ AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
+ AND b.price2 > 0
+ AND NOT b.isIgnored
+ AND itemOriginalFk
+ ORDER BY t.landed DESC, b.id DESC
+ LIMIT 10000000000000000000) sub
+ GROUP BY itemFk, warehouseFk;
INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed, isIgnored)
- SELECT
- 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;
+ SELECT itemFk,
+ warehouseFk,
+ buyFk,
+ landed,
+ isIgnored
+ FROM
+ (SELECT b.itemFk,
+ t.warehouseInFk warehouseFk,
+ b.id buyFk,
+ t.landed,
+ b.isIgnored
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE t.landed BETWEEN vStarted AND vEnded
+ AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
+ AND b.quantity = 0
+ AND itemOriginalFk
+ ORDER BY t.landed DESC, b.id DESC
+ LIMIT 10000000000000000000) sub
+ GROUP BY itemFk, warehouseFk;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/catalog_calculate.sql b/db/routines/vn/procedures/catalog_calculate.sql
index bb52020df9..963e335079 100644
--- a/db/routines/vn/procedures/catalog_calculate.sql
+++ b/db/routines/vn/procedures/catalog_calculate.sql
@@ -45,8 +45,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),
@@ -60,11 +59,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;
@@ -136,7 +135,7 @@ BEGIN
CALL vn.catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk);
- INSERT INTO tmp.ticketCalculateItem (
+ INSERT INTO tmp.ticketCalculateItem(
itemFk,
available,
producer,
@@ -149,9 +148,9 @@ BEGIN
origin,
price,
priceKg,
- `grouping`)
- SELECT
- tl.itemFk,
+ `grouping`,
+ minQuantity)
+ SELECT tl.itemFk,
SUM(tl.available) available,
p.name producer,
i.name item,
@@ -163,7 +162,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
@@ -179,12 +179,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 ;
diff --git a/db/routines/vn/procedures/client_create.sql b/db/routines/vn/procedures/client_create.sql
index d5d7258a11..f2321e1292 100644
--- a/db/routines/vn/procedures/client_create.sql
+++ b/db/routines/vn/procedures/client_create.sql
@@ -34,20 +34,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,
@@ -65,7 +70,8 @@ BEGIN
credit = vDefaultCredit,
isTaxDataChecked = vIsTaxDataChecked,
hasCoreVnl = vHasCoreVnl,
- isEqualizated = FALSE
+ isEqualizated = FALSE,
+ hasDailyInvoice = vHasDailyInvoice
ON duplicate KEY UPDATE
payMethodFk = vPayMethodFk,
dueDay = vDueDay,
diff --git a/db/routines/vn/procedures/collection_setParking.sql b/db/routines/vn/procedures/collection_setParking.sql
index 73aa87bfbb..5f6ca75da8 100644
--- a/db/routines/vn/procedures/collection_setParking.sql
+++ b/db/routines/vn/procedures/collection_setParking.sql
@@ -1,15 +1,18 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_setParking`(IN `vCollectionFk` VARCHAR(8), IN `vParkingFk` INT)
-proc: BEGIN
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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 ;
diff --git a/db/routines/vn/procedures/copyComponentsFromSaleList.sql b/db/routines/vn/procedures/copyComponentsFromSaleList.sql
index 17cf487b14..8db8409f1d 100644
--- a/db/routines/vn/procedures/copyComponentsFromSaleList.sql
+++ b/db/routines/vn/procedures/copyComponentsFromSaleList.sql
@@ -16,9 +16,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
@@ -28,7 +28,8 @@ 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 ;
diff --git a/db/routines/vn/procedures/entry_isEditable.sql b/db/routines/vn/procedures/entry_isEditable.sql
index a05a1fd92d..c279fac650 100644
--- a/db/routines/vn/procedures/entry_isEditable.sql
+++ b/db/routines/vn/procedures/entry_isEditable.sql
@@ -18,7 +18,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 ;
diff --git a/db/routines/vn/procedures/entry_splitByShelving.sql b/db/routines/vn/procedures/entry_splitByShelving.sql
index 2898141eae..eb07c12b72 100644
--- a/db/routines/vn/procedures/entry_splitByShelving.sql
+++ b/db/routines/vn/procedures/entry_splitByShelving.sql
@@ -13,60 +13,45 @@ 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,
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)
+ AND bb.stickers >= 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,
@@ -117,13 +102,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;
+ END LOOP;
CLOSE cur;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/invoiceIn_booking.sql b/db/routines/vn/procedures/invoiceIn_booking.sql
index cd838861ad..c194a774db 100644
--- a/db/routines/vn/procedures/invoiceIn_booking.sql
+++ b/db/routines/vn/procedures/invoiceIn_booking.sql
@@ -13,20 +13,32 @@ BEGIN
* @param vBookEntry Id de asiento, si es NULL se genera uno nuevo
*/
DECLARE vFiscalYear INT;
- DECLARE vHasDistinctTransactions INT;
+ DECLARE vDistinctTransactions INT;
+ DECLARE vHasRepeatedTransactions BOOL;
- SELECT COUNT(DISTINCT transactionTypeSageFk) INTO vHasDistinctTransactions
+ 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 ii.id = vSelf
+ WHERE iit.invoiceInFk = vSelf
AND iis.taxAreaFk = 'CEE'
- AND transactionTypeSageFk;
+ AND iit.transactionTypeSageFk;
- IF vHasDistinctTransactions > 1 THEN
+ 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
+ LIMIT 1;
+
+ IF vHasRepeatedTransactions THEN
+ CALL util.throw ('This invoice contains repeated types of transactions');
+ END IF;
+
CREATE OR REPLACE TEMPORARY TABLE tInvoiceIn
ENGINE = MEMORY
SELECT ii.bookEntried,
diff --git a/db/routines/vn/procedures/itemMinimumQuantity_check.sql b/db/routines/vn/procedures/itemMinimumQuantity_check.sql
new file mode 100644
index 0000000000..fef7cdbdba
--- /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/itemShelving_inventory.sql b/db/routines/vn/procedures/itemShelving_inventory.sql
index 73e438fbb7..f4b8ae1659 100644
--- a/db/routines/vn/procedures/itemShelving_inventory.sql
+++ b/db/routines/vn/procedures/itemShelving_inventory.sql
@@ -59,5 +59,7 @@ BEGIN
WHERE p.pickingOrder BETWEEN vPickingOrderFrom AND vPickingOrderTo
AND p.sectorFk = vSectorFk
ORDER BY p.pickingOrder;
+
+ DROP TEMPORARY TABLE tmp.stockMisfit;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/item_GetVisible.sql b/db/routines/vn/procedures/item_GetVisible.sql
deleted file mode 100644
index ca5e43107a..0000000000
--- a/db/routines/vn/procedures/item_GetVisible.sql
+++ /dev/null
@@ -1,43 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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 ;
diff --git a/db/routines/vn/procedures/item_calcVisible.sql b/db/routines/vn/procedures/item_calcVisible.sql
new file mode 100644
index 0000000000..820e73a7e2
--- /dev/null
+++ b/db/routines/vn/procedures/item_calcVisible.sql
@@ -0,0 +1,56 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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
+ 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 IFNULL(vWarehouseFk, i.warehouseFk) = i.warehouseFk
+ 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
+ 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
+ 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)
+ ) t
+ GROUP BY itemFk
+ ON DUPLICATE KEY UPDATE
+ visible = IFNULL(stock, 0) + VALUES(visible);
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/item_getBalance.sql b/db/routines/vn/procedures/item_getBalance.sql
index a4942af6f1..0de59b478b 100644
--- a/db/routines/vn/procedures/item_getBalance.sql
+++ b/db/routines/vn/procedures/item_getBalance.sql
@@ -2,94 +2,84 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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
@@ -99,86 +89,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,
@@ -186,19 +198,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,
@@ -214,37 +227,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,
+ SELECT NULL originType,
+ NULL originId,
+ vDated shipped,
+ NULL alertLevel,
+ NULL stateName,
+ NULL reference,
+ NULL entityType,
+ NULL entityId,
'Inventario calculado',
@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,
@@ -255,7 +272,7 @@ BEGIN
claimFk,
`order`
FROM tItemDiary
- WHERE shipped >= vDate;
+ WHERE shipped >= vDated;
END IF;
DROP TEMPORARY TABLE tItemDiary;
diff --git a/db/routines/vn/procedures/item_getMinacum.sql b/db/routines/vn/procedures/item_getMinacum.sql
index 7573759f74..a3ebedb12c 100644
--- a/db/routines/vn/procedures/item_getMinacum.sql
+++ b/db/routines/vn/procedures/item_getMinacum.sql
@@ -76,5 +76,7 @@ BEGIN
i.quantity amount
FROM tmp.itemAtp i
HAVING amount != 0;
+
+ DROP TEMPORARY TABLE tmp.itemAtp;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/item_getSimilar.sql b/db/routines/vn/procedures/item_getSimilar.sql
index 557d77bdf4..72c543b40e 100644
--- a/db/routines/vn/procedures/item_getSimilar.sql
+++ b/db/routines/vn/procedures/item_getSimilar.sql
@@ -63,7 +63,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
diff --git a/db/routines/vn/procedures/item_setVisibleDiscard.sql b/db/routines/vn/procedures/item_setVisibleDiscard.sql
index 0a6c549710..a44d87333f 100644
--- a/db/routines/vn/procedures/item_setVisibleDiscard.sql
+++ b/db/routines/vn/procedures/item_setVisibleDiscard.sql
@@ -6,7 +6,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_setVisibleDisc
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
diff --git a/db/routines/vn/procedures/multipleInventory.sql b/db/routines/vn/procedures/multipleInventory.sql
index 941ac6c3d7..6cd584c6e5 100644
--- a/db/routines/vn/procedures/multipleInventory.sql
+++ b/db/routines/vn/procedures/multipleInventory.sql
@@ -10,6 +10,7 @@ proc: BEGIN
DECLARE vDateTo DATETIME;
DECLARE vDateToTomorrow DATETIME;
DECLARE vDefaultDayRange INT;
+ DECLARE vCalcFk INT;
IF vDate < util.VN_CURDATE() THEN
LEAVE proc;
@@ -82,50 +83,18 @@ proc: BEGIN
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
+ JOIN tItemVisibleCalc ivc ON ivc.item_id = it.id
+ SET it.visible = it.visible + ivc.visible;
-- Calculo del disponible
CREATE OR REPLACE TEMPORARY TABLE tmp.itemCalc
@@ -196,8 +165,8 @@ proc: BEGIN
DROP TEMPORARY TABLE
tmp.itemTravel,
tmp.itemCalc,
+ tmp.itemAtp,
tItemInventoryCalc,
- tItemVisibleCalc,
- tmp.itemAtp;
+ tItemVisibleCalc;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/productionSectorList.sql b/db/routines/vn/procedures/productionSectorList.sql
index 5447f10d03..e1445ca528 100644
--- a/db/routines/vn/procedures/productionSectorList.sql
+++ b/db/routines/vn/procedures/productionSectorList.sql
@@ -104,5 +104,6 @@ BEGIN
) sub;
DROP TEMPORARY TABLE tmp.whiteTicket;
DROP TEMPORARY TABLE tmp.sectorTypeTicket;
+ DROP TEMPORARY TABLE tmp.productionBuffer;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/saleGroup_setParking.sql b/db/routines/vn/procedures/saleGroup_setParking.sql
index 4872f74c6c..551ca63866 100644
--- a/db/routines/vn/procedures/saleGroup_setParking.sql
+++ b/db/routines/vn/procedures/saleGroup_setParking.sql
@@ -1,17 +1,25 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`saleGroup_setParking`(IN `vSaleGroupFk` VARCHAR(8), IN `vParkingFk` INT)
-proc: BEGIN
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ RESIGNAL;
+ END;
+
+ UPDATE saleGroup sg
SET sg.parkingFk = vParkingFk
WHERE sg.id = vSaleGroupFk
- AND sg.created >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE());
+ 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 ;
diff --git a/db/routines/vn/procedures/sale_PriceFix.sql b/db/routines/vn/procedures/sale_PriceFix.sql
index 8ffa770709..5f956cba80 100644
--- a/db/routines/vn/procedures/sale_PriceFix.sql
+++ b/db/routines/vn/procedures/sale_PriceFix.sql
@@ -8,7 +8,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 (
diff --git a/db/routines/vn/procedures/sale_setProblem.sql b/db/routines/vn/procedures/sale_setProblem.sql
index 20319cc3f2..b0870089f7 100644
--- a/db/routines/vn/procedures/sale_setProblem.sql
+++ b/db/routines/vn/procedures/sale_setProblem.sql
@@ -5,14 +5,32 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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 vDone BOOL;
+ DECLARE vSaleList CURSOR FOR SELECT saleFk, hasProblem FROM tmp.sale;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+
+ OPEN vSaleList;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vSaleList INTO vSaleFk, vHasProblem;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ UPDATE sale
+ SET problem = CONCAT(
+ IF(vHasProblem,
+ CONCAT(problem, ',', vProblemCode),
+ REPLACE(problem, vProblemCode , '')))
+ WHERE id = vSaleFk;
+ END LOOP;
+ CLOSE vSaleList;
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/sale_setProblemComponentLack.sql b/db/routines/vn/procedures/sale_setProblemComponentLack.sql
index 363663a007..aa5f5f1bef 100644
--- a/db/routines/vn/procedures/sale_setProblemComponentLack.sql
+++ b/db/routines/vn/procedures/sale_setProblemComponentLack.sql
@@ -10,9 +10,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) isProblemCalcNeeded
+ FROM sale
+ WHERE id = vSelf;
CALL sale_setProblem('hasComponentLack');
diff --git a/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
index b911327ddc..2ee49b656a 100644
--- a/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
+++ b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
@@ -10,11 +10,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) isProblemCalcNeeded
FROM (
- SELECT s.id saleFk
+ SELECT s.id saleFk, s.ticketFk
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 f14cd408f2..f58d00799e 100644
--- a/db/routines/vn/procedures/sale_setProblemRounding.sql
+++ b/db/routines/vn/procedures/sale_setProblemRounding.sql
@@ -11,9 +11,10 @@ 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;
@@ -21,7 +22,9 @@ BEGIN
CALL buyUltimate(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;
diff --git a/db/routines/vn/procedures/setParking.sql b/db/routines/vn/procedures/setParking.sql
index d6def07de2..1aa4f920a7 100644
--- a/db/routines/vn/procedures/setParking.sql
+++ b/db/routines/vn/procedures/setParking.sql
@@ -1,6 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`setParking`(IN `vParam` VARCHAR(8), IN `vParkingCode` VARCHAR(8))
-proc: BEGIN
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`setParking`(
+ vParam VARCHAR(8),
+ vParkingCode VARCHAR(8)
+)
+BEGIN
/**
* Aparca una colecci贸n, un ticket, un saleGroup o un shelving en un parking
*
@@ -8,56 +11,41 @@ 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,' ','');
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ 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;
+ START TRANSACTION;
- -- 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());
+ SET vLastWeek = util.VN_CURDATE() - INTERVAL 1 WEEK;
- 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;
+
+ COMMIT;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_DelayTruck.sql b/db/routines/vn/procedures/ticket_DelayTruck.sql
index 20601ee499..81896dd8e4 100644
--- a/db/routines/vn/procedures/ticket_DelayTruck.sql
+++ b/db/routines/vn/procedures/ticket_DelayTruck.sql
@@ -3,14 +3,14 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_DelayTruck`(
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'
@@ -31,5 +31,6 @@ BEGIN
END LOOP;
CLOSE cur1;
+ DROP TEMPORARY TABLE tTicket, tmp.productionBuffer;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_add.sql b/db/routines/vn/procedures/ticket_add.sql
index 5c3c280813..d9b68997c7 100644
--- a/db/routines/vn/procedures/ticket_add.sql
+++ b/db/routines/vn/procedures/ticket_add.sql
@@ -65,6 +65,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 (
diff --git a/db/routines/vn/procedures/ticket_checkNoComponents.sql b/db/routines/vn/procedures/ticket_checkNoComponents.sql
index 28fe333f0f..b034271921 100644
--- a/db/routines/vn/procedures/ticket_checkNoComponents.sql
+++ b/db/routines/vn/procedures/ticket_checkNoComponents.sql
@@ -20,7 +20,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;
diff --git a/db/routines/vn/procedures/ticket_cloneWeekly.sql b/db/routines/vn/procedures/ticket_cloneWeekly.sql
index 764e722544..fd45dc9fa6 100644
--- a/db/routines/vn/procedures/ticket_cloneWeekly.sql
+++ b/db/routines/vn/procedures/ticket_cloneWeekly.sql
@@ -213,6 +213,6 @@ BEGIN
END;
END LOOP;
CLOSE rsTicket;
- DROP TEMPORARY TABLE IF EXISTS tmp.time;
+ DROP TEMPORARY TABLE IF EXISTS tmp.time, tmp.zoneGetLanded;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_getFromFloramondo.sql b/db/routines/vn/procedures/ticket_getFromFloramondo.sql
index 4d83d6ddab..5f2bedbb11 100644
--- a/db/routines/vn/procedures/ticket_getFromFloramondo.sql
+++ b/db/routines/vn/procedures/ticket_getFromFloramondo.sql
@@ -66,7 +66,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;
@@ -88,7 +88,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
diff --git a/db/routines/vn/procedures/ticket_setNextState.sql b/db/routines/vn/procedures/ticket_setNextState.sql
index d13cd53f0e..b09309a47e 100644
--- a/db/routines/vn/procedures/ticket_setNextState.sql
+++ b/db/routines/vn/procedures/ticket_setNextState.sql
@@ -1,14 +1,21 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setNextState`(vSelf INT)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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;
@@ -17,6 +24,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$$
diff --git a/db/routines/vn/procedures/ticket_setParking.sql b/db/routines/vn/procedures/ticket_setParking.sql
index 54c64daea7..7935e0d607 100644
--- a/db/routines/vn/procedures/ticket_setParking.sql
+++ b/db/routines/vn/procedures/ticket_setParking.sql
@@ -1,11 +1,14 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setParking`(IN `vTicketFk` VARCHAR(8), IN `vParkingFk` INT)
-proc: BEGIN
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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;
@@ -14,16 +17,21 @@ 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;
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ RESIGNAL;
+ END;
+
INSERT INTO vn.ticketParking(ticketFk, parkingFk)
SELECT IFNULL(tc2.ticketFk, t.id), vParkingFk
FROM ticket t
LEFT JOIN ticketCollection tc1 ON tc1.ticketFk = t.id
LEFT JOIN ticketCollection tc2 ON tc2.collectionFk = tc1.collectionFk
- WHERE t.id = vTicketFk
+ WHERE t.id = vSelf
ON DUPLICATE KEY UPDATE parkingFk = vParkingFk;
OPEN vCursor;
diff --git a/db/routines/vn/procedures/ticket_setProblem.sql b/db/routines/vn/procedures/ticket_setProblem.sql
index bab8f1f52f..66d244d5a3 100644
--- a/db/routines/vn/procedures/ticket_setProblem.sql
+++ b/db/routines/vn/procedures/ticket_setProblem.sql
@@ -4,16 +4,34 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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 vDone BOOL;
+ DECLARE vTicketList CURSOR FOR SELECT ticketFk, hasProblem FROM tmp.ticket;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+
+ OPEN vTicketList;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vTicketList INTO vTicketFk, vHasProblem;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ UPDATE ticket
+ SET problem = CONCAT(
+ IF(vHasProblem,
+ CONCAT(problem, ',', vProblemCode),
+ REPLACE(problem, vProblemCode , '')))
+ WHERE id = vTicketFk;
+ END LOOP;
+ CLOSE vTicketList;
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemFreeze.sql b/db/routines/vn/procedures/ticket_setProblemFreeze.sql
index 560bce6123..1de939ba7f 100644
--- a/db/routines/vn/procedures/ticket_setProblemFreeze.sql
+++ b/db/routines/vn/procedures/ticket_setProblemFreeze.sql
@@ -9,9 +9,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);
@@ -21,7 +23,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;
diff --git a/db/routines/vn/procedures/ticket_setProblemRequest.sql b/db/routines/vn/procedures/ticket_setProblemRequest.sql
index 19bba5b76b..687facfc73 100644
--- a/db/routines/vn/procedures/ticket_setProblemRequest.sql
+++ b/db/routines/vn/procedures/ticket_setProblemRequest.sql
@@ -9,9 +9,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);
diff --git a/db/routines/vn/procedures/ticket_setProblemRisk.sql b/db/routines/vn/procedures/ticket_setProblemRisk.sql
index 5f73ee838e..efa5b10e2e 100644
--- a/db/routines/vn/procedures/ticket_setProblemRisk.sql
+++ b/db/routines/vn/procedures/ticket_setProblemRisk.sql
@@ -10,21 +10,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');
diff --git a/db/routines/vn/procedures/ticket_setProblemRounding.sql b/db/routines/vn/procedures/ticket_setProblemRounding.sql
index 81294325ca..fb580eacf5 100644
--- a/db/routines/vn/procedures/ticket_setProblemRounding.sql
+++ b/db/routines/vn/procedures/ticket_setProblemRounding.sql
@@ -18,8 +18,11 @@ BEGIN
CALL buyUltimate(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
diff --git a/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql b/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
index 00918426b6..9877b5acca 100644
--- a/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
+++ b/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
@@ -9,9 +9,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()
diff --git a/db/routines/vn/procedures/ticket_setProblemTooLittle.sql b/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
index 98a0787afe..48cc478098 100644
--- a/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
+++ b/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
@@ -8,13 +8,17 @@ BEGIN
*
* @param vSelf Id del ticket
*/
+
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
- (INDEX(ticketFk))
+ (INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT vSelf ticketFk, ticket_isTooLittle(vSelf) hasProblem;
+ SELECT vSelf ticketFk,
+ ticket_isTooLittle(vSelf) hasProblem,
+ ticket_isProblemCalcNeeded(vSelf) isProblemCalcNeeded;
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 cd1f42783b..ac3814c07f 100644
--- a/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql
+++ b/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql
@@ -10,7 +10,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
@@ -19,7 +19,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');
diff --git a/db/routines/vn/procedures/ticket_setRisk.sql b/db/routines/vn/procedures/ticket_setRisk.sql
index f5e6cb5a03..bd5d1e9f92 100644
--- a/db/routines/vn/procedures/ticket_setRisk.sql
+++ b/db/routines/vn/procedures/ticket_setRisk.sql
@@ -8,6 +8,7 @@ BEGIN
* @param vClientFk Id cliente
*/
DECLARE vHasDebt BOOL;
+ DECLARE vStarted DATETIME;
SELECT COUNT(*) INTO vHasDebt
FROM `client`
@@ -16,22 +17,24 @@ BEGIN
IF vHasDebt THEN
+ SELECT util.VN_CURDATE() - INTERVAL riskScope MONTH INTO vStarted
+ FROM clientConfig;
+
CREATE OR REPLACE TEMPORARY TABLE tTicketRisk
(KEY (ticketFk))
ENGINE = MEMORY
WITH ticket AS(
- SELECT id ticketFk, companyFk, DATE(shipped) dated
- FROM vn.ticket t
+ 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 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
+ AND IFNULL(totalWithVat, 0) <> 0
+ AND shipped > vStarted
), balance AS(
SELECT SUM(amount)amount, companyFk
FROM (
@@ -49,15 +52,11 @@ BEGIN
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)
+ SELECT companyFk, dated, SUM(totalWithVat) amount
+ FROM ticket
+ GROUP BY companyFk, dated
), receipt AS(
- SELECT companyFk,DATE(payed) dated, SUM(amountPaid) amount
+ SELECT companyFk, DATE(payed) dated, SUM(amountPaid) amount
FROM vn.receipt
WHERE clientFk = vClientFk
AND payed > util.VN_CURDATE()
@@ -73,13 +72,21 @@ BEGIN
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
+ 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 = 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;
DROP TEMPORARY TABLE tTicketRisk;
END IF;
diff --git a/db/routines/vn/procedures/ticket_splitItemPackingType.sql b/db/routines/vn/procedures/ticket_splitItemPackingType.sql
index e2c55e28ac..c2ec50fd95 100644
--- a/db/routines/vn/procedures/ticket_splitItemPackingType.sql
+++ b/db/routines/vn/procedures/ticket_splitItemPackingType.sql
@@ -1,15 +1,15 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_splitItemPackingType`(
- vTicketFk INT,
- vOriginalItemPackingTypeFk VARCHAR(1)
+ vSelf INT,
+ vItemPackingTypeFk 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.
*
- * @param vTicketFk Identificador de vn.ticket
- * @param vOriginalItemPackingTypeFk Tipo para el que se reserva el n煤mero de ticket original
+ * @param vSelf Id ticket
+ * @param vItemPackingTypeFk Tipo para el que se reserva el n煤mero de ticket original
* @return table tmp.ticketIPT(ticketFk, itemPackingTypeFk)
*/
DECLARE vItemPackingTypeFk VARCHAR(1) DEFAULT 'H';
@@ -19,11 +19,11 @@ BEGIN
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;
+ ORDER BY (itemPackingTypeFk = vItemPackingTypeFk) DESC;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
@@ -36,35 +36,44 @@ BEGIN
CALL util.debugAdd('ticket_splitItemPackingType', JSON_OBJECT(
'errorNumber', vErrorNumber,
'errorMsg', vErrorMsg,
- 'ticketFk', vTicketFk
+ '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;
@@ -72,55 +81,63 @@ 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 ;
diff --git a/db/routines/vn/procedures/workerTimeControl_direction.sql b/db/routines/vn/procedures/workerTimeControl_direction.sql
index f7a68e1e4c..8e807084ce 100644
--- a/db/routines/vn/procedures/workerTimeControl_direction.sql
+++ b/db/routines/vn/procedures/workerTimeControl_direction.sql
@@ -9,6 +9,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();
@@ -57,5 +59,18 @@ 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 ;
diff --git a/db/routines/vn/procedures/zone_getCollisions.sql b/db/routines/vn/procedures/zone_getCollisions.sql
index 023b9aac27..e28b2b3416 100644
--- a/db/routines/vn/procedures/zone_getCollisions.sql
+++ b/db/routines/vn/procedures/zone_getCollisions.sql
@@ -103,6 +103,7 @@ BEGIN
DROP TEMPORARY TABLE
geoCollision,
tmp.zone,
- tmp.zoneNodes;
+ tmp.zoneNodes,
+ tmp.zoneOption;
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/delivery_beforeInsert.sql b/db/routines/vn/triggers/delivery_beforeInsert.sql
index 89431c30fa..eb4a6f21ae 100644
--- a/db/routines/vn/triggers/delivery_beforeInsert.sql
+++ b/db/routines/vn/triggers/delivery_beforeInsert.sql
@@ -3,18 +3,11 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` 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 ;
diff --git a/db/routines/vn/triggers/delivery_beforeUpdate.sql b/db/routines/vn/triggers/delivery_beforeUpdate.sql
index 7e6aa7d4ca..6206d4722b 100644
--- a/db/routines/vn/triggers/delivery_beforeUpdate.sql
+++ b/db/routines/vn/triggers/delivery_beforeUpdate.sql
@@ -3,18 +3,11 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` 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 ;
diff --git a/db/routines/vn/triggers/itemMinimumQuantity_afterDelete.sql b/db/routines/vn/triggers/itemMinimumQuantity_afterDelete.sql
new file mode 100644
index 0000000000..1da5a59423
--- /dev/null
+++ b/db/routines/vn/triggers/itemMinimumQuantity_afterDelete.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` 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 ;
diff --git a/db/routines/vn/triggers/itemMinimumQuantity_beforeInsert.sql b/db/routines/vn/triggers/itemMinimumQuantity_beforeInsert.sql
new file mode 100644
index 0000000000..3ee6c0b1ad
--- /dev/null
+++ b/db/routines/vn/triggers/itemMinimumQuantity_beforeInsert.sql
@@ -0,0 +1,9 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`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
new file mode 100644
index 0000000000..6f082551c6
--- /dev/null
+++ b/db/routines/vn/triggers/itemMinimumQuantity_beforeUpdate.sql
@@ -0,0 +1,9 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`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/itemShelving _afterDelete.sql b/db/routines/vn/triggers/itemShelving _afterDelete.sql
index 7c0d54358c..9a1759efff 100644
--- a/db/routines/vn/triggers/itemShelving _afterDelete.sql
+++ b/db/routines/vn/triggers/itemShelving _afterDelete.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving _afterDelete`
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`itemShelving_afterDelete`
AFTER DELETE ON `itemShelving`
FOR EACH ROW
BEGIN
diff --git a/db/routines/vn/triggers/productionConfig_afterDelete.sql b/db/routines/vn/triggers/productionConfig_afterDelete.sql
new file mode 100644
index 0000000000..384bf681e5
--- /dev/null
+++ b/db/routines/vn/triggers/productionConfig_afterDelete.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` 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 ;
diff --git a/db/routines/vn/triggers/productionConfig_beforeInsert.sql b/db/routines/vn/triggers/productionConfig_beforeInsert.sql
new file mode 100644
index 0000000000..99b217be44
--- /dev/null
+++ b/db/routines/vn/triggers/productionConfig_beforeInsert.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`productionConfig_beforeInsert`
+ BEFORE INSERT ON `productionConfig`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/productionConfig_beforeUpdate.sql b/db/routines/vn/triggers/productionConfig_beforeUpdate.sql
new file mode 100644
index 0000000000..f1ceaa4717
--- /dev/null
+++ b/db/routines/vn/triggers/productionConfig_beforeUpdate.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`productionConfig_beforeUpdate`
+ BEFORE UPDATE ON `productionConfig`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = account.myUser_getId();
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/views/saleCost.sql b/db/routines/vn/views/saleCost.sql
index 27265aa936..304b9e3a37 100644
--- a/db/routines/vn/views/saleCost.sql
+++ b/db/routines/vn/views/saleCost.sql
@@ -19,4 +19,4 @@ FROM (
)
JOIN `vn`.`componentType` `ct` ON(`ct`.`id` = `c`.`typeFk`)
)
-WHERE `ct`.`type` = 'coste'
+WHERE `ct`.`code` = 'cost'
diff --git a/db/routines/vn/views/sale_freightComponent.sql b/db/routines/vn/views/sale_freightComponent.sql
index 7a329e0ee8..269a8cca14 100644
--- a/db/routines/vn/views/sale_freightComponent.sql
+++ b/db/routines/vn/views/sale_freightComponent.sql
@@ -16,6 +16,6 @@ FROM (
)
JOIN `vn`.`componentType` `ct` ON(
`ct`.`id` = `c`.`typeFk`
- AND `ct`.`type` = 'agencia'
+ AND `ct`.`code` = 'freight'
)
)
diff --git a/db/routines/vn2008/views/Tipos.sql b/db/routines/vn2008/views/Tipos.sql
index 4cde954f1c..5b96c1766c 100644
--- a/db/routines/vn2008/views/Tipos.sql
+++ b/db/routines/vn2008/views/Tipos.sql
@@ -9,14 +9,9 @@ AS SELECT `it`.`id` AS `tipo_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`
+ `it`.`promo` AS `promo`
FROM `vn`.`itemType` `it`
diff --git a/db/routines/vn2008/views/buySource.sql b/db/routines/vn2008/views/buySource.sql
index 33226a1dc7..8504838330 100644
--- a/db/routines/vn2008/views/buySource.sql
+++ b/db/routines/vn2008/views/buySource.sql
@@ -54,8 +54,7 @@ AS SELECT `b`.`entryFk` AS `Id_Entrada`,
`i`.`packingOut` AS `packingOut`,
`b`.`itemOriginalFk` AS `itemOriginalFk`,
`io`.`longName` AS `itemOriginalName`,
- `it`.`gramsMax` AS `gramsMax`,
- `i`.`minQuantity` AS `minQuantity`
+ `it`.`gramsMax` AS `gramsMax`
FROM (
(
(
diff --git a/db/routines/vn2008/views/buy_edi.sql b/db/routines/vn2008/views/buy_edi.sql
index 0d194c89e1..d00196e95b 100644
--- a/db/routines/vn2008/views/buy_edi.sql
+++ b/db/routines/vn2008/views/buy_edi.sql
@@ -2,7 +2,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `vn2008`.`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`,
diff --git a/db/versions/10960-silverRoebelini/00-firstScript.sql b/db/versions/10960-silverRoebelini/00-firstScript.sql
new file mode 100644
index 0000000000..c53a09549a
--- /dev/null
+++ b/db/versions/10960-silverRoebelini/00-firstScript.sql
@@ -0,0 +1,23 @@
+-- Place your SQL code here
+CREATE TABLE IF NOT EXISTS `vn`.`agencyIncoming` (
+ `agencyModeFk` int(11) NOT NULL,
+ PRIMARY KEY (`agencyModeFk`)
+)
+ENGINE=InnoDB
+DEFAULT CHARSET=utf8mb3
+COLLATE=utf8mb3_unicode_ci COMMENT='Agencias de entrada de mercancias';
+
+INSERT IGNORE INTO vn.agencyIncoming (agencyModeFk) VALUES
+(1343), (1002), (1282), (841), (1303), (714), (556), (1786), (1785), (1784),
+(1780), (1783), (1758), (1782), (1772), (1789), (1776), (1791), (1778), (1792),
+(1779), (1362), (681), (1765), (15), (1594), (1706), (1707), (907), (1260),
+(1715), (1371), (1372), (53), (689), (1375), (738), (742), (1307), (1700), (608),
+(1311), (1315), (1339), (1433), (1338), (1332), (1844), (842), (1382), (1466),
+(1719), (1723), (1725), (1720), (1732), (1736), (1728), (1724), (1726), (1727),
+(1767), (1734), (1730), (1845), (1729), (1746), (1699), (2), (671), (1379), (614),
+(1718), (1697), (62), (1529), (1392), (1378), (1438), (1796), (1688), (686),
+(1326), (1691), (1), (1560), (1695), (1696), (1558), (1648), (1649), (1598),
+(1680), (1694), (1600), (1601), (1602), (1712), (1603), (1604), (1641), (1692),
+(1693), (1650), (1683), (1682), (1681), (1713), (1826), (1768), (1769), (1770),
+(1593), (1443), (1244), (1679), (1006), (1361), (1102), (1655), (1744), (1225),
+(1007);
diff --git a/db/versions/10986-pinkChrysanthemum/00-addSummaryId.sql b/db/versions/10986-pinkChrysanthemum/00-addSummaryId.sql
new file mode 100644
index 0000000000..2887851919
--- /dev/null
+++ b/db/versions/10986-pinkChrysanthemum/00-addSummaryId.sql
@@ -0,0 +1,22 @@
+ALTER TABLE vn.claimLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.clientLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.deviceProductionLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.entryLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.invoiceInLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.itemLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.packingSiteDeviceLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.parkingLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.rateLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.routeLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.shelvingLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.supplierLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.ticketLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.travelLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.userLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.workerLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE vn.zoneLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+
+ALTER TABLE account.userLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE account.signInLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE account.roleLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
+ALTER TABLE account.accountLog ADD COLUMN IF NOT EXISTS summaryId varchar(30);
\ No newline at end of file
diff --git a/db/versions/11081-wheatRaphis/00-firstScript.sql b/db/versions/11081-wheatRaphis/00-firstScript.sql
index 2e4424c5a3..70bbaabdb0 100644
--- a/db/versions/11081-wheatRaphis/00-firstScript.sql
+++ b/db/versions/11081-wheatRaphis/00-firstScript.sql
@@ -1,8 +1,8 @@
--- Place your SQL code here
-
-USE vn;
-
-ALTER TABLE vn.roadmap ADD kmStart mediumint(9) DEFAULT NULL NULL;
-ALTER TABLE vn.roadmap ADD kmEnd mediumint(9) DEFAULT NULL NULL;
-ALTER TABLE vn.roadmap ADD started DATETIME NULL;
-ALTER TABLE vn.roadmap ADD finished DATETIME NULL;
+-- Place your SQL code here
+
+USE vn;
+
+ALTER TABLE vn.roadmap ADD kmStart mediumint(9) DEFAULT NULL NULL;
+ALTER TABLE vn.roadmap ADD kmEnd mediumint(9) DEFAULT NULL NULL;
+ALTER TABLE vn.roadmap ADD started DATETIME NULL;
+ALTER TABLE vn.roadmap ADD finished DATETIME NULL;
diff --git a/db/versions/11118-limeCymbidium/00-firstScript.sql b/db/versions/11118-limeCymbidium/00-firstScript.sql
index bc46e4a90f..b15dfbd41b 100644
--- a/db/versions/11118-limeCymbidium/00-firstScript.sql
+++ b/db/versions/11118-limeCymbidium/00-firstScript.sql
@@ -8,8 +8,12 @@ INSERT IGNORE INTO salix.ACL (`model`,`property`,`accessType`,`permission`,`prin
INSERT IGNORE INTO salix.ACL (`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`)
VALUES ('Entry','buyLabel','READ','ALLOW','ROLE','supplier');
+INSERT IGNORE INTO `account`.`role` (`name`,`description`,`hasLogin`,`created`,`modified`)
+ VALUES ('supplier','Proveedores',1,'2017-10-10 14:58:58.000','2017-10-10 14:59:20.000');
+SET @supplierFk =LAST_INSERT_ID();
+INSERT IGNORE INTO account.roleInherit (`role`,`inheritsFrom`)
+ VALUES (@supplierFk,2);
+
UPDATE salix.ACL
SET principalId='$authenticated'
- WHERE id=(SELECT id FROM salix.ACL WHERE model='StarredModule' and property='*' and `accessType`='*' );
-
-
+ WHERE id=(SELECT id FROM salix.ACL WHERE model='StarredModule' and property='*' and `accessType`='*');
diff --git a/db/versions/11119-tealGerbera/00-firstScript.sql b/db/versions/11119-tealGerbera/00-firstScript.sql
new file mode 100644
index 0000000000..40b3b04248
--- /dev/null
+++ b/db/versions/11119-tealGerbera/00-firstScript.sql
@@ -0,0 +1,9 @@
+ALTER TABLE vn.componentType
+ CHANGE code code varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL AFTER id;
+ALTER TABLE vn.componentType
+ CHANGE `type` name varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL;
+UPDATE IGNORE vn.componentType
+ SET code = LOWER(code);
+UPDATE IGNORE vn.componentType
+ SET code = 'other'
+ WHERE id = 12;
\ No newline at end of file
diff --git a/db/versions/11120-brownTulip/00-firstScript.sql b/db/versions/11120-brownTulip/00-firstScript.sql
new file mode 100644
index 0000000000..c4ded80bbe
--- /dev/null
+++ b/db/versions/11120-brownTulip/00-firstScript.sql
@@ -0,0 +1,6 @@
+ALTER TABLE vn.itemType
+ CHANGE maneuver maneuver__ double DEFAULT 0.21 NOT NULL COMMENT '@deprecated 2024-07-01 refs #7418',
+ CHANGE target target__ double DEFAULT 0.15 NOT NULL COMMENT '@deprecated 2024-07-01 refs #7418',
+ CHANGE topMargin topMargin__ double DEFAULT 0.3 NOT NULL COMMENT '@deprecated 2024-07-01 refs #7418',
+ CHANGE profit profit__ double DEFAULT 0.02 NOT NULL COMMENT '@deprecated 2024-07-01 refs #7418',
+ CHANGE density density__ double DEFAULT 167 NOT NULL 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';
\ No newline at end of file
diff --git a/db/versions/11121-silverAralia/00-firstScript.sql b/db/versions/11121-silverAralia/00-firstScript.sql
new file mode 100644
index 0000000000..20b0e8195e
--- /dev/null
+++ b/db/versions/11121-silverAralia/00-firstScript.sql
@@ -0,0 +1,4 @@
+ALTER TABLE account.mailAliasAccount
+ ADD editorFk INT(10) UNSIGNED DEFAULT NULL,
+ ADD CONSTRAINT mailAliasAccount_editorFk FOREIGN KEY (editorFk)
+ REFERENCES account.`user`(id);
\ No newline at end of file
diff --git a/db/versions/11126-blueCamellia/00-firstScript.sql b/db/versions/11126-blueCamellia/00-firstScript.sql
new file mode 100644
index 0000000000..40c5e2b372
--- /dev/null
+++ b/db/versions/11126-blueCamellia/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `vn`.`client`
+ADD COLUMN `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';
diff --git a/db/versions/11128-turquoiseCymbidium/00-firstScript.sql b/db/versions/11128-turquoiseCymbidium/00-firstScript.sql
new file mode 100644
index 0000000000..4f6cafcf85
--- /dev/null
+++ b/db/versions/11128-turquoiseCymbidium/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.calendar ADD created timestamp DEFAULT current_timestamp() NOT NULL AFTER dated;
diff --git a/db/versions/11129-limeHydrangea/00-firstScript.sql b/db/versions/11129-limeHydrangea/00-firstScript.sql
new file mode 100644
index 0000000000..eb2320ee15
--- /dev/null
+++ b/db/versions/11129-limeHydrangea/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.greuge CHANGE Id id int(10) unsigned auto_increment NOT NULL;
diff --git a/db/versions/11130-crimsonIvy/00-firstScript.sql b/db/versions/11130-crimsonIvy/00-firstScript.sql
new file mode 100644
index 0000000000..c93f2f6b73
--- /dev/null
+++ b/db/versions/11130-crimsonIvy/00-firstScript.sql
@@ -0,0 +1,23 @@
+ALTER TABLE vn.productionConfig
+ ADD editorFk int(10) unsigned DEFAULT NULL NULL;
+ALTER TABLE vn.productionConfig
+ ADD CONSTRAINT productionConfig_user_FK FOREIGN KEY (editorFk) REFERENCES account.`user`(id);
+
+CREATE OR REPLACE TABLE `vn`.`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,
+ 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 AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
diff --git a/db/versions/11131-brownPhormium/00-firstScript.sql b/db/versions/11131-brownPhormium/00-firstScript.sql
new file mode 100644
index 0000000000..341c9f1a33
--- /dev/null
+++ b/db/versions/11131-brownPhormium/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.itemShelving ADD isSplit tinyint(1) NULL COMMENT 'Este valor cambia al splitar un carro que se ha quedado en holanda';
\ No newline at end of file
diff --git a/db/versions/11132-aquaDracena/00-firstScript.vn.sql b/db/versions/11132-aquaDracena/00-firstScript.vn.sql
new file mode 100644
index 0000000000..64f8442b4f
--- /dev/null
+++ b/db/versions/11132-aquaDracena/00-firstScript.vn.sql
@@ -0,0 +1,2 @@
+INSERT IGNORE INTO vn.observationType (`description`,code)
+ VALUES ('Sustituci贸n','substitution');
diff --git a/db/versions/11135-whiteErica/00-firstScript.sql b/db/versions/11135-whiteErica/00-firstScript.sql
new file mode 100644
index 0000000000..902608a3e4
--- /dev/null
+++ b/db/versions/11135-whiteErica/00-firstScript.sql
@@ -0,0 +1 @@
+CREATE INDEX travel_landed_IDX USING BTREE ON vn.travel (landed DESC,warehouseInFk,warehouseOutFk);
diff --git a/db/versions/11136-maroonMedeola/00-firstScript.sql b/db/versions/11136-maroonMedeola/00-firstScript.sql
new file mode 100644
index 0000000000..b0b92c7e97
--- /dev/null
+++ b/db/versions/11136-maroonMedeola/00-firstScript.sql
@@ -0,0 +1,6 @@
+RENAME TABLE vn.addressShortage TO vn.addressWaste;
+ALTER TABLE vn.addressWaste ADD `type` ENUM('internal', 'external') NOT NULL;
+INSERT IGNORE INTO vn.addressWaste (addressFk,`type`) VALUES
+ (2230,'external'),
+ (5986,'external'),
+ (7475,'external');
diff --git a/db/versions/11137-salmonRoebelini/00-firstScript.sql b/db/versions/11137-salmonRoebelini/00-firstScript.sql
new file mode 100644
index 0000000000..69d20ac6df
--- /dev/null
+++ b/db/versions/11137-salmonRoebelini/00-firstScript.sql
@@ -0,0 +1,4 @@
+ALTER TABLE vn.expeditionState
+ MODIFY COLUMN userFk INT(10) UNSIGNED,
+ ADD CONSTRAINT expeditionState_userFk FOREIGN KEY (userFk)
+ REFERENCES account.`user`(id);
\ No newline at end of file
diff --git a/db/versions/11138-aquaGalax/00-firstScript.sql b/db/versions/11138-aquaGalax/00-firstScript.sql
new file mode 100644
index 0000000000..d492e6470d
--- /dev/null
+++ b/db/versions/11138-aquaGalax/00-firstScript.sql
@@ -0,0 +1,8 @@
+ALTER TABLE `vn`.`claimDestination`
+ADD COLUMN `code` varchar(45) DEFAULT NULL;
+
+UPDATE IGNORE vn.claimDestination SET code='Good' WHERE description= 'Bueno';
+UPDATE IGNORE vn.claimDestination SET code='Garbage/Loss' WHERE description = 'Basura/Perd.';
+UPDATE IGNORE vn.claimDestination SET code='Manufacturing' WHERE description = 'Confeccion';
+UPDATE IGNORE vn.claimDestination SET code='Claim' WHERE description = 'Reclam.PRAG';
+UPDATE IGNORE vn.claimDestination SET code='Corrected' WHERE description = 'Corregido';
\ No newline at end of file
diff --git a/db/versions/11140-azurePhormium/00-firstScript.sql b/db/versions/11140-azurePhormium/00-firstScript.sql
new file mode 100644
index 0000000000..7c89110bbc
--- /dev/null
+++ b/db/versions/11140-azurePhormium/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.vehicle DROP FOREIGN KEY provinceFk;
+ALTER TABLE vn.vehicle
+ ADD CONSTRAINT vehicle_warehouse_FK FOREIGN KEY (warehouseFk) REFERENCES vn.warehouse(id) ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/db/versions/11149-silverSalal/00-firstScript.sql b/db/versions/11149-silverSalal/00-firstScript.sql
new file mode 100644
index 0000000000..e642dd2e48
--- /dev/null
+++ b/db/versions/11149-silverSalal/00-firstScript.sql
@@ -0,0 +1,30 @@
+ALTER TABLE vn.item CHANGE minQuantity minQuantity__ int(10) unsigned DEFAULT
+ NULL NULL COMMENT '@deprecated 2024-07-11 refs #7704 Cantidad m铆nima para una l铆nea de venta';
+
+CREATE TABLE `vn`.`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`)
+) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+GRANT SELECT, UPDATE, DELETE, INSERT ON TABLE vn.itemMinimumQuantity TO buyer;
+GRANT EXECUTE ON PROCEDURE vn.ticketCalculatePurge TO guest;
+
+ALTER TABLE vn.itemLog MODIFY COLUMN changedModel enum('Item','ItemBarcode','ItemBotanical','ItemNiche','ItemTag','ItemTaxCountry','ItemMinimumQuantity')
+ CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT 'Item' NOT NULL;
diff --git a/db/versions/11150-bronzeEucalyptus/00-firstScript.sql b/db/versions/11150-bronzeEucalyptus/00-firstScript.sql
new file mode 100644
index 0000000000..c9a6196185
--- /dev/null
+++ b/db/versions/11150-bronzeEucalyptus/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.itemMinimumQuantity
+ ADD CONSTRAINT itemMinimumQuantity_check CHECK (quantity > 0);
diff --git a/db/versions/11154-greenBamboo/00-firstScript.sql b/db/versions/11154-greenBamboo/00-firstScript.sql
new file mode 100644
index 0000000000..72a9389ec2
--- /dev/null
+++ b/db/versions/11154-greenBamboo/00-firstScript.sql
@@ -0,0 +1,2 @@
+
+ALTER TABLE vn.ticketLastState MODIFY COLUMN name varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL;
\ No newline at end of file
diff --git a/db/versions/11154-greenBamboo/00-firstScript.vn.sql b/db/versions/11154-greenBamboo/00-firstScript.vn.sql
new file mode 100644
index 0000000000..374c9a0313
--- /dev/null
+++ b/db/versions/11154-greenBamboo/00-firstScript.vn.sql
@@ -0,0 +1,2 @@
+
+INSERT INTO vn.state ( name, `order`, alertLevel, code, sectorProdPriority, nextStateFk, isPreviousPreparable, isPicked, isPreparable, semaphore, isPrintable, isOK, graphCategory, isNotValidated, classColor) VALUES('Entregado en parte', 13, 3, 'PARTIAL_DELIVERED', NULL, 16, 0, 1, 0, 0, 0, 0, 0, 0, NULL);
\ No newline at end of file
diff --git a/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js b/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js
index 5c8eba5713..ad0975889b 100644
--- a/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js
+++ b/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js
@@ -57,7 +57,7 @@ describe('Ticket List sale path', () => {
let searchValue = 'Melee weapon heavy shield 100cm';
await page.autocompleteSearch(selectors.ticketSales.secondSaleIdAutocomplete, searchValue);
await page.waitToClick(selectors.ticketSales.secondSaleQuantityCell);
- await page.type(selectors.ticketSales.secondSaleQuantity, '1');
+ await page.type(selectors.ticketSales.secondSaleQuantity, '8');
await page.keyboard.press('Enter');
const message = await page.waitForSnackbar();
diff --git a/loopback/common/methods/application/spec/execute.spec.js b/loopback/common/methods/application/spec/execute.spec.js
index 1a0a8ace9b..ca4efd9cc6 100644
--- a/loopback/common/methods/application/spec/execute.spec.js
+++ b/loopback/common/methods/application/spec/execute.spec.js
@@ -2,18 +2,9 @@ const models = require('vn-loopback/server/server').models;
describe('Application execute()/executeProc()/executeFunc()', () => {
const userWithoutPrivileges = 1;
- const userWithPrivileges = 9;
const userWithInheritedPrivileges = 120;
let tx;
-
- function getCtx(userId) {
- return {
- req: {
- accessToken: {userId},
- headers: {origin: 'http://localhost'}
- }
- };
- }
+ const ctx = beforeAll.getCtx();
beforeEach(async() => {
tx = await models.Application.beginTransaction({});
@@ -42,7 +33,7 @@ describe('Application execute()/executeProc()/executeFunc()', () => {
});
it('should throw error when execute procedure and not have privileges', async() => {
- const ctx = getCtx(userWithoutPrivileges);
+ const ctx = {req: {accessToken: {userId: userWithoutPrivileges}}};
let error;
try {
@@ -66,7 +57,6 @@ describe('Application execute()/executeProc()/executeFunc()', () => {
});
it('should execute procedure and get data', async() => {
- const ctx = getCtx(userWithPrivileges);
try {
const options = {transaction: tx};
@@ -90,7 +80,6 @@ describe('Application execute()/executeProc()/executeFunc()', () => {
describe('Application executeProc()', () => {
it('should execute procedure and get data (executeProc)', async() => {
- const ctx = getCtx(userWithPrivileges);
try {
const options = {transaction: tx};
@@ -115,7 +104,6 @@ describe('Application execute()/executeProc()/executeFunc()', () => {
describe('Application executeFunc()', () => {
it('should execute function and get data', async() => {
- const ctx = getCtx(userWithPrivileges);
try {
const options = {transaction: tx};
@@ -137,7 +125,7 @@ describe('Application execute()/executeProc()/executeFunc()', () => {
});
it('should execute function and get data with user with inherited privileges', async() => {
- const ctx = getCtx(userWithInheritedPrivileges);
+ const ctx = {req: {accessToken: {userId: userWithInheritedPrivileges}}};
try {
const options = {transaction: tx};
diff --git a/loopback/common/methods/schema/model-info.js b/loopback/common/methods/schema/model-info.js
index 0648deb800..74d7644750 100644
--- a/loopback/common/methods/schema/model-info.js
+++ b/loopback/common/methods/schema/model-info.js
@@ -92,6 +92,7 @@ module.exports = Self => {
const locale = modelLocale && modelLocale.get(lang);
json[modelName] = {
+ http: model.sharedClass.http.path,
properties: model.definition.rawProperties,
validations: jsonValidations,
locale
diff --git a/loopback/common/methods/vn-model/specs/crud.spec.js b/loopback/common/methods/vn-model/specs/crud.spec.js
index 56af72bd94..28b256ad85 100644
--- a/loopback/common/methods/vn-model/specs/crud.spec.js
+++ b/loopback/common/methods/vn-model/specs/crud.spec.js
@@ -1,20 +1,7 @@
const app = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
describe('Model crud()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
let insertId;
const barcodeModel = app.models.ItemBarcode;
diff --git a/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js b/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js
index a3dba14d71..84c0784c9a 100644
--- a/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js
+++ b/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js
@@ -1,20 +1,7 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('Model rewriteDbError()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should extend rewriteDbError properties to any model passed', () => {
const exampleModel = models.ItemTag;
diff --git a/modules/claim/back/methods/claim/specs/filter.spec.js b/modules/claim/back/methods/claim/specs/filter.spec.js
index 872f49aa34..1ef808e9d8 100644
--- a/modules/claim/back/methods/claim/specs/filter.spec.js
+++ b/modules/claim/back/methods/claim/specs/filter.spec.js
@@ -2,15 +2,7 @@ const app = require('vn-loopback/server/server');
const models = require('vn-loopback/server/server').models;
describe('claim filter()', () => {
- let ctx;
- beforeEach(() => {
- ctx = {
- req: {
- accessToken: {userId: 9},
- headers: {origin: 'http://localhost'}
- }
- };
- });
+ const ctx = beforeAll.getCtx();
it('should return 1 result filtering by id', async() => {
const tx = await app.models.Claim.beginTransaction({});
diff --git a/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js b/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js
index 95c356374e..55d76ed7a7 100644
--- a/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js
+++ b/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js
@@ -1,18 +1,11 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('claim regularizeClaim()', () => {
const userId = 18;
- const ctx = {
- req: {
- accessToken: {userId: userId},
- headers: {origin: 'http://localhost'}
- }
- };
+ const ctx = beforeAll.mockLoopBackContext(userId);
ctx.req.__ = (value, params) => {
return params.nickname;
};
-
const chatModel = models.Chat;
const claimId = 1;
const ticketId = 1;
@@ -40,20 +33,6 @@ describe('claim regularizeClaim()', () => {
return await models.ClaimEnd.create(claimEnds, options);
}
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
-
it('should send a chat message with value "Trash" and then change claim state to resolved', async() => {
const tx = await models.Claim.beginTransaction({});
diff --git a/modules/claim/back/methods/claim/specs/updateClaim.spec.js b/modules/claim/back/methods/claim/specs/updateClaim.spec.js
index b7725e7f82..e1eec59d18 100644
--- a/modules/claim/back/methods/claim/specs/updateClaim.spec.js
+++ b/modules/claim/back/methods/claim/specs/updateClaim.spec.js
@@ -1,22 +1,10 @@
const app = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
const i18n = require('i18n');
describe('Update Claim', () => {
let url;
let claimStatesMap = {};
+ beforeAll.mockLoopBackContext();
beforeAll(async() => {
- url = await app.models.Url.getUrl();
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
const claimStates = await app.models.ClaimState.find();
claimStatesMap = claimStates.reduce((acc, state) => ({...acc, [state.code]: state.id}), {});
});
diff --git a/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js b/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js
index 99436fed61..bc081ed087 100644
--- a/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js
+++ b/modules/claim/back/methods/claim/specs/updateClaimAction.spec.js
@@ -1,20 +1,7 @@
const app = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
describe('Update Claim', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
const newDate = Date.vnNew();
const original = {
ticketFk: 3,
diff --git a/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js b/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js
index 74d80b964f..1a186f93c6 100644
--- a/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js
+++ b/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js
@@ -1,23 +1,10 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('Client addressesPropagateRe', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
+ beforeAll.mockLoopBackContext();
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
-
- it('should propagate the isEqualizated on both addresses of Mr Wayne and set hasToInvoiceByAddress to false', async() => {
+ it('should propagate the isEqualizated on both addresses of Mr Wayne' +
+ ' and set hasToInvoiceByAddress to false', async() => {
const tx = await models.Client.beginTransaction({});
try {
diff --git a/modules/client/back/methods/client/specs/createAddress.spec.js b/modules/client/back/methods/client/specs/createAddress.spec.js
index ae179cf6cc..f4901ff93e 100644
--- a/modules/client/back/methods/client/specs/createAddress.spec.js
+++ b/modules/client/back/methods/client/specs/createAddress.spec.js
@@ -1,5 +1,4 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('Address createAddress', () => {
const clientFk = 1101;
@@ -7,20 +6,7 @@ describe('Address createAddress', () => {
const incotermsFk = 'FAS';
const customAgentOneId = 1;
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
-
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should throw a non uee member error if no incoterms is defined', async() => {
const tx = await models.Client.beginTransaction({});
diff --git a/modules/client/back/methods/client/specs/createWithUser.spec.js b/modules/client/back/methods/client/specs/createWithUser.spec.js
index 04fc51a265..5b1ff5da92 100644
--- a/modules/client/back/methods/client/specs/createWithUser.spec.js
+++ b/modules/client/back/methods/client/specs/createWithUser.spec.js
@@ -1,6 +1,4 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
-
describe('Client Create', () => {
const newAccount = {
userName: 'deadpool',
@@ -16,20 +14,7 @@ describe('Client Create', () => {
const newAccountWithoutEmail = JSON.parse(JSON.stringify(newAccount));
delete newAccountWithoutEmail.email;
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
-
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it(`should not find deadpool as he's not created yet`, async() => {
const tx = await models.Client.beginTransaction({});
diff --git a/modules/client/back/methods/client/specs/getCard.spec.js b/modules/client/back/methods/client/specs/getCard.spec.js
index 962e0a2d44..49e5ed5a43 100644
--- a/modules/client/back/methods/client/specs/getCard.spec.js
+++ b/modules/client/back/methods/client/specs/getCard.spec.js
@@ -1,11 +1,11 @@
const models = require('vn-loopback/server/server').models;
describe('Client getCard()', () => {
+ const ctx = beforeAll.getCtx();
it('should receive a formated card of Bruce Wayne', async() => {
const tx = await models.Client.beginTransaction({});
try {
- const ctx = {req: {accessToken: {userId: 9}}};
const options = {transaction: tx};
const id = 1101;
diff --git a/modules/client/back/methods/client/specs/getDebt.spec.js b/modules/client/back/methods/client/specs/getDebt.spec.js
index b3b5286c08..d89d671a36 100644
--- a/modules/client/back/methods/client/specs/getDebt.spec.js
+++ b/modules/client/back/methods/client/specs/getDebt.spec.js
@@ -1,9 +1,9 @@
const models = require('vn-loopback/server/server').models;
describe('client getDebt()', () => {
+ const ctx = beforeAll.getCtx();
it('should return the client debt', async() => {
const tx = await models.Client.beginTransaction({});
- const ctx = {req: {accessToken: {userId: 9}}};
try {
const options = {transaction: tx};
diff --git a/modules/client/back/methods/client/specs/sendSms.spec.js b/modules/client/back/methods/client/specs/sendSms.spec.js
index df680c55fd..bba9f83ce8 100644
--- a/modules/client/back/methods/client/specs/sendSms.spec.js
+++ b/modules/client/back/methods/client/specs/sendSms.spec.js
@@ -1,12 +1,12 @@
const models = require('vn-loopback/server/server').models;
describe('client sendSms()', () => {
+ const ctx = beforeAll.getCtx();
it('should now send a message and log it', async() => {
const tx = await models.Client.beginTransaction({});
try {
const options = {transaction: tx};
- const ctx = {req: {accessToken: {userId: 9}}};
const id = 1101;
const destination = 222222222;
const message = 'this is the message created in a test';
diff --git a/modules/client/back/methods/client/specs/summary.spec.js b/modules/client/back/methods/client/specs/summary.spec.js
index 227f4c398b..fe2af80287 100644
--- a/modules/client/back/methods/client/specs/summary.spec.js
+++ b/modules/client/back/methods/client/specs/summary.spec.js
@@ -1,7 +1,7 @@
const models = require('vn-loopback/server/server').models;
describe('client summary()', () => {
- const ctx = {req: {accessToken: {userId: 9}}};
+ const ctx = beforeAll.getCtx();
it('should return a summary object containing data', async() => {
const clientId = 1101;
const tx = await models.Client.beginTransaction({});
diff --git a/modules/client/back/methods/client/specs/updateAddress.spec.js b/modules/client/back/methods/client/specs/updateAddress.spec.js
index 6f02323c5b..68981f8b75 100644
--- a/modules/client/back/methods/client/specs/updateAddress.spec.js
+++ b/modules/client/back/methods/client/specs/updateAddress.spec.js
@@ -1,6 +1,4 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
-
describe('Address updateAddress', () => {
const clientId = 1101;
const addressId = 1;
@@ -14,20 +12,7 @@ describe('Address updateAddress', () => {
}
};
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
-
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should throw the non uee member error if no incoterms is defined', async() => {
const tx = await models.Client.beginTransaction({});
diff --git a/modules/client/back/methods/client/updateFiscalData.js b/modules/client/back/methods/client/updateFiscalData.js
index 8516486589..8ed55b856c 100644
--- a/modules/client/back/methods/client/updateFiscalData.js
+++ b/modules/client/back/methods/client/updateFiscalData.js
@@ -99,6 +99,10 @@ module.exports = Self => {
{
arg: 'hasElectronicInvoice',
type: 'boolean'
+ },
+ {
+ arg: 'hasDailyInvoice',
+ type: 'boolean'
}
],
returns: {
@@ -117,8 +121,6 @@ module.exports = Self => {
const myOptions = {};
const models = Self.app.models;
const args = ctx.args;
- const userId = ctx.req.accessToken.userId;
- const $t = ctx.req.__;
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/client/back/model-config.json b/modules/client/back/model-config.json
index fc1254dd80..e6690ee5f0 100644
--- a/modules/client/back/model-config.json
+++ b/modules/client/back/model-config.json
@@ -5,7 +5,7 @@
"AddressObservation": {
"dataSource": "vn"
},
- "AddressShortage": {
+ "AddressWaste": {
"dataSource": "vn"
},
"BankEntity": {
diff --git a/modules/client/back/models/addressShortage.json b/modules/client/back/models/address-waste.json
similarity index 70%
rename from modules/client/back/models/addressShortage.json
rename to modules/client/back/models/address-waste.json
index 1ae8d986c8..2d7126eae9 100644
--- a/modules/client/back/models/addressShortage.json
+++ b/modules/client/back/models/address-waste.json
@@ -1,15 +1,19 @@
{
- "name": "AddressShortage",
+ "name": "AddressWaste",
"base": "VnModel",
"options": {
"mysql": {
- "table": "addressShortage"
+ "table": "addressWaste"
}
},
"properties": {
"addressFk": {
"type": "number",
"id": true
+ },
+ "type": {
+ "type": "string",
+ "id": true
}
},
"relations": {
diff --git a/modules/client/back/models/client.json b/modules/client/back/models/client.json
index f3eb9919b6..f24f69ae77 100644
--- a/modules/client/back/models/client.json
+++ b/modules/client/back/models/client.json
@@ -144,6 +144,9 @@
},
"recommendedCredit": {
"type": "number"
+ },
+ "hasDailyInvoice": {
+ "type": "boolean"
}
},
diff --git a/modules/client/back/models/specs/address.spec.js b/modules/client/back/models/specs/address.spec.js
index f0b421d351..3eae1b1bf3 100644
--- a/modules/client/back/models/specs/address.spec.js
+++ b/modules/client/back/models/specs/address.spec.js
@@ -1,24 +1,10 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('loopback model address', () => {
let createdAddressId;
const clientId = 1101;
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
-
- beforeAll(() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
afterAll(async() => {
const client = await models.Client.findById(clientId);
diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js
index 5fbfd2d0f7..5963e9c720 100644
--- a/modules/entry/back/methods/entry/filter.js
+++ b/modules/entry/back/methods/entry/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;
diff --git a/modules/entry/back/methods/entry/specs/addFromPackaging.spec.js b/modules/entry/back/methods/entry/specs/addFromPackaging.spec.js
index 1b0d4656f2..0c8d2729bb 100644
--- a/modules/entry/back/methods/entry/specs/addFromPackaging.spec.js
+++ b/modules/entry/back/methods/entry/specs/addFromPackaging.spec.js
@@ -1,5 +1,4 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('entry addFromPackaging()', () => {
const supplier = 442;
@@ -7,22 +6,10 @@ describe('entry addFromPackaging()', () => {
const yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1);
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 49},
- http: {
- req: {
- headers: {origin: 'http://localhost'},
- },
- },
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx,
- });
- });
+ beforeAll.mockLoopBackContext();
it('should create an incoming travel', async() => {
- const ctx = {args: {isTravelReception: true, supplier}};
+ const ctx = {accessToken: {userId: 49}, args: {isTravelReception: true, supplier}};
const tx = await models.Entry.beginTransaction({});
const options = {transaction: tx};
diff --git a/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js b/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js
index 885171ed52..f319c112a4 100644
--- a/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js
+++ b/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js
@@ -1,21 +1,7 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('Buy editLatestsBuys()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
-
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should change the value of a given column for the selected buys', async() => {
const tx = await models.Buy.beginTransaction({});
diff --git a/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js b/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js
index c860e228e0..fb32689010 100644
--- a/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js
+++ b/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js
@@ -1,14 +1,8 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
-const activeCtx = {accessToken: {userId: 9}};
describe('entry importBuysPreview()', () => {
const entryId = 1;
- beforeAll(async() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should return the buys with the calculated packagingFk', async() => {
const tx = await models.Entry.beginTransaction({});
diff --git a/modules/invoiceIn/back/methods/invoice-in-due-day/specs/new.spec.js b/modules/invoiceIn/back/methods/invoice-in-due-day/specs/new.spec.js
index f21dad9f2d..2105cd9c0d 100644
--- a/modules/invoiceIn/back/methods/invoice-in-due-day/specs/new.spec.js
+++ b/modules/invoiceIn/back/methods/invoice-in-due-day/specs/new.spec.js
@@ -1,15 +1,7 @@
-const LoopBackContext = require('loopback-context');
const models = require('vn-loopback/server/server').models;
describe('invoiceInDueDay new()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should correctly create a new due day', async() => {
const userId = 9;
diff --git a/modules/invoiceIn/back/methods/invoice-in/specs/clone.spec.js b/modules/invoiceIn/back/methods/invoice-in/specs/clone.spec.js
index 436306aabd..cf1e0ac2d2 100644
--- a/modules/invoiceIn/back/methods/invoice-in/specs/clone.spec.js
+++ b/modules/invoiceIn/back/methods/invoice-in/specs/clone.spec.js
@@ -1,24 +1,11 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('invoiceIn clone()', () => {
- let ctx;
+ const ctx = beforeAll.getCtx();
let options;
let tx;
beforeEach(async() => {
- ctx = {
- req: {
- accessToken: {userId: 1},
- headers: {origin: 'http://localhost'}
- },
- args: {}
- };
-
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: ctx.req
- });
-
options = {transaction: tx};
tx = await models.Sale.beginTransaction({});
options.transaction = tx;
@@ -28,7 +15,8 @@ describe('invoiceIn clone()', () => {
await tx.rollback();
});
- it('should return the cloned invoiceIn and also clone invoiceInDueDays and invoiceInTaxes if there are any referencing the invoiceIn', async() => {
+ it('should return the cloned invoiceIn and also clone invoiceInDueDays ' +
+ 'and invoiceInTaxes if there are any referencing the invoiceIn', async() => {
const clone = await models.InvoiceIn.clone(ctx, 1, false, options);
expect(clone.supplierRef).toEqual('1234(2)');
@@ -51,7 +39,8 @@ describe('invoiceIn clone()', () => {
expect(invoiceInDueDay.length).toEqual(2);
});
- it('should return the cloned invoiceIn and also clone invoiceInIntrastat and invoiceInTaxes if it is rectificative', async() => {
+ it('should return the cloned invoiceIn and also clone invoiceInIntrastat ' +
+ 'and invoiceInTaxes if it is rectificative', async() => {
const clone = await models.InvoiceIn.clone(ctx, 1, true, options);
expect(clone.supplierRef).toEqual('1234(2)');
diff --git a/modules/invoiceIn/back/methods/invoice-in/specs/corrective.spec.js b/modules/invoiceIn/back/methods/invoice-in/specs/corrective.spec.js
index 1047cd0283..c63f024397 100644
--- a/modules/invoiceIn/back/methods/invoice-in/specs/corrective.spec.js
+++ b/modules/invoiceIn/back/methods/invoice-in/specs/corrective.spec.js
@@ -1,24 +1,11 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('invoiceIn corrective()', () => {
- let ctx;
+ const ctx = beforeAll.getCtx();
let options;
let tx;
beforeEach(async() => {
- ctx = {
- req: {
- accessToken: {userId: 9},
- headers: {origin: 'http://localhost'}
- },
- args: {}
- };
-
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: ctx.req
- });
-
options = {transaction: tx};
tx = await models.Sale.beginTransaction({});
options.transaction = tx;
diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js
index 3af7542ca4..bebc9a8e4d 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js
@@ -1,7 +1,7 @@
const models = require('vn-loopback/server/server').models;
describe('invoiceOut book()', () => {
- const ctx = {req: {accessToken: {userId: 9}}};
+ const ctx = beforeAll.getCtx();
const invoiceOutId = 5;
it('should update the booked property', async() => {
diff --git a/modules/item/back/methods/fixed-price/specs/upsertFixedPrice.spec.js b/modules/item/back/methods/fixed-price/specs/upsertFixedPrice.spec.js
index 8234065003..335159de5d 100644
--- a/modules/item/back/methods/fixed-price/specs/upsertFixedPrice.spec.js
+++ b/modules/item/back/methods/fixed-price/specs/upsertFixedPrice.spec.js
@@ -1,24 +1,13 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('upsertFixedPrice()', () => {
const now = Date.vnNew();
const fixedPriceId = 1;
let originalFixedPrice;
+ beforeAll.mockLoopBackContext();
beforeAll(async() => {
originalFixedPrice = await models.FixedPrice.findById(fixedPriceId);
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
});
it(`should toggle the hasMinPrice boolean if there's a minPrice and update the rest of the data`, async() => {
diff --git a/modules/item/back/methods/item-shelving/specs/getAlternative.spec.js b/modules/item/back/methods/item-shelving/specs/getAlternative.spec.js
index 3f49174777..3b0a65e614 100644
--- a/modules/item/back/methods/item-shelving/specs/getAlternative.spec.js
+++ b/modules/item/back/methods/item-shelving/specs/getAlternative.spec.js
@@ -1,13 +1,7 @@
const {models} = require('vn-loopback/server/server');
describe('itemShelving getAlternative()', () => {
- beforeAll(async() => {
- ctx = {
- req: {
- headers: {origin: 'http://localhost'},
- }
- };
- });
+ beforeAll.mockLoopBackContext();
it('should return a list of items without alternatives', async() => {
const shelvingFk = 'HEJ';
diff --git a/modules/item/back/methods/item-shelving/specs/upsertItem.spec.js b/modules/item/back/methods/item-shelving/specs/upsertItem.spec.js
index 2dd43224cc..f01cb985df 100644
--- a/modules/item/back/methods/item-shelving/specs/upsertItem.spec.js
+++ b/modules/item/back/methods/item-shelving/specs/upsertItem.spec.js
@@ -1,25 +1,13 @@
const {models} = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
describe('ItemShelving upsertItem()', () => {
const warehouseFk = 1;
- let ctx;
+
+ const ctx = beforeAll.getCtx();
let options;
let tx;
beforeEach(async() => {
- ctx = {
- req: {
- accessToken: {userId: 9},
- headers: {origin: 'http://localhost'}
- },
- args: {}
- };
-
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: ctx.req
- });
-
options = {transaction: tx};
tx = await models.ItemShelving.beginTransaction({});
options.transaction = tx;
diff --git a/modules/item/back/methods/item/specs/clone.spec.js b/modules/item/back/methods/item/specs/clone.spec.js
index 01210677e0..5bb5fe5601 100644
--- a/modules/item/back/methods/item/specs/clone.spec.js
+++ b/modules/item/back/methods/item/specs/clone.spec.js
@@ -1,21 +1,8 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('item clone()', () => {
let nextItemId;
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
beforeEach(async() => {
let query = `SELECT i1.id + 1 as id FROM vn.item i1
diff --git a/modules/item/back/methods/item/specs/getBalance.spec.js b/modules/item/back/methods/item/specs/getBalance.spec.js
index 728b5f33e4..95de3cc506 100644
--- a/modules/item/back/methods/item/specs/getBalance.spec.js
+++ b/modules/item/back/methods/item/specs/getBalance.spec.js
@@ -2,17 +2,14 @@ const models = require('vn-loopback/server/server').models;
const LoopBackContext = require('loopback-context');
describe('item getBalance()', () => {
- const ctx = {req: {accessToken: {userId: 9}}};
+ const ctx = beforeAll.getCtx();
it('should return the balance lines of a client type loses in which one has highlighted true', async() => {
const tx = await models.Item.beginTransaction({});
const options = {transaction: tx};
try {
- const activeCtx = {
- accessToken: {userId: 9},
- };
spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
+ active: ctx
});
const losesClientId = 1111;
const ticket = await models.Ticket.findById(7, null, options);
@@ -64,7 +61,7 @@ describe('item getBalance()', () => {
const secondItemBalance = await models.Item.getBalance(ctx, secondFilter, options);
expect(firstItemBalance[9].claimFk).toEqual(null);
- expect(secondItemBalance[7].claimFk).toEqual(2);
+ expect(secondItemBalance[7].claimFk).toEqual(1);
await tx.rollback();
} catch (e) {
diff --git a/modules/item/back/methods/item/specs/new.spec.js b/modules/item/back/methods/item/specs/new.spec.js
index 2ffaf87a5b..11570ffb90 100644
--- a/modules/item/back/methods/item/specs/new.spec.js
+++ b/modules/item/back/methods/item/specs/new.spec.js
@@ -1,21 +1,7 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('item new()', () => {
- const ctx = {req: {accessToken: {userId: 9}}};
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ const ctx = beforeAll.getCtx();
it('should create a new item, adding the name as a tag', async() => {
const tx = await models.Item.beginTransaction({});
diff --git a/modules/item/back/methods/item/specs/regularize.spec.js b/modules/item/back/methods/item/specs/regularize.spec.js
index e7df9a0038..4e94d5d6d8 100644
--- a/modules/item/back/methods/item/specs/regularize.spec.js
+++ b/modules/item/back/methods/item/specs/regularize.spec.js
@@ -1,27 +1,13 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('regularize()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 18},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ const ctx = beforeAll.mockLoopBackContext(18);
it('should create a new ticket and add a line', async() => {
const tx = await models.Item.beginTransaction({});
const options = {transaction: tx};
try {
- const ctx = {req: {accessToken: {userId: 18}}};
const itemId = 1;
const warehouseId = 1;
const quantity = 11;
diff --git a/modules/item/back/methods/item/specs/updateTaxes.spec.js b/modules/item/back/methods/item/specs/updateTaxes.spec.js
index 793e43de8f..828a5fec9d 100644
--- a/modules/item/back/methods/item/specs/updateTaxes.spec.js
+++ b/modules/item/back/methods/item/specs/updateTaxes.spec.js
@@ -1,20 +1,7 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('item updateTaxes()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should throw an error if the taxClassFk is blank', async() => {
const tx = await models.Item.beginTransaction({});
diff --git a/modules/item/back/methods/tag/specs/onSubmit.spec.js b/modules/item/back/methods/tag/specs/onSubmit.spec.js
index 1e96d9e81f..e92a5fcdfa 100644
--- a/modules/item/back/methods/tag/specs/onSubmit.spec.js
+++ b/modules/item/back/methods/tag/specs/onSubmit.spec.js
@@ -1,20 +1,7 @@
const models = require('vn-loopback/server/server').models;
-const LoopBackContext = require('loopback-context');
describe('tag onSubmit()', () => {
- beforeAll(async() => {
- const activeCtx = {
- accessToken: {userId: 9},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
+ beforeAll.mockLoopBackContext();
it('should delete a tag', async() => {
const tx = await models.Item.beginTransaction({});
diff --git a/modules/item/back/model-config.json b/modules/item/back/model-config.json
index 2d06e1ada5..5dbe4d62a4 100644
--- a/modules/item/back/model-config.json
+++ b/modules/item/back/model-config.json
@@ -32,6 +32,9 @@
"ItemLog": {
"dataSource": "vn"
},
+ "ItemMinimumQuantity": {
+ "dataSource": "vn"
+ },
"ItemPackingType": {
"dataSource": "vn"
},
diff --git a/modules/item/back/models/item-minimum-quantity.json b/modules/item/back/models/item-minimum-quantity.json
new file mode 100644
index 0000000000..74eac39fca
--- /dev/null
+++ b/modules/item/back/models/item-minimum-quantity.json
@@ -0,0 +1,63 @@
+{
+ "name": "ItemMinimumQuantity",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "itemMinimumQuantity"
+ }
+ },
+ "mixins": {
+ "Loggable": true
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "description": "Id"
+ },
+ "itemFk": {
+ "type": "number",
+ "required": true
+ },
+ "quantity": {
+ "type": "number",
+ "required": true
+ },
+ "started": {
+ "type": "date",
+ "required": true
+ },
+ "ended": {
+ "type": "date"
+ },
+ "warehouseFk": {
+ "type": "number"
+ },
+ "created": {
+ "type": "date"
+ },
+ "editorFk": {
+ "type": "number"
+ }
+ },
+ "relations": {
+ "item": {
+ "type": "belongsTo",
+ "model": "Item",
+ "foreignKey": "itemFk"
+ },
+ "warehouse": {
+ "type": "belongsTo",
+ "model": "Warehouse",
+ "foreignKey": "warehouseFk"
+ }
+ },
+ "acls": [
+ {
+ "accessType": "READ",
+ "principalType": "ROLE",
+ "principalId": "buyer",
+ "permission": "ALLOW"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/item/back/models/item.json b/modules/item/back/models/item.json
index 10cff3e040..eda56e9385 100644
--- a/modules/item/back/models/item.json
+++ b/modules/item/back/models/item.json
@@ -152,10 +152,6 @@
"columnName": "doPhoto"
}
},
- "minQuantity": {
- "type": "number",
- "description": "Min quantity"
- },
"photoMotivation": {
"type": "string"
}
diff --git a/modules/item/back/models/specs/itemMinimumQuantity.spec.js b/modules/item/back/models/specs/itemMinimumQuantity.spec.js
new file mode 100644
index 0000000000..7d1e19defe
--- /dev/null
+++ b/modules/item/back/models/specs/itemMinimumQuantity.spec.js
@@ -0,0 +1,102 @@
+const {models} = require('vn-loopback/server/server');
+
+describe('itemMinimumQuantity model', () => {
+ const itemFk = 5;
+ const quantity = 100;
+ const warehouseFk = 60;
+
+ beforeEach(async() => {
+ await models.ItemMinimumQuantity.destroyAll({where: {itemFk: itemFk}});
+ });
+
+ describe('CRUD operations', () => {
+ it('should create a new itemMinimumQuantity record', async() => {
+ const newRecord = {
+ itemFk: itemFk,
+ quantity: quantity,
+ started: Date.vnNew(),
+ ended: new Date(Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 1)),
+ warehouseFk: warehouseFk
+ };
+
+ const createdRecord = await models.ItemMinimumQuantity.create(newRecord);
+
+ expect(createdRecord).toBeDefined();
+ expect(createdRecord.quantity).toEqual(newRecord.quantity);
+ });
+
+ it('should read an existing itemMinimumQuantity record', async() => {
+ const newRecord = {
+ itemFk: itemFk,
+ quantity: quantity,
+ started: Date.vnNew(),
+ ended: new Date(Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 2)),
+ warehouseFk: warehouseFk
+ };
+
+ await models.ItemMinimumQuantity.create(newRecord);
+
+ const existingRecord = await models.ItemMinimumQuantity.findOne({where: {itemFk: itemFk}});
+
+ expect(existingRecord).toBeDefined();
+ expect(existingRecord.itemFk).toEqual(itemFk);
+ });
+
+ it('should update an existing itemMinimumQuantity record', async() => {
+ const newRecord = {
+ itemFk: itemFk,
+ quantity: quantity,
+ started: Date.vnNew(),
+ ended: new Date(Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 3)),
+ warehouseFk: warehouseFk
+ };
+
+ await models.ItemMinimumQuantity.create(newRecord);
+
+ const newQuantity = 150;
+ const existingRecord = await models.ItemMinimumQuantity.findOne({where: {itemFk: itemFk}});
+ existingRecord.quantity = newQuantity;
+
+ await existingRecord.save();
+ const updatedRecord = await models.ItemMinimumQuantity.findOne({where: {itemFk: itemFk}});
+
+ expect(updatedRecord.quantity).toEqual(newQuantity);
+ });
+ });
+
+ describe('validation and constraints', () => {
+ it('should enforce unique constraint on itemFk, started, ended, and warehouseFk', async() => {
+ const newRecord = {
+ itemFk: itemFk,
+ quantity: quantity,
+ started: Date.vnNew(),
+ ended: Date.vnNew().setFullYear(Date.vnNew().getFullYear() + 5),
+ warehouseFk: warehouseFk
+ };
+
+ try {
+ await models.ItemMinimumQuantity.create(newRecord);
+ await models.ItemMinimumQuantity.create(newRecord);
+ } catch (e) {
+ expect(e).toBeDefined();
+ expect(e.code).toContain('ER_SIGNAL_EXCEPTION');
+ }
+ });
+
+ it('should allow null values for ended and warehouseFk', async() => {
+ const newRecord = {
+ itemFk: itemFk,
+ quantity: quantity,
+ started: Date.vnNew(),
+ ended: null,
+ warehouseFk: null
+ };
+
+ const createdRecord = await models.ItemMinimumQuantity.create(newRecord);
+
+ expect(createdRecord).toBeDefined();
+ expect(createdRecord.ended).toBeNull();
+ expect(createdRecord.warehouseFk).toBeNull();
+ });
+ });
+});
diff --git a/modules/item/front/diary/index.html b/modules/item/front/diary/index.html
index 481cec51ab..7fb3b870e0 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 1d2e34a666..3d86b0b60a 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 a6302346de..0000000000
--- 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 a312da7744..0000000000
--- 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 0a6cafcb96..0000000000
--- 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/item/front/summary/index.html b/modules/item/front/summary/index.html
index 13c671d29b..0e4cfc9558 100644
--- a/modules/item/front/summary/index.html
+++ b/modules/item/front/summary/index.html
@@ -128,9 +128,6 @@
-
-
diff --git a/modules/order/back/methods/order-row/specs/addToOrder.spec.js b/modules/order/back/methods/order-row/specs/addToOrder.spec.js
index 96544a1a9c..2bc78ffef3 100644
--- a/modules/order/back/methods/order-row/specs/addToOrder.spec.js
+++ b/modules/order/back/methods/order-row/specs/addToOrder.spec.js
@@ -1,7 +1,7 @@
const models = require('vn-loopback/server/server').models;
describe('order addToOrder()', () => {
- const ctx = {req: {accessToken: {userId: 9}}};
+ const ctx = beforeAll.getCtx();
const orderId = 8;
it('should add a row to a given order', async() => {
const tx = await models.Order.beginTransaction({});
diff --git a/modules/order/back/methods/order/catalogFilter.js b/modules/order/back/methods/order/catalogFilter.js
index ab1d7784ec..27048457ce 100644
--- a/modules/order/back/methods/order/catalogFilter.js
+++ b/modules/order/back/methods/order/catalogFilter.js
@@ -119,7 +119,7 @@ module.exports = Self => {
w.firstName,
tci.priceKg,
ink.hex,
- i.minQuantity
+ tci.minQuantity
FROM tmp.ticketCalculateItem tci
JOIN vn.item i ON i.id = tci.itemFk
JOIN vn.itemType it ON it.id = i.typeFk
@@ -158,21 +158,19 @@ module.exports = Self => {
// Apply item prices
const pricesIndex = stmts.push(
- `SELECT
- tcp.itemFk,
+ `SELECT tcp.itemFk,
tcp.grouping,
tcp.price,
tcp.rate,
tcp.warehouseFk,
tcp.priceKg,
- w.name AS warehouse
+ w.name warehouse
FROM tmp.ticketComponentPrice tcp
JOIN vn.warehouse w ON w.id = tcp.warehouseFk`) - 1;
// Get tags from all items
const itemTagsIndex = stmts.push(
- `SELECT
- t.id,
+ `SELECT t.id,
t.name,
t.isFree,
t.sourceTable,
diff --git a/modules/order/back/methods/order/specs/filter.spec.js b/modules/order/back/methods/order/specs/filter.spec.js
index 68de7fe04d..9e644bb2d3 100644
--- a/modules/order/back/methods/order/specs/filter.spec.js
+++ b/modules/order/back/methods/order/specs/filter.spec.js
@@ -1,11 +1,7 @@
const models = require('vn-loopback/server/server').models;
describe('order filter()', () => {
- const ctx = {
- req: {accessToken: {userId: 9}},
- args: {},
- params: {}
- };
+ const ctx = beforeAll.getCtx();
it('should call the filter method with a basic search', async() => {
const myCtx = Object.assign({}, ctx);
diff --git a/modules/order/back/methods/order/specs/new.spec.js b/modules/order/back/methods/order/specs/new.spec.js
index c43527f663..779de6ada8 100644
--- a/modules/order/back/methods/order/specs/new.spec.js
+++ b/modules/order/back/methods/order/specs/new.spec.js
@@ -2,7 +2,7 @@ const models = require('vn-loopback/server/server').models;
const UserError = require('vn-loopback/util/user-error');
describe('order new()', () => {
- const ctx = {req: {accessToken: {userId: 9}}};
+ const ctx = beforeAll.getCtx();
it('should throw an error if the client isnt active', async() => {
const tx = await models.Order.beginTransaction({});
diff --git a/modules/order/back/methods/order/specs/newFromTicket.spec.js b/modules/order/back/methods/order/specs/newFromTicket.spec.js
index c509552fe3..d927a03388 100644
--- a/modules/order/back/methods/order/specs/newFromTicket.spec.js
+++ b/modules/order/back/methods/order/specs/newFromTicket.spec.js
@@ -1,7 +1,7 @@
const models = require('vn-loopback/server/server').models;
describe('order newFromTicket()', () => {
- const ctx = {req: {accessToken: {userId: 9}}};
+ const ctx = beforeAll.getCtx();
it('should create a new order from an existing ticket', async() => {
const tx = await models.Order.beginTransaction({});
diff --git a/modules/order/front/catalog-view/index.html b/modules/order/front/catalog-view/index.html
index 081ce05a02..b047e1e6ad 100644
--- a/modules/order/front/catalog-view/index.html
+++ b/modules/order/front/catalog-view/index.html
@@ -37,18 +37,18 @@
value="{{::item.value7}}">
-
-
-
-
-
- {{::item.minQuantity}}
-
+
+
+
+
+
+ {{::item.minQuantity}}
+