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

43 lines
1.0 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `stock`.`buyOut_refreshOrder`(
`vTable` VARCHAR(255),
`vId` INT)
BEGIN
DECLARE vExpired DATETIME;
SELECT SUBTIME(util.VN_NOW(), reserveTime)
INTO vExpired
FROM hedera.orderConfig LIMIT 1;
CREATE OR REPLACE TEMPORARY TABLE tLotStatus
ENGINE = MEMORY
SELECT lotFk,
o.confirmed OR r.created < vExpired OR r.amount <= 0 isExcluded,
TRUE isAlive
FROM hedera.orderRow r
JOIN hedera.`order` o ON o.id = r.orderFk
WHERE
(vTable = 'lot' AND r.lotFk = vId)
OR (vTable = 'order' AND o.id = vId);
CREATE OR REPLACE TEMPORARY TABLE tLotAlive
ENGINE = MEMORY
SELECT
oo.lotFk,
r.warehouseFk,
r.shipment dated,
r.itemFk,
r.amount quantity,
r.created,
FALSE isPicked
FROM tLotStatus oo
JOIN hedera.orderRow r ON r.lotFk = oo.lotFk
JOIN hedera.`order` o ON o.id = r.orderFk
WHERE oo.isAlive;
CALL buyOut_refresh(vTable, vId, 'orderRow');
DROP TEMPORARY TABLE tLotStatus, tLotAlive;
END$$
DELIMITER ;