DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE 
	`vn`.`itemShelvingSale_addBySectorCollection`(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 vDone BOOL DEFAULT FALSE;
	DECLARE vSaleFk INT;
	DECLARE vSales CURSOR FOR 
		SELECT s.id
			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;

	DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;

	OPEN vSales;
	l: LOOP
		SET vDone = FALSE;
		FETCH vSales INTO vSaleFk;

		IF vDone THEN
			LEAVE l;
		END IF;

		CALL itemShelvingSale_addBySale(vSaleFk);
	END LOOP;
	CLOSE vSales;
END$$
DELIMITER ;