DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE 
	`vn`.`itemShelvingSale_reserveBySectorCollection`(vSectorCollectionFk INT(11))
BEGIN
/**
 * Reserva cantidades con ubicaciones para el contenido de una preparación previa
 * de la cual ya tiene generada la asociación del saleGroup con sectorCollection
 *
 * @param vSectorCollectionFk Identificador de sectorCollection
 */
	DECLARE vHasSales BOOL;

	CREATE OR REPLACE TEMPORARY TABLE tmp.sale
		(INDEX(saleFk))
		ENGINE = MEMORY
		SELECT s.id saleFk, str.workerFk userFK
			FROM sectorCollectionSaleGroup sc
				JOIN saleGroupDetail sg ON sg.saleGroupFk = sc.saleGroupFk
				JOIN sale s ON sg.saleFk = s.id
				JOIN saleTracking str ON str.saleFk = s.id
				JOIN `state` st ON st.id = str.stateFk
					AND st.code = 'PREVIOUS_PREPARATION'
				LEFT JOIN itemShelvingSale iss ON iss.saleFk = s.id
			WHERE sc.sectorCollectionFk = vSectorCollectionFk
				AND str.workerFk = account.myUser_getId()
				AND iss.id IS NULL;

	SELECT COUNT(*)INTO vHasSales
		FROM tmp.sale;

	IF vHasSales THEN 
		CALL itemShelvingSale_reserve();
	ELSE
		CALL util.throw ('There are not sales to reserve');
	END IF;
END$$
DELIMITER ;
