7253-devToTest_2418 #2350

Merged
alexm merged 320 commits from 7253-devToTest_2418 into test 2024-04-23 08:02:46 +00:00
52 changed files with 198 additions and 490 deletions
Showing only changes of commit 91608b9053 - Show all commits

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

@ -2616,16 +2616,32 @@ INSERT INTO `vn`.`invoiceInIntrastat` (`invoiceInFk`, `net`, `intrastatFk`, `amo
(2, 16.10, 6021010, 25.00, 80, 5);
UPDATE `vn`.`invoiceIn`
SET isBooked = TRUE
WHERE id IN (2, 5, 7, 8, 9, 10);
SET isBooked = TRUE
WHERE id IN (2, 5, 7, 8, 9, 10);
INSERT INTO `vn`.`ticketRecalc`(`ticketFk`)
SELECT t.id
FROM vn.ticket t
LEFT JOIN vn.ticketRecalc tr ON tr.ticketFk = t.id
WHERE tr.ticketFk IS NULL;
DELIMITER $$
CREATE PROCEDURE `tmp`.`ticket_recalc`()
BEGIN
DECLARE vDone BOOL;
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`
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

@ -2,23 +2,15 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`order_afterUpdate`
AFTER UPDATE ON `order`
FOR EACH ROW
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
-- Fallo que se actualiza no se sabe como tickets en este cliente
CALL vn.mail_insert(
'jgallego@verdnatura.es',
'noreply@verdnatura.es',
'Actualizada order al address 2850',
CONCAT(account.myUser_getName(), ' ha creado la order ',NEW.id)
);
END IF;
BEGIN
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
CALL vn.mail_insert(
'jgallego@verdnatura.es',
'noreply@verdnatura.es',
'Actualizada order al address 2850',
CONCAT(account.myUser_getName(), ' ha creado la order ',NEW.id)
);
END IF;
END$$
DELIMITER ;

View File

@ -1,8 +1,8 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`inbound_addPick`(
vSelf INT,
vOutboundFk INT,
vQuantity INT
vOutboundFk INT,
vQuantity INT
)
BEGIN
INSERT INTO inboundPick

View File

@ -1,9 +1,9 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`inbound_removePick`(
vSelf INT,
vOutboundFk INT,
vQuantity INT,
vTotalQuantity INT
vOutboundFk INT,
vQuantity INT,
vTotalQuantity INT
)
BEGIN
IF vQuantity < vTotalQuantity THEN

View File

@ -1,9 +1,9 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`inbound_requestQuantity`(
vSelf INT,
vRequested INT,
vDated DATETIME,
OUT vSupplied INT)
vRequested INT,
vDated DATETIME,
OUT vSupplied INT)
BEGIN
/**
* Disassociates inbound picks after the given date until the
@ -29,7 +29,7 @@ BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
SET vSupplied = 0;
OPEN vPicks;
@ -45,7 +45,7 @@ BEGIN
SET vPickGranted = LEAST(vRequested - vSupplied, vPickQuantity);
SET vSupplied = vSupplied + vPickGranted;
CALL inbound_removePick(vSelf, vOutboundFk, vPickGranted, vPickQuantity);
UPDATE outbound
SET isSync = FALSE,
lack = lack + vPickGranted

View File

@ -23,7 +23,7 @@ BEGIN
SELECT id, lack, lack < quantity
FROM outbound
WHERE warehouseFk = vWarehouse
AND itemFk = vItem
AND itemFk = vItem
AND dated >= vDated
AND (vExpired IS NULL OR dated < vExpired)
ORDER BY dated, created;
@ -51,8 +51,8 @@ BEGIN
END IF;
SET vSupplied = LEAST(vAvailable, vLack);
IF vSupplied > 0 THEN
IF vSupplied > 0 THEN
SET vAvailable = vAvailable - vSupplied;
UPDATE outbound
SET lack = lack - vSupplied
@ -64,8 +64,8 @@ BEGIN
SET vSupplied = vSupplied + vSuppliedFromRequest;
SET vAvailable = vAvailable - vSuppliedFromRequest;
END IF;
IF vSupplied > 0 THEN
IF vSupplied > 0 THEN
CALL inbound_addPick(vSelf, vOutboundFk, vSupplied);
END IF;

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

@ -10,7 +10,7 @@ BEGIN
DO RELEASE_LOCK('stock.log_sync');
RESIGNAL;
END;
IF !GET_LOCK('stock.log_sync', 30) THEN
CALL util.throw('Lock timeout exceeded');
END IF;

View File

@ -1,7 +1,7 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_refreshBuy`(
`vTableName` VARCHAR(255),
`vTableId` INT)
`vTableName` VARCHAR(255),
`vTableId` INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tValues;
CREATE TEMPORARY TABLE tValues
@ -11,7 +11,7 @@ BEGIN
e.id entryFk,
t.id travelFk,
b.itemFk,
e.isRaid,
e.isRaid,
ADDTIME(t.shipped,
IFNULL(t.shipmentHour, '00:00:00')) shipped,
t.warehouseOutFk,
@ -24,7 +24,7 @@ BEGIN
ABS(b.quantity) quantity,
b.created,
b.quantity > 0 isIn,
t.shipped < vn.getInventoryDate() lessThanInventory
t.shipped < vn.getInventoryDate() lessThanInventory
FROM vn.buy b
JOIN vn.entry e ON e.id = b.entryFk
JOIN vn.travel t ON t.id = e.travelFk
@ -52,7 +52,7 @@ BEGIN
quantity,
IF(isIn, isReceived, isDelivered) AND !isRaid
FROM tValues
WHERE isIn OR !lessThanInventory;
WHERE isIn OR !lessThanInventory;
REPLACE INTO outbound (
tableName, tableId, warehouseFk, dated,
@ -67,7 +67,7 @@ BEGIN
quantity,
IF(isIn, isDelivered, isReceived) AND !isRaid
FROM tValues
WHERE !isIn OR !lessThanInventory;
WHERE !isIn OR !lessThanInventory;
DROP TEMPORARY TABLE tValues;
END$$

View File

@ -1,13 +1,13 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_refreshOrder`(
`vTableName` VARCHAR(255),
`vTableId` INT)
`vTableName` VARCHAR(255),
`vTableId` INT)
BEGIN
DECLARE vExpireTime INT DEFAULT 20;
DECLARE vExpired DATETIME DEFAULT TIMESTAMPADD(MINUTE, -vExpireTime, util.VN_NOW());
DROP TEMPORARY TABLE IF EXISTS tValues;
CREATE TEMPORARY TABLE tValues
CREATE TEMPORARY TABLE tValues
ENGINE = MEMORY
SELECT
r.id rowFk,
@ -23,24 +23,24 @@ BEGIN
OR (vTableName = 'order' AND o.id = vTableId)
OR (vTableName = 'orderRow' AND r.id = vTableId)
)
AND !o.confirmed
AND r.shipment >= vn.getInventoryDate()
AND !o.confirmed
AND r.shipment >= vn.getInventoryDate()
AND r.created >= vExpired
AND r.amount != 0;
REPLACE INTO outbound (
tableName, tableId, warehouseFk, dated,
itemFk, created, expired, quantity
itemFk, created, expired, quantity
)
SELECT 'orderRow',
SELECT 'orderRow',
rowFk,
warehouseFk,
shipped,
itemFk,
created,
TIMESTAMPADD(MINUTE, vExpireTime, created),
TIMESTAMPADD(MINUTE, vExpireTime, created),
quantity
FROM tValues;
FROM tValues;
DROP TEMPORARY TABLE tValues;
END$$

View File

@ -1,10 +1,10 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_refreshSale`(
`vTableName` VARCHAR(255),
`vTableId` INT)
`vTableName` VARCHAR(255),
`vTableId` INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tValues;
CREATE TEMPORARY TABLE tValues
CREATE TEMPORARY TABLE tValues
ENGINE = MEMORY
SELECT
m.id saleFk,
@ -14,7 +14,7 @@ BEGIN
t.shipped,
ABS(m.quantity) quantity,
m.created,
TIMESTAMPADD(DAY, tp.life, t.shipped) expired,
TIMESTAMPADD(DAY, tp.life, t.shipped) expired,
m.quantity < 0 isIn,
m.isPicked OR s.alertLevel > 1 isPicked
FROM vn.sale m
@ -32,33 +32,33 @@ BEGIN
REPLACE INTO inbound (
tableName, tableId, warehouseFk, dated,
itemFk, expired, quantity, isPicked
itemFk, expired, quantity, isPicked
)
SELECT 'sale',
SELECT 'sale',
saleFk,
warehouseFk,
shipped,
itemFk,
expired,
expired,
quantity,
isPicked
FROM tValues
WHERE isIn;
isPicked
FROM tValues
WHERE isIn;
REPLACE INTO outbound (
tableName, tableId, warehouseFk, dated,
itemFk, created, quantity, isPicked
itemFk, created, quantity, isPicked
)
SELECT 'sale',
SELECT 'sale',
saleFk,
warehouseFk,
shipped,
itemFk,
created,
quantity,
isPicked
FROM tValues
WHERE !isIn;
isPicked
FROM tValues
WHERE !isIn;
DROP TEMPORARY TABLE tValues;
END$$

View File

@ -7,7 +7,7 @@ BEGIN
* @param vSelf The outbound reference
*/
DECLARE vDated DATETIME;
DECLARE vItem INT;
DECLARE vItem INT;
DECLARE vWarehouse INT;
DECLARE vLack INT;
DECLARE vSupplied INT;
@ -21,7 +21,7 @@ BEGIN
SELECT id, available, available < quantity
FROM inbound
WHERE warehouseFk = vWarehouse
AND itemFk = vItem
AND itemFk = vItem
AND dated <= vDated
AND (expired IS NULL OR expired > vDated)
ORDER BY dated;

View File

@ -1,16 +1,16 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`visible_log`(
vIsPicked BOOL,
vWarehouseFk INT,
vItemFk INT,
vQuantity INT
vWarehouseFk INT,
vItemFk INT,
vQuantity INT
)
proc: BEGIN
IF !vIsPicked THEN
LEAVE proc;
END IF;
INSERT INTO visible
INSERT INTO visible
SET itemFk = vItemFk,
warehouseFk = vWarehouseFk,
quantity = vQuantity

View File

@ -12,11 +12,11 @@ BEGIN
DELETE FROM inboundPick
WHERE inboundFk = OLD.id;
CALL visible_log(
CALL visible_log(
OLD.isPicked,
OLD.warehouseFk,
OLD.itemFk,
-OLD.quantity
OLD.warehouseFk,
OLD.itemFk,
-OLD.quantity
);
END$$
DELIMITER ;

View File

@ -4,12 +4,12 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`inbound_beforeInse
FOR EACH ROW
BEGIN
SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE();
CALL visible_log(
CALL visible_log(
NEW.isPicked,
NEW.warehouseFk,
NEW.itemFk,
NEW.quantity
NEW.warehouseFk,
NEW.itemFk,
NEW.quantity
);
END$$
DELIMITER ;

View File

@ -12,11 +12,11 @@ BEGIN
DELETE FROM inboundPick
WHERE outboundFk = OLD.id;
CALL visible_log(
CALL visible_log(
OLD.isPicked,
OLD.warehouseFk,
OLD.itemFk,
OLD.quantity
OLD.warehouseFk,
OLD.itemFk,
OLD.quantity
);
END$$
DELIMITER ;

View File

@ -5,12 +5,12 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`outbound_beforeIns
BEGIN
SET NEW.lack = NEW.quantity;
SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE();
CALL visible_log(
CALL visible_log(
NEW.isPicked,
NEW.warehouseFk,
NEW.itemFk,
-NEW.quantity
NEW.warehouseFk,
NEW.itemFk,
-NEW.quantity
);
END$$
DELIMITER ;

View File

@ -1,6 +1,7 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`binlogQueue_getDelay`(vCode VARCHAR(255))
RETURNS BIGINT
READS SQL DATA
NOT DETERMINISTIC
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

@ -5,36 +5,32 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`address_afterUpdate`
BEGIN
-- Recargos de equivalencia distintos implican facturacion por consignatario
IF NEW.isEqualizated != OLD.isEqualizated THEN
IF
IF
(SELECT COUNT(*) FROM
(
SELECT DISTINCT (isEqualizated = FALSE) as Equ
FROM address
FROM address
WHERE clientFk = NEW.clientFk
) t1
) > 1
THEN
UPDATE client
THEN
UPDATE client
SET hasToInvoiceByAddress = TRUE
WHERE id = NEW.clientFk;
END IF;
END IF;
IF NEW.isDefaultAddress AND NEW.isActive = FALSE THEN
CALL util.throw ('Cannot desactivate the default address');
END IF;
IF NOT (NEW.isEqualizated <=> OLD.isEqualizated) THEN
INSERT IGNORE INTO ticketRecalc (ticketFk)
SELECT id FROM ticket t
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
UPDATE client
IF (NEW.clientFk <> OLD.clientFk
OR NEW.isActive <> OLD.isActive
OR NOT (NEW.provinceFk <=> OLD.provinceFk))
AND (SELECT client_hasDifferentCountries(NEW.clientFk)) THEN
UPDATE client
SET hasToInvoiceByAddress = TRUE
WHERE id = NEW.clientFk;
END IF;
END IF;
END$$
DELIMITER ;

View File

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

View File

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

View File

@ -12,14 +12,6 @@ trig: BEGIN
LEAVE trig;
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);
SELECT w.isBuyerToBeEmailed, t.landed

View File

@ -4,20 +4,13 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_afterUpdate`
FOR EACH ROW
BEGIN
IF !(NEW.defaultAddressFk <=> OLD.defaultAddressFk) THEN
UPDATE `address` SET isDefaultAddress = 0
UPDATE `address` SET isDefaultAddress = FALSE
WHERE clientFk = NEW.id;
UPDATE `address` SET isDefaultAddress = 1
WHERE id = NEW.defaultAddressFk;
UPDATE `address` SET isDefaultAddress = TRUE
WHERE id = NEW.defaultAddressFk;
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
UPDATE account.`user`
SET active = FALSE

View File

@ -8,7 +8,5 @@ BEGIN
`changedModel` = 'Entry',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
CALL travel_requestRecalc(OLD.travelFk);
END$$
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,24 +3,12 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_afterUpdate`
AFTER UPDATE ON `entry`
FOR EACH ROW
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
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
SELECT b.id
FROM buy b
WHERE b.entryFk = NEW.id;
CALL buy_checkItem();
END IF;
END$$

View File

@ -12,9 +12,6 @@ BEGIN
`changedModelId` = OLD.id,
`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.user_getMysqlRole(vUserRole) INTO vUserRole;

View File

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

View File

@ -6,24 +6,6 @@ BEGIN
DECLARE vIsToSendMail BOOL;
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
UPDATE ticketRequest SET ticketFk = NEW.ticketFk
WHERE saleFk = NEW.id;

View File

@ -8,8 +8,5 @@ BEGIN
`changedModel` = 'TicketService',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
CALL ticket_requestRecalc(OLD.ticketFk);
END$$
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`
FOR EACH ROW
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
UPDATE expedition
UPDATE expedition
SET hasNewRoute = TRUE
WHERE ticketFk = NEW.id;
END IF;
END$$
DELIMITER ;

View File

@ -3,10 +3,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travel_afterUpdate`
AFTER UPDATE ON `travel`
FOR EACH ROW
BEGIN
CALL stock.log_add('travel', NEW.id, OLD.id);
IF NOT(NEW.shipped <=> OLD.shipped) THEN
UPDATE entry
UPDATE entry
SET commission = entry_getCommission(travelFk, currencyFk,supplierFk)
WHERE travelFk = NEW.id;
END IF;
@ -15,11 +13,11 @@ BEGIN
IF (SELECT hasWeightVolumetric FROM agencyMode WHERE id = NEW.agencyModeFk) THEN
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
SELECT b.id
FROM entry e
FROM entry e
JOIN buy b ON b.entryFk = e.id
JOIN item i ON i.id = b.itemFk
WHERE e.travelFk = NEW.id;
CALL buy_checkItem();
END IF;
END IF;

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;