salix/db/routines/stock/procedures/stock_sync.sql

35 lines
793 B
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `stock`.`stock_sync`()
BEGIN
/**
* Synchronizes all out of sync items. It can be called in parallel
* since it generates a lock for each item (and warehouse) synchronization
* process, see stock_syncItem().
*/
DECLARE vDone BOOL;
DECLARE vWarehouseFk INT;
DECLARE vItemFk INT;
DECLARE vItems CURSOR FOR
SELECT itemFk, warehouseFk FROM buyLot WHERE !isSync
UNION
SELECT itemFk, warehouseFk FROM buyOut WHERE !isSync;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
OPEN vItems;
itemLoop: LOOP
SET vDone = FALSE;
FETCH vItems INTO vItemFk, vWarehouseFk;
IF vDone THEN
LEAVE itemLoop;
END IF;
CALL stock_syncItem(vItemFk, vWarehouseFk, 0);
END LOOP;
CLOSE vItems;
END$$
DELIMITER ;