DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_get`(vParamFk INT)
	RETURNS int(11)
	NOT DETERMINISTIC
	READS SQL DATA
proc:BEGIN
	
	/* Devuelve el número de ticket o collection consultando en varias tablas posibles
	 * 
	 * @param vParamFk Número a validar
	 * @return vValidFk Identificador validado
	 */
	
	DECLARE vValidFk INT;

	-- Tabla vn.saleGroup
	SELECT s.ticketFk INTO vValidFk
		FROM vn.sale s
			JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id
			JOIN vn.saleGroup sg ON sg.id = sgd.saleGroupFk 
		WHERE sg.id = vParamFk
			AND sg.created > TIMESTAMPADD(WEEK,-1, util.VN_CURDATE())
		LIMIT 1;
	
	IF vValidFk THEN
	
		RETURN vValidFk;
	
		LEAVE proc;
	
	END IF;

	-- Tabla vn.collection
	SELECT c.id INTO vValidFk
		FROM vn.collection c 
		WHERE c.id = vParamFk
			AND c.created > TIMESTAMPADD(WEEK,-1, util.VN_CURDATE());
	
	IF vValidFk THEN
	
		RETURN vValidFk;
	
		LEAVE proc;
	
	END IF;

	-- Tabla vn.ticket
	SELECT t.id INTO vValidFk
		FROM vn.ticket t
		WHERE t.id = vParamFk
			AND t.shipped > TIMESTAMPADD(WEEK,-1, util.VN_CURDATE());
	
	IF vValidFk THEN
	
		RETURN vValidFk;
	
		LEAVE proc;
	
	END IF;

	RETURN NULL;
	
END$$
DELIMITER ;