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