DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingSale_addBySaleGroup`( vSaleGroupFk INT(11) ) BEGIN /** * Reserva cantidades con ubicaciones para el contenido de una preparación previa * a través del saleGroup * * @param vSaleGroupFk Identificador de saleGroup */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vSaleFk INT; DECLARE vSectorFk INT; DECLARE vSales CURSOR FOR SELECT s.id FROM saleGroupDetail sgd JOIN sale s ON sgd.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 sgd.saleGroupFk = vSaleGroupFk 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 ;