78 lines
1.9 KiB
SQL
78 lines
1.9 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_moveRaids`()
|
|
BEGIN
|
|
/**
|
|
* Desplaza los travels en el futuro y avisa a los compradores
|
|
*
|
|
*/
|
|
DECLARE vDone BOOL DEFAULT FALSE;
|
|
DECLARE vBuyerEmail VARCHAR(40);
|
|
DECLARE vTravelLink TEXT;
|
|
DECLARE vMailBody TEXT;
|
|
DECLARE vDaysBetweenDates INT;
|
|
DECLARE vSubject VARCHAR(30);
|
|
|
|
DECLARE vTravels CURSOR FOR
|
|
SELECT GROUP_CONCAT(DISTINCT travelLink ORDER BY id SEPARATOR '\n\r'),
|
|
buyerEmail
|
|
FROM tTravelToMove
|
|
GROUP BY buyerEmail;
|
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
|
|
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
|
BEGIN
|
|
ROLLBACK;
|
|
RESIGNAL;
|
|
END;
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tTravelToMove
|
|
WITH travels AS (
|
|
SELECT id,
|
|
CONCAT('https://salix.verdnatura.es/#!/travel/', id,'/summary') travelLink,
|
|
util.VN_CURDATE() + INTERVAL daysInForward DAY newLanded,
|
|
util.VN_CURDATE() - INTERVAL DATEDIFF(landed, shipped) + daysInForward DAY newShipped
|
|
FROM vn.travel
|
|
WHERE isRaid
|
|
AND daysInForward
|
|
)SELECT t.id,
|
|
t.travelLink,
|
|
t.newLanded,
|
|
t.newShipped,
|
|
CONCAT(u.name, '@verdnatura.es') buyerEmail
|
|
FROM travels t
|
|
STRAIGHT_JOIN vn.entry e ON e.travelFk = t.id
|
|
JOIN vn.buy b ON b.entryFk = e.id
|
|
JOIN vn.item i ON i.id = b.itemFk
|
|
JOIN vn.itemType it ON it.id = i.typeFk
|
|
JOIN account.user u ON u.id = it.workerFk
|
|
GROUP BY t.id;
|
|
|
|
START TRANSACTION;
|
|
|
|
UPDATE travel tr
|
|
JOIN tTravelToMove ttm ON ttm.id = tr.id
|
|
SET tr.landed = ttm.newLanded,
|
|
tr.shipped = ttm.newShipped;
|
|
|
|
OPEN vTravels;
|
|
|
|
l: LOOP
|
|
SET vDone = FALSE;
|
|
FETCH vTravels INTO vTravelLink, vBuyerEmail;
|
|
|
|
IF vDone THEN
|
|
LEAVE l;
|
|
END IF;
|
|
|
|
SET vSubject = 'Cambio de fecha en Redadas',
|
|
vMailBody = CONCAT('Se ha movido los siguientes travels: \n\r ', vTravelLink);
|
|
|
|
CALL mail_insert(vBuyerEmail, 'noreply@verdnatura.es', vSubject, vMailBody);
|
|
END LOOP;
|
|
CLOSE vTravels;
|
|
COMMIT;
|
|
DROP TEMPORARY TABLE tTravelToMove;
|
|
END$$
|
|
DELIMITER ;
|