64 lines
1.4 KiB
SQL
64 lines
1.4 KiB
SQL
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 ;
|