DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getWarnings`()
BEGIN
/**
 * Calcula las adventencias para un conjunto de tickets.
 * Agrupados por ticket
 *
 * @table tmp.sale_getWarnings(ticketFk) Identificadores de los tickets a calcular
 * @return tmp.ticket_warnings
 */
	CREATE OR REPLACE TEMPORARY TABLE tSaleWarnings (
		ticketFk INT(11),
		saleFk INT(11),
		isFragile INTEGER(1) DEFAULT 0,
		PRIMARY KEY (ticketFk, saleFk)
	) ENGINE = MEMORY;

	-- Fragile
	INSERT INTO tSaleWarnings(ticketFk, saleFk, isFragile)
		SELECT tt.ticketFk, s.id, TRUE
			FROM tmp.sale_getWarnings tt
				LEFT JOIN sale s ON s.ticketFk = tt.ticketFk
				LEFT JOIN item i ON i.id = s.itemFk
				LEFT JOIN itemType it  ON it.id = i.typeFk
				LEFT JOIN agencyMode am ON am.id = tt.agencyModeFk
				LEFT JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
			WHERE dm.code IN ('AGENCY')
				AND (it.isFragile OR i.isFragile);

	CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_warnings
		(PRIMARY KEY (ticketFk))
		ENGINE = MEMORY
		SELECT
			sw.ticketFk,
			MAX(sw.isFragile) AS isFragile
		FROM tSaleWarnings sw
			GROUP BY sw.ticketFk;

	DROP TEMPORARY TABLE
		tSaleWarnings;
END$$
DELIMITER ;
