64 lines
1.4 KiB
MySQL
64 lines
1.4 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `srt`.`moving_clean`()
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Elimina movimientos por inactividad
|
||
|
*
|
||
|
*/
|
||
|
DECLARE vExpeditionFk INT;
|
||
|
DECLARE vBufferToFk INT;
|
||
|
DECLARE vBufferFromFk INT;
|
||
|
DECLARE done BOOL DEFAULT FALSE;
|
||
|
|
||
|
DECLARE cur CURSOR FOR
|
||
|
SELECT m.expeditionFk, m.bufferToFk, m.bufferFromFk
|
||
|
FROM srt.moving m
|
||
|
JOIN srt.config c
|
||
|
JOIN (SELECT bufferFk, SUM(isActive) hasBox
|
||
|
FROM srt.photocell
|
||
|
GROUP BY bufferFk) sub ON sub.bufferFk = m.bufferFromFk
|
||
|
WHERE m.created < TIMESTAMPADD(MINUTE, - c.movingMaxLife , util.VN_NOW())
|
||
|
AND NOT sub.hasBox;
|
||
|
|
||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||
|
|
||
|
OPEN cur;
|
||
|
|
||
|
bucle: LOOP
|
||
|
|
||
|
FETCH cur INTO vExpeditionFk, vBufferToFk, vBufferFromFk;
|
||
|
|
||
|
IF done THEN
|
||
|
LEAVE bucle;
|
||
|
END IF;
|
||
|
|
||
|
DELETE FROM srt.moving
|
||
|
WHERE expeditionFk = vExpeditionFk;
|
||
|
|
||
|
UPDATE srt.expedition e
|
||
|
JOIN srt.expeditionState es ON es.description = 'OUT'
|
||
|
SET
|
||
|
bufferFk = NULL,
|
||
|
`position` = NULL,
|
||
|
stateFk = es.id
|
||
|
WHERE e.id = vExpeditionFk;
|
||
|
|
||
|
UPDATE srt.expedition e
|
||
|
SET e.`position` = e.`position` - 1
|
||
|
WHERE e.bufferFk = vBufferFromFk
|
||
|
AND e.`position` > 0;
|
||
|
|
||
|
CALL vn.mail_insert(
|
||
|
'pako@verdnatura.es, carles@verdnatura.es',
|
||
|
NULL,
|
||
|
CONCAT('Moving_clean. Expedition: ', vExpeditionFk, ' estaba parada'),
|
||
|
CONCAT('Expedition: ', vExpeditionFk,' vBufferToFk: ', vBufferToFk)
|
||
|
);
|
||
|
|
||
|
END LOOP bucle;
|
||
|
|
||
|
CLOSE cur;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|