DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`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 vSectorFk INT; DECLARE vSales CURSOR FOR SELECT DISTINCT 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; SELECT sectorFk INTO vSectorFk FROM operator WHERE workerFk = account.myUser_getId(); OPEN vSales; l: LOOP SET vDone = FALSE; FETCH vSales INTO vSaleFk; IF vDone THEN LEAVE l; END IF; CALL itemShelvingSale_addBySale(vSaleFk, vSectorFk); END LOOP; CLOSE vSales; END$$ DELIMITER ;