DROP PROCEDURE IF EXISTS `vn`.`ticket_getWarnings`;

DELIMITER $$
$$
CREATE 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
 */
	DROP TEMPORARY TABLE IF EXISTS tmp.sale_warnings;
	CREATE TEMPORARY TABLE tmp.sale_warnings (
		ticketFk INT(11),
		saleFk INT(11),
		isFragile INTEGER(1) DEFAULT 0,
		PRIMARY KEY (ticketFk, saleFk)
	) ENGINE = MEMORY;

	-- Frágil
	INSERT INTO tmp.sale_warnings(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 itemCategory ic ON ic.id = it.categoryFk
				LEFT JOIN agencyMode am ON am.id = tt.agencyModeFk
				LEFT JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
			WHERE dm.code IN ('AGENCY')
				AND (ic.code = 'plant' OR it.isFragile);

	DROP TEMPORARY TABLE IF EXISTS tmp.ticket_warnings;
	CREATE TEMPORARY TABLE tmp.ticket_warnings
	(PRIMARY KEY (ticketFk))
	ENGINE = MEMORY
	SELECT
		sw.ticketFk,
		MAX(sw.isFragile)            AS isFragile
	FROM tmp.sale_warnings sw
		GROUP BY sw.ticketFk;

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