DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_closeByTicket`(IN vTicketFk int)
BEGIN
/**
 * Inserta el ticket en la tabla temporal
 * para ser cerrado.
 *
 * @param vTicketFk Id del ticket
 */
	DROP TEMPORARY TABLE IF EXISTS tmp.ticket_close;
	CREATE TEMPORARY TABLE tmp.ticket_close ENGINE = MEMORY (
		SELECT
			t.id AS ticketFk
		FROM ticket t
			JOIN agencyMode am ON am.id = t.agencyModeFk
			LEFT JOIN ticketState ts ON ts.ticketFk = t.id
			JOIN alertLevel al ON al.id = ts.alertLevel
		WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code != 'delivered'))
			AND t.id = vTicketFk
			AND t.refFk IS NULL
		GROUP BY t.id
    );

	CALL ticket_close();

	DROP TEMPORARY TABLE tmp.ticket_close;
END$$
DELIMITER ;