DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`collection_get`(vWorkerFk INT) BEGIN /** * Obtiene colección del sacador si tiene líneas pendientes. * * @param vWorkerFk id del worker. * @table Devuelve tabla temporal con las colecciones pendientes */ DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN RESIGNAL; END; CREATE OR REPLACE TEMPORARY TABLE tmp.collection ENGINE = MEMORY SELECT c.id collectionFk, DATE(c.created) created, COUNT(DISTINCT tc.ticketFk) ticketTotalCount FROM collection c JOIN ticketCollection tc ON tc.collectionFk = c.id JOIN sale s ON s.ticketFk = tc.ticketFk JOIN ticketState ts ON ts.ticketFk = tc.ticketFk JOIN state s2 ON s2.id = ts.stateFk JOIN productionConfig pc JOIN vn.state ss ON ss.code = 'PREPARED' LEFT JOIN vn.saleTracking st ON st.saleFk = s.id AND st.stateFk = ss.id WHERE c.workerFk = vWorkerFk AND TIMESTAMPDIFF(HOUR, c.created , util.VN_NOW()) < pc.pendingCollectionsAge AND s.quantity AND s2.order < pc.pendingCollectionsOrder GROUP BY c.id HAVING COUNT(*) > COUNT(DISTINCT st.id); SELECT * FROM tmp.collection; END$$ DELIMITER ;