
DROP function IF EXISTS `vn`.`buy_hasNotifyPassport`;

DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `vn`.`buy_hasNotifyPassport`(vBuyFk INT, vItemFk INT) RETURNS tinyint(1)
    READS SQL DATA
BEGIN
	DECLARE vHasPassport BOOL;
	DECLARE vIsAlreadySent BOOL;
	DECLARE vItemCategoryFk INT;
    SELECT id INTO vItemCategoryFk FROM itemCategory WHERE code = 'plant';
    
	SELECT COUNT(*) INTO vHasPassport
		FROM botanicExport be
            JOIN itemBotanical ib
				ON be.ediGenusFk = ib.genusFk
					AND IFNULL(be.ediSpecieFk, ib.specieFk) = ib.specieFk
					AND be.restriction = 'pasaporte fitosanitario'
			JOIN item i ON i.id = ib.itemFk
			JOIN itemType it ON it.id = i.typeFk
		WHERE ib.itemFk = vItemFk
			AND it.categoryFk = vItemCategoryFk;

	IF vHasPassport THEN
		SELECT COUNT(*) INTO vIsAlreadySent
			FROM mail m
				JOIN buy b ON b.id = vBuyFk
			WHERE m.`body` LIKE CONCAT('%', b.ektFk, '%')
            LIMIT 1;
	END IF;

	RETURN vHasPassport AND NOT vIsAlreadySent;
END$$

DELIMITER ;

