53 lines
1.1 KiB
SQL
53 lines
1.1 KiB
SQL
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 ;
|