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

53 lines
1.1 KiB
MySQL
Raw Normal View History

DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `stock`.`stock_clean`()
BEGIN
/**
* Cleans current time dependent cache records.
*/
DECLARE vExpired DATETIME;
DECLARE vAliveDate DATE;
-- Expired order reserves
SELECT SUBTIME(util.VN_NOW(), reserveTime)
INTO vExpired
FROM hedera.orderConfig LIMIT 1;
CREATE OR REPLACE TEMPORARY TABLE tOutDelete
SELECT outFk FROM buyOut
WHERE source = 'orderRow'
AND created < vExpired;
START TRANSACTION;
UPDATE buyLot l
JOIN buyPick p ON p.lotFk = l.lotFk
JOIN tOutDelete od ON od.outFk = p.outFk
SET l.isSync = FALSE,
l.available = l.available + p.quantity;
DELETE p FROM buyPick p
JOIN tOutDelete od USING(outFk);
COMMIT;
-- Frozen old sales
SELECT util.VN_CURDATE() - INTERVAL saleLife MONTH
INTO vAliveDate
FROM config LIMIT 1;
CREATE OR REPLACE TEMPORARY TABLE tOutDelete
SELECT outFk FROM buyOut
WHERE source = 'sale'
AND dated < vAliveDate;
DELETE p FROM buyPick p
JOIN tOutDelete od USING(outFk);
-- Clean
DROP TEMPORARY TABLE tOutDelete;
END$$
DELIMITER ;