2025-02-19 13:46:55 +00:00
|
|
|
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
|
2025-02-25 09:49:58 +00:00
|
|
|
SELECT itemFk, warehouseFk FROM buyLot WHERE NOT isSync
|
2025-02-19 13:46:55 +00:00
|
|
|
UNION
|
2025-02-25 09:49:58 +00:00
|
|
|
SELECT itemFk, warehouseFk FROM buyOut WHERE NOT isSync;
|
2025-02-19 13:46:55 +00:00
|
|
|
|
|
|
|
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 ;
|