fix: refs #4409 clean frozen sales and lost reserves
gitea/salix/pipeline/pr-dev There was a failure building this commit
Details
gitea/salix/pipeline/pr-dev There was a failure building this commit
Details
This commit is contained in:
parent
5e630562ce
commit
7049933c6e
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `stock`.`stock_clean`
|
||||
ON SCHEDULE EVERY 60 SECOND
|
||||
STARTS '2025-01-01 00:00:00.000'
|
||||
ON COMPLETION PRESERVE
|
||||
ENABLE
|
||||
DO CALL stock_clean$$
|
||||
DELIMITER ;
|
|
@ -1,8 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` EVENT `stock`.`stock_sync`
|
||||
ON SCHEDULE EVERY 5 SECOND
|
||||
STARTS '2017-06-27 17:15:02.000'
|
||||
ON COMPLETION NOT PRESERVE
|
||||
STARTS '2025-01-01 00:00:00.000'
|
||||
ON COMPLETION PRESERVE
|
||||
DISABLE
|
||||
DO CALL stock_sync$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -5,13 +5,15 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `stock`.`buyOut_refreshSale
|
|||
BEGIN
|
||||
DECLARE vAliveDate DATE;
|
||||
|
||||
SET vAliveDate = CURDATE() - INTERVAL 1 MONTH;
|
||||
SELECT util.VN_CURDATE() - INTERVAL saleLife MONTH
|
||||
INTO vAliveDate
|
||||
FROM config LIMIT 1;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tLotStatus
|
||||
ENGINE = MEMORY
|
||||
SELECT lotFk,
|
||||
s.quantity < 0 isExcluded,
|
||||
t.landed >= vAliveDate isAlive
|
||||
t.shipped >= vAliveDate isAlive
|
||||
FROM vn.sale s
|
||||
JOIN vn.ticket t ON t.id = s.ticketFk
|
||||
WHERE
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
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 ;
|
|
@ -3,7 +3,6 @@ RENAME TABLE IF EXISTS stock.outbound TO stock.buyOut;
|
|||
ALTER TABLE stock.buyOut
|
||||
CHANGE tableName source enum('buy','sale','orderRow') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
|
||||
CHANGE id outFk int(10) UNSIGNED NOT NULL,
|
||||
DROP INDEX source,
|
||||
DROP COLUMN tableId,
|
||||
DROP INDEX expired,
|
||||
DROP COLUMN expired;
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
CREATE TABLE stock.config (
|
||||
id INT UNSIGNED auto_increment NOT NULL,
|
||||
saleLife INT UNSIGNED NOT NULL COMMENT 'Maximum sales cache lifetime in days',
|
||||
CONSTRAINT config_pk PRIMARY KEY (id)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb3
|
||||
COLLATE=utf8mb3_general_ci;
|
||||
|
||||
INSERT INTO stock.config (id, saleLife)
|
||||
VALUES (1, 90);
|
Loading…
Reference in New Issue