DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketMissed_List`(vTicketFk INT)
BEGIN

    DECLARE vParkingFk INT;
    DECLARE vParked DATETIME;
    DECLARE vLevel INT;
    DECLARE vCollectionFk INT;
    
    SELECT IFNULL(`level`,0), IFNULL(collectionFk,0) 
		INTO vLevel, vCollectionFk
		FROM vn.ticketCollection
        WHERE ticketFk = vTicketFk
        LIMIT 1;
        
	SELECT created, parkingFk 
		INTO vParked, vParkingFk
		FROM vn.ticketParking
        WHERE ticketFk = vTicketFk;
        
    SELECT tp.ticketFk, CONCAT(tc.collectionFk, ' - ', tc.level) coleccion, tp.created, p.code, am.name as Agencia
		FROM vn.ticketParking tp
        JOIN vn.parking p ON p.id = tp.parkingFk
        JOIN vn.sector sc ON sc.id = p.sectorFk
        LEFT JOIN vn.ticketCollection tc ON tc.ticketFk = tp.ticketFk
        JOIN vn.ticketStateToday tst ON tst.ticketFk = tp.ticketFk
        JOIN vn.ticket t ON t.id = tp.ticketFk
        JOIN vn.zone z ON z.id = t.zoneFk
        JOIN vn.agencyMode am ON am.id = z.agencyModeFk
        JOIN vn.state s ON s.id = tst.state
        WHERE (s.alertLevel < 2
			AND tp.parkingFk = vParkingFk
            AND sc.isPackagingArea
            AND (
					(
						( IFNULL(tc.collectionFk,-1) != IFNULL(@vCollectionFk,0) AND tp.created < vParked )
					OR
						( tc.collectionFk = vCollectionFk AND LEFT(tc.level,1) < LEFT(vLevel,1) )
					)
                )) -- Etiquetas que no se han escaneado y ya estamos con una posterior
			OR
            (s.alertLevel > 1
				AND tp.parkingFk = vParkingFk
                AND sc.isPackagingArea
                AND tp.created < vParked
                AND t.packages <=> 0);
        
END$$
DELIMITER ;