Merge remote-tracking branch 'origin/dev' into 6321_negative_tickets

This commit is contained in:
Javier Segarra 2024-04-23 11:45:59 +02:00
commit caaa4fdd30
60 changed files with 286 additions and 567 deletions

View File

@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [24.18.01] - 2024-05-02 ## [24.20.01] - 2024-05-14
## [24.18.01] - 2024-05-07
## [24.16.01] - 2024-04-18 ## [24.16.01] - 2024-04-18

View File

@ -12,8 +12,8 @@ module.exports = Self => {
http: { http: {
path: `/renewToken`, path: `/renewToken`,
verb: 'POST' verb: 'POST'
} },
}); accessScopes: ['DEFAULT', 'read:multimedia']});
Self.renewToken = async function(ctx) { Self.renewToken = async function(ctx) {
const {accessToken: token} = ctx.req; const {accessToken: token} = ctx.req;

13
db/.editorconfig Normal file
View File

@ -0,0 +1,13 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# http://editorconfig.org
root = true
[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

View File

@ -2617,15 +2617,31 @@ INSERT INTO `vn`.`invoiceInIntrastat` (`invoiceInFk`, `net`, `intrastatFk`, `amo
UPDATE `vn`.`invoiceIn` UPDATE `vn`.`invoiceIn`
SET isBooked = TRUE SET isBooked = TRUE
WHERE id IN (2, 5, 7, 8, 9, 10); WHERE id IN (5, 7, 8, 9, 10);
INSERT INTO `vn`.`ticketRecalc`(`ticketFk`) DELIMITER $$
SELECT t.id CREATE PROCEDURE `tmp`.`ticket_recalc`()
FROM vn.ticket t BEGIN
LEFT JOIN vn.ticketRecalc tr ON tr.ticketFk = t.id DECLARE vDone BOOL;
WHERE tr.ticketFk IS NULL; DECLARE vTicketFk INT;
CALL `vn`.`ticket_doRecalc`(); DECLARE cTickets CURSOR FOR SELECT id FROM vn.ticket;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
OPEN cTickets;
myLoop: LOOP
SET vDone = FALSE;
FETCH cTickets INTO vTicketFk;
IF vDone THEN LEAVE myLoop; END IF;
CALL vn.ticket_recalc(vTicketFk, NULL);
END LOOP;
CLOSE cTickets;
END$$
DELIMITER ;
CALL tmp.ticket_recalc;
DROP PROCEDURE tmp.ticket_recalc;
UPDATE `vn`.`ticket` UPDATE `vn`.`ticket`
SET refFk = 'T1111111' SET refFk = 'T1111111'

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `hedera`.`order_doRecalc`
ON SCHEDULE EVERY 10 SECOND
STARTS '2019-08-29 14:18:04.000'
ON COMPLETION PRESERVE
DISABLE
DO CALL order_doRecalc$$
DELIMITER ;

View File

@ -1,53 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_doRecalc`()
proc: BEGIN
/**
* Recalculates modified orders.
*/
DECLARE vDone BOOL;
DECLARE vOrderFk INT;
DECLARE cCur CURSOR FOR
SELECT DISTINCT orderFk FROM tOrder;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
DO RELEASE_LOCK('hedera.order_doRecalc');
ROLLBACK;
RESIGNAL;
END;
IF !GET_LOCK('hedera.order_doRecalc', 0) THEN
LEAVE proc;
END IF;
DROP TEMPORARY TABLE IF EXISTS tOrder;
CREATE TEMPORARY TABLE tOrder
ENGINE = MEMORY
SELECT id, orderFk FROM orderRecalc;
OPEN cCur;
myLoop: LOOP
SET vDone = FALSE;
FETCH cCur INTO vOrderFk;
IF vDone THEN
LEAVE myLoop;
END IF;
CALL order_recalc(vOrderFk);
END LOOP;
CLOSE cCur;
DELETE o FROM orderRecalc o JOIN tOrder t ON t.id = o.id;
DROP TEMPORARY TABLE tOrder;
DO RELEASE_LOCK('hedera.order_doRecalc');
END$$
DELIMITER ;

View File

@ -1,16 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_requestRecalc`(vSelf INT)
proc: BEGIN
/**
* Adds a request to recalculate the order total.
*
* @param vSelf The order identifier
*/
IF vSelf IS NULL THEN
LEAVE proc;
END IF;
-- #4409 Disable order recalc
-- INSERT INTO orderRecalc SET orderFk = vSelf;
END$$
DELIMITER ;

View File

@ -1,9 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`orderRow_afterDelete`
AFTER DELETE ON `orderRow`
FOR EACH ROW
BEGIN
CALL stock.log_add('orderRow', NULL, OLD.id);
CALL order_requestRecalc(OLD.orderFk);
END$$
DELIMITER ;

View File

@ -1,9 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`orderRow_afterInsert`
AFTER INSERT ON `orderRow`
FOR EACH ROW
BEGIN
CALL stock.log_add('orderRow', NEW.id, NULL);
CALL order_requestRecalc(NEW.orderFk);
END$$
DELIMITER ;

View File

@ -1,10 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`orderRow_afterUpdate`
AFTER UPDATE ON `orderRow`
FOR EACH ROW
BEGIN
CALL stock.log_add('orderRow', NEW.id, OLD.id);
CALL order_requestRecalc(OLD.orderFk);
CALL order_requestRecalc(NEW.orderFk);
END$$
DELIMITER ;

View File

@ -3,14 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`order_afterUpdate
AFTER UPDATE ON `order` AFTER UPDATE ON `order`
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
CALL stock.log_add('order', NEW.id, OLD.id);
IF !(OLD.address_id <=> NEW.address_id)
OR !(OLD.company_id <=> NEW.company_id)
OR !(OLD.customer_id <=> NEW.customer_id) THEN
CALL order_requestRecalc(NEW.id);
END IF;
IF !(OLD.address_id <=> NEW.address_id) AND NEW.address_id = 2850 THEN IF !(OLD.address_id <=> NEW.address_id) AND NEW.address_id = 2850 THEN
-- Fallo que se actualiza no se sabe como tickets en este cliente -- Fallo que se actualiza no se sabe como tickets en este cliente
CALL vn.mail_insert( CALL vn.mail_insert(

View File

@ -1,21 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_add`(IN `vTableName` VARCHAR(255), IN `vNewId` VARCHAR(255), IN `vOldId` VARCHAR(255))
proc: BEGIN
-- XXX: Disabled while testing
LEAVE proc;
IF vOldId IS NOT NULL AND !(vOldId <=> vNewId) THEN
INSERT IGNORE INTO `log` SET
tableName = vTableName,
tableId = vOldId,
operation = 'delete';
END IF;
IF vNewId IS NOT NULL THEN
INSERT IGNORE INTO `log` SET
tableName = vTableName,
tableId = vNewId,
operation = 'insert';
END IF;
END$$
DELIMITER ;

View File

@ -1,6 +1,7 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`binlogQueue_getDelay`(vCode VARCHAR(255)) CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`binlogQueue_getDelay`(vCode VARCHAR(255))
RETURNS BIGINT RETURNS BIGINT
READS SQL DATA
NOT DETERMINISTIC NOT DETERMINISTIC
BEGIN BEGIN
/** /**

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`ticket_doRecalc`
ON SCHEDULE EVERY 10 SECOND
STARTS '2022-01-28 09:29:18.000'
ON COMPLETION PRESERVE
ENABLE
DO CALL ticket_doRecalc$$
DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`travel_doRecalc`
ON SCHEDULE EVERY 15 SECOND
STARTS '2019-05-17 10:52:29.000'
ON COMPLETION PRESERVE
ENABLE
DO CALL travel_doRecalc$$
DELIMITER ;

View File

@ -1,53 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doRecalc`()
proc: BEGIN
/**
* Recalculates modified ticket.
*/
DECLARE vDone BOOL;
DECLARE vTicketFk INT;
DECLARE cCur CURSOR FOR
SELECT DISTINCT ticketFk FROM tTicket;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
DO RELEASE_LOCK('vn.ticket_doRecalc');
ROLLBACK;
RESIGNAL;
END;
IF !GET_LOCK('vn.ticket_doRecalc', 0) THEN
LEAVE proc;
END IF;
DROP TEMPORARY TABLE IF EXISTS tTicket;
CREATE TEMPORARY TABLE tTicket
ENGINE = MEMORY
SELECT id, ticketFk FROM ticketRecalc;
OPEN cCur;
myLoop: LOOP
SET vDone = FALSE;
FETCH cCur INTO vTicketFk;
IF vDone THEN
LEAVE myLoop;
END IF;
CALL ticket_recalc(vTicketFk, NULL);
END LOOP;
CLOSE cCur;
DELETE tr FROM ticketRecalc tr JOIN tTicket t ON tr.id = t.id;
DROP TEMPORARY TABLE tTicket;
DO RELEASE_LOCK('vn.ticket_doRecalc');
END$$
DELIMITER ;

View File

@ -0,0 +1,40 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_recalcByScope`(
vScope VARCHAR(255),
vId INT
)
BEGIN
/**
* Recalculates tickets in an scope.
*
* @param vScope The scope name
* @param vId The scope id
*/
DECLARE vDone BOOL;
DECLARE vTicketFk INT;
DECLARE cTickets CURSOR FOR
SELECT id FROM ticket
WHERE refFk IS NULL
AND ((vScope = 'client' AND clientFk = vId)
OR (vScope = 'address' AND addressFk = vId));
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
OPEN cTickets;
myLoop: LOOP
SET vDone = FALSE;
FETCH cTickets INTO vTicketFk;
IF vDone THEN
LEAVE myLoop;
END IF;
CALL ticket_recalc(vTicketFk, NULL);
END LOOP;
CLOSE cTickets;
END$$
DELIMITER ;

View File

@ -1,15 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_requestRecalc`(vSelf INT)
proc: BEGIN
/**
* Adds a request to recalculate the ticket total.
*
* @param vSelf The ticket identifier
*/
IF vSelf IS NULL THEN
LEAVE proc;
END IF;
INSERT INTO ticketRecalc SET ticketFk = vSelf;
END$$
DELIMITER ;

View File

@ -1,34 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_doRecalc`()
proc: BEGIN
/**
* Recounts the number of entries of changed travels.
*/
DECLARE vTravelFk INT;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
DO RELEASE_LOCK('vn.ticket_doRecalc');
END;
IF !GET_LOCK('vn.travel_doRecalc', 0) THEN
LEAVE proc;
END IF;
CREATE OR REPLACE TEMPORARY TABLE tTravel
ENGINE = MEMORY
SELECT travelFk FROM travelRecalc;
UPDATE travel t
JOIN tTravel tt ON tt.travelFk = t.id
SET t.totalEntries = (
SELECT COUNT(e.id)
FROM entry e
WHERE e.travelFk = t.id
);
DELETE tr FROM travelRecalc tr JOIN tTravel t ON tr.travelFk = t.travelFk;
DROP TEMPORARY TABLE tTravel;
DO RELEASE_LOCK('vn.travel_doRecalc');
END$$
DELIMITER ;

View File

@ -0,0 +1,17 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_recalc`(vSelf INT)
proc: BEGIN
/**
* Updates the number of entries assigned to the travel.
*
* @param vSelf The travel id
*/
UPDATE travel
SET totalEntries = (
SELECT COUNT(id)
FROM entry
WHERE travelFk = vSelf
)
WHERE id = vSelf;
END$$
DELIMITER ;

View File

@ -1,15 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_requestRecalc`(vSelf INT)
proc: BEGIN
/**
* Adds a request to recount the number of entries for the travel.
*
* @param vSelf The travel reference
*/
IF vSelf IS NULL THEN
LEAVE proc;
END IF;
INSERT IGNORE INTO travelRecalc SET travelFk = vSelf;
END$$
DELIMITER ;

View File

@ -19,18 +19,14 @@ BEGIN
WHERE id = NEW.clientFk; WHERE id = NEW.clientFk;
END IF; END IF;
END IF; END IF;
IF NEW.isDefaultAddress AND NEW.isActive = FALSE THEN IF NEW.isDefaultAddress AND NEW.isActive = FALSE THEN
CALL util.throw ('Cannot desactivate the default address'); CALL util.throw ('Cannot desactivate the default address');
END IF; END IF;
IF NOT (NEW.isEqualizated <=> OLD.isEqualizated) THEN IF (NEW.clientFk <> OLD.clientFk
INSERT IGNORE INTO ticketRecalc (ticketFk) OR NEW.isActive <> OLD.isActive
SELECT id FROM ticket t OR NOT (NEW.provinceFk <=> OLD.provinceFk))
WHERE t.addressFk = NEW.id
AND t.refFk IS NULL;
END IF;
IF (NEW.clientFk <> OLD.clientFk OR NEW.isActive <> OLD.isActive OR NOT (NEW.provinceFk <=> OLD.provinceFk))
AND (SELECT client_hasDifferentCountries(NEW.clientFk)) THEN AND (SELECT client_hasDifferentCountries(NEW.clientFk)) THEN
UPDATE client UPDATE client
SET hasToInvoiceByAddress = TRUE SET hasToInvoiceByAddress = TRUE

View File

@ -3,19 +3,14 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_afterDelete`
AFTER DELETE ON `buy` AFTER DELETE ON `buy`
FOR EACH ROW FOR EACH ROW
trig: BEGIN trig: BEGIN
DECLARE vValues VARCHAR(255);
IF @isModeInventory OR @isTriggerDisabled THEN IF @isModeInventory OR @isTriggerDisabled THEN
LEAVE trig; LEAVE trig;
END IF; END IF;
CALL stock.log_add('buy', NULL, OLD.id);
INSERT INTO entryLog INSERT INTO entryLog
SET `action` = 'delete', SET `action` = 'delete',
`changedModel` = 'Buy', `changedModel` = 'Buy',
`changedModelId` = OLD.id, `changedModelId` = OLD.id,
`userFk` = account.myUser_getId(); `userFk` = account.myUser_getId();
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -7,8 +7,6 @@ trig: BEGIN
LEAVE trig; LEAVE trig;
END IF; END IF;
CALL stock.log_add('buy', NEW.id, NULL);
CALL buy_afterUpsert(NEW.id); CALL buy_afterUpsert(NEW.id);
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -12,14 +12,6 @@ trig: BEGIN
LEAVE trig; LEAVE trig;
END IF; END IF;
IF !(NEW.id <=> OLD.id)
OR !(NEW.entryFk <=> OLD.entryFk)
OR !(NEW.itemFk <=> OLD.itemFk)
OR !(NEW.quantity <=> OLD.quantity)
OR !(NEW.created <=> OLD.created) THEN
CALL stock.log_add('buy', NEW.id, OLD.id);
END IF;
CALL buy_afterUpsert(NEW.id); CALL buy_afterUpsert(NEW.id);
SELECT w.isBuyerToBeEmailed, t.landed SELECT w.isBuyerToBeEmailed, t.landed

View File

@ -4,20 +4,13 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_afterUpdate`
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
IF !(NEW.defaultAddressFk <=> OLD.defaultAddressFk) THEN IF !(NEW.defaultAddressFk <=> OLD.defaultAddressFk) THEN
UPDATE `address` SET isDefaultAddress = 0 UPDATE `address` SET isDefaultAddress = FALSE
WHERE clientFk = NEW.id; WHERE clientFk = NEW.id;
UPDATE `address` SET isDefaultAddress = 1 UPDATE `address` SET isDefaultAddress = TRUE
WHERE id = NEW.defaultAddressFk; WHERE id = NEW.defaultAddressFk;
END IF; END IF;
IF NOT (NEW.provinceFk <=> OLD.provinceFk) OR NOT (NEW.isVies <=> OLD.isVies) THEN
INSERT IGNORE INTO ticketRecalc (ticketFk)
SELECT id FROM ticket t
WHERE t.clientFk = NEW.id
AND t.refFk IS NULL;
END IF;
IF NOT NEW.isActive THEN IF NOT NEW.isActive THEN
UPDATE account.`user` UPDATE account.`user`
SET active = FALSE SET active = FALSE

View File

@ -8,7 +8,5 @@ BEGIN
`changedModel` = 'Entry', `changedModel` = 'Entry',
`changedModelId` = OLD.id, `changedModelId` = OLD.id,
`userFk` = account.myUser_getId(); `userFk` = account.myUser_getId();
CALL travel_requestRecalc(OLD.travelFk);
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_afterInsert`
AFTER INSERT ON `entry`
FOR EACH ROW
BEGIN
CALL travel_requestRecalc(NEW.travelFk);
END$$
DELIMITER ;

View File

@ -3,18 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_afterUpdate`
AFTER UPDATE ON `entry` AFTER UPDATE ON `entry`
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
IF NOT(NEW.id <=> OLD.id)
OR NOT(NEW.travelFk <=> OLD.travelFk)
OR NOT(NEW.isRaid <=> OLD.isRaid) THEN
CALL stock.log_add('entry', NEW.id, OLD.id);
END IF;
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
CALL travel_requestRecalc(OLD.travelFk);
CALL travel_requestRecalc(NEW.travelFk);
END IF;
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
SELECT b.id SELECT b.id

View File

@ -12,9 +12,6 @@ BEGIN
`changedModelId` = OLD.id, `changedModelId` = OLD.id,
`userFk` = account.myUser_getId(); `userFk` = account.myUser_getId();
CALL stock.log_add('sale', NULL, OLD.id);
CALL ticket_requestRecalc(OLD.ticketFk);
SELECT account.myUser_getName() INTO vUserRole; SELECT account.myUser_getName() INTO vUserRole;
SELECT account.user_getMysqlRole(vUserRole) INTO vUserRole; SELECT account.user_getMysqlRole(vUserRole) INTO vUserRole;

View File

@ -7,11 +7,7 @@ BEGIN
CALL util.throw('Cannot insert a service item into a ticket'); CALL util.throw('Cannot insert a service item into a ticket');
END IF; END IF;
CALL stock.log_add('sale', NEW.id, NULL);
CALL ticket_requestRecalc(NEW.ticketFk);
IF NEW.quantity > 0 THEN IF NEW.quantity > 0 THEN
UPDATE vn.collection c UPDATE vn.collection c
JOIN vn.ticketCollection tc ON tc.collectionFk = c.id JOIN vn.ticketCollection tc ON tc.collectionFk = c.id
AND tc.ticketFk = NEW.ticketFk AND tc.ticketFk = NEW.ticketFk

View File

@ -6,24 +6,6 @@ BEGIN
DECLARE vIsToSendMail BOOL; DECLARE vIsToSendMail BOOL;
DECLARE vUserRole VARCHAR(255); DECLARE vUserRole VARCHAR(255);
IF !(NEW.id <=> OLD.id)
OR !(NEW.ticketFk <=> OLD.ticketFk)
OR !(NEW.itemFk <=> OLD.itemFk)
OR !(NEW.quantity <=> OLD.quantity)
OR !(NEW.created <=> OLD.created)
OR !(NEW.isPicked <=> OLD.isPicked) THEN
CALL stock.log_add('sale', NEW.id, OLD.id);
END IF;
IF !(NEW.price <=> OLD.price)
OR !(NEW.ticketFk <=> OLD.ticketFk)
OR !(NEW.itemFk <=> OLD.itemFk)
OR !(NEW.quantity <=> OLD.quantity)
OR !(NEW.discount <=> OLD.discount) THEN
CALL ticket_requestRecalc(NEW.ticketFk);
CALL ticket_requestRecalc(OLD.ticketFk);
END IF;
IF !(OLD.ticketFk <=> NEW.ticketFk) THEN IF !(OLD.ticketFk <=> NEW.ticketFk) THEN
UPDATE ticketRequest SET ticketFk = NEW.ticketFk UPDATE ticketRequest SET ticketFk = NEW.ticketFk
WHERE saleFk = NEW.id; WHERE saleFk = NEW.id;

View File

@ -8,8 +8,5 @@ BEGIN
`changedModel` = 'TicketService', `changedModel` = 'TicketService',
`changedModelId` = OLD.id, `changedModelId` = OLD.id,
`userFk` = account.myUser_getId(); `userFk` = account.myUser_getId();
CALL ticket_requestRecalc(OLD.ticketFk);
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -1,10 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketService_afterInsert`
AFTER INSERT ON `ticketService`
FOR EACH ROW
BEGIN
CALL ticket_requestRecalc(NEW.ticketFk);
END$$
DELIMITER ;

View File

@ -1,13 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketService_afterUpdate`
AFTER UPDATE ON `ticketService`
FOR EACH ROW
BEGIN
IF !(NEW.price <=> OLD.price)
OR !(NEW.ticketFk <=> OLD.ticketFk)
OR !(NEW.quantity <=> OLD.quantity) THEN
CALL ticket_requestRecalc(NEW.ticketFk);
CALL ticket_requestRecalc(OLD.ticketFk);
END IF;
END$$
DELIMITER ;

View File

@ -3,24 +3,10 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_afterUpdate`
AFTER UPDATE ON `ticket` AFTER UPDATE ON `ticket`
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
IF !(NEW.id <=> OLD.id)
OR !(NEW.warehouseFk <=> OLD.warehouseFk)
OR !(NEW.shipped <=> OLD.shipped) THEN
CALL stock.log_add('ticket', NEW.id, OLD.id);
END IF;
IF !(NEW.clientFk <=> OLD.clientFk)
OR !(NEW.addressFk <=> OLD.addressFk)
OR !(NEW.companyFk <=> OLD.companyFk) THEN
CALL ticket_requestRecalc(NEW.id);
END IF;
IF NEW.routeFk <> OLD.routeFk THEN IF NEW.routeFk <> OLD.routeFk THEN
UPDATE expedition UPDATE expedition
SET hasNewRoute = TRUE SET hasNewRoute = TRUE
WHERE ticketFk = NEW.id; WHERE ticketFk = NEW.id;
END IF; END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -3,8 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travel_afterUpdate`
AFTER UPDATE ON `travel` AFTER UPDATE ON `travel`
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
CALL stock.log_add('travel', NEW.id, OLD.id);
IF NOT(NEW.shipped <=> OLD.shipped) THEN IF NOT(NEW.shipped <=> OLD.shipped) THEN
UPDATE entry UPDATE entry
SET commission = entry_getCommission(travelFk, currencyFk,supplierFk) SET commission = entry_getCommission(travelFk, currencyFk,supplierFk)

View File

@ -0,0 +1 @@
DROP TABLE hedera.orderRecalc;

View File

@ -0,0 +1 @@
DROP TABLE vn.ticketRecalc;

View File

@ -0,0 +1 @@
DROP TABLE vn.travelRecalc;

View File

@ -76,6 +76,6 @@ describe('Entry basic data path', () => {
expect(confirmed).toBe('checked'); expect(confirmed).toBe('checked');
expect(inventory).toBe('checked'); expect(inventory).toBe('checked');
expect(raid).toBe('checked'); expect(raid).toBe('checked');
expect(booked).toBe('checked'); expect(booked).toBe('unchecked');
}); });
}); });

View File

@ -1,5 +1,6 @@
import ngModule from '../module'; import ngModule from '../module';
const TOKEN_MULTIMEDIA = 'vnTokenMultimedia';
const TOKEN = 'vnToken';
/** /**
* Saves and loads the token for the current logged in user. * Saves and loads the token for the current logged in user.
* *
@ -58,8 +59,8 @@ export default class Token {
} }
getStorage(storage) { getStorage(storage) {
this.token = storage.getItem('vnToken'); this.token = storage.getItem(TOKEN);
this.tokenMultimedia = storage.getItem('vnTokenMultimedia'); this.tokenMultimedia = storage.getItem(TOKEN_MULTIMEDIA);
if (!this.token) return; if (!this.token) return;
const created = storage.getItem('vnTokenCreated'); const created = storage.getItem('vnTokenCreated');
this.created = created && new Date(created); this.created = created && new Date(created);
@ -67,15 +68,15 @@ export default class Token {
} }
setStorage(storage, token, tokenMultimedia, created, ttl) { setStorage(storage, token, tokenMultimedia, created, ttl) {
storage.setItem('vnTokenMultimedia', tokenMultimedia); storage.setItem(TOKEN_MULTIMEDIA, tokenMultimedia);
storage.setItem('vnToken', token); storage.setItem(TOKEN, token);
storage.setItem('vnTokenCreated', created.toJSON()); storage.setItem('vnTokenCreated', created.toJSON());
storage.setItem('vnTokenTtl', ttl); storage.setItem('vnTokenTtl', ttl);
} }
removeStorage(storage) { removeStorage(storage) {
storage.removeItem('vnToken'); storage.removeItem(TOKEN);
storage.removeItem('vnTokenMultimedia'); storage.removeItem(TOKEN_MULTIMEDIA);
storage.removeItem('vnTokenCreated'); storage.removeItem('vnTokenCreated');
storage.removeItem('vnTokenTtl'); storage.removeItem('vnTokenTtl');
} }
@ -96,9 +97,9 @@ export default class Token {
this.checking = true; this.checking = true;
const renewPeriod = Math.min(this.ttl, this.renewPeriod) * 1000; const renewPeriod = Math.min(this.ttl, this.renewPeriod) * 1000;
const maxDate = this.created.getTime() + renewPeriod; const maxDate = this.created.getTime() + renewPeriod;
const now = new Date(); const now = new Date().getTime();
if (now.getTime() <= maxDate) { if (now <= maxDate) {
this.checking = false; this.checking = false;
return; return;
} }
@ -106,7 +107,17 @@ export default class Token {
this.$http.post('VnUsers/renewToken') this.$http.post('VnUsers/renewToken')
.then(res => { .then(res => {
const token = res.data; const token = res.data;
this.set(token.id, now, token.ttl, this.remember); const tokenMultimedia =
localStorage.getItem(TOKEN_MULTIMEDIA)
?? sessionStorage.getItem(TOKEN_MULTIMEDIA);
return this.$http.post('VnUsers/renewToken', null, {
headers: {Authorization: tokenMultimedia}
})
.then(({data}) => {
const tokenMultimedia = data;
this.set(token.id, tokenMultimedia.id, new Date(), token.ttl, this.remember);
});
}) })
.finally(() => { .finally(() => {
this.checking = false; this.checking = false;
@ -119,4 +130,4 @@ export default class Token {
} }
Token.$inject = ['vnInterceptor', '$http', '$rootScope']; Token.$inject = ['vnInterceptor', '$http', '$rootScope'];
ngModule.service('vnToken', Token); ngModule.service(TOKEN, Token);

View File

@ -158,7 +158,7 @@ describe('InvoiceIn filter()', () => {
const result = await models.InvoiceIn.filter(ctx, {}, options); const result = await models.InvoiceIn.filter(ctx, {}, options);
expect(result.length).toEqual(4); expect(result.length).toEqual(5);
await tx.rollback(); await tx.rollback();
} catch (e) { } catch (e) {
@ -180,7 +180,7 @@ describe('InvoiceIn filter()', () => {
const result = await models.InvoiceIn.filter(ctx, {}, options); const result = await models.InvoiceIn.filter(ctx, {}, options);
expect(result.length).toEqual(6); expect(result.length).toEqual(5);
expect(result[0].isBooked).toBeTruthy(); expect(result[0].isBooked).toBeTruthy();
await tx.rollback(); await tx.rollback();

View File

@ -45,7 +45,7 @@ module.exports = Self => {
wh.name warehouseName, wh.name warehouseName,
tob.description observationDelivery, tob.description observationDelivery,
tob2.description observationDropOff, tob2.description observationDropOff,
tob2.id, tob2.id observationId,
a.street, a.street,
a.postalCode, a.postalCode,
a.city, a.city,

View File

@ -1,6 +1,6 @@
{ {
"name": "salix-back", "name": "salix-back",
"version": "24.18.0", "version": "24.20.0",
"author": "Verdnatura Levante SL", "author": "Verdnatura Levante SL",
"description": "Salix backend", "description": "Salix backend",
"license": "GPL-3.0", "license": "GPL-3.0",

View File

@ -1,11 +1,9 @@
SELECT SELECT io2.amount,
io2.amount,
io2.ref, io2.ref,
io2.issued, io2.issued,
ict.description ict.description
FROM invoiceOut io FROM invoiceOut io
JOIN invoiceCorrection ic ON ic.correctingFk = io.id JOIN invoiceCorrection ic ON ic.correctingFk = io.id
JOIN invoiceOut io2 ON io2.id = ic.correctedFk JOIN invoiceOut io2 ON io2.id = ic.correctedFk
LEFT JOIN ticket t ON t.refFk = io.ref
JOIN invoiceCorrectionType ict ON ict.id = ic.invoiceCorrectionTypeFk JOIN invoiceCorrectionType ict ON ict.id = ic.invoiceCorrectionTypeFk
WHERE io.ref = ? WHERE io.ref = ?