DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_calculateStock`( vDated DATE ) BEGIN /** * Calculate the stock of the auction warehouse from the inventory date to vDated * * @param vDated Date to calculate the stock. * @return tmp.item, tmp.buyUltimate */ DECLARE vAuctionWarehouseFk INT; SELECT warehouseFk INTO vAuctionWarehouseFk FROM auctionConfig; CREATE OR REPLACE TEMPORARY TABLE tmp.item (UNIQUE INDEX i USING HASH (itemFk)) ENGINE = MEMORY SELECT itemFk, SUM(quantity) quantity FROM itemEntryIn WHERE landed = vDated AND vDated >= util.VN_CURDATE() AND warehouseInFk = vAuctionWarehouseFk AND NOT isVirtualStock GROUP BY itemFk HAVING quantity; CALL `cache`.stock_refresh(FALSE); INSERT INTO tmp.item (itemFk, quantity) SELECT item_id, amount FROM `cache`.stock WHERE warehouse_id = vAuctionWarehouseFk ON DUPLICATE KEY UPDATE quantity = tmp.item.quantity + VALUES(quantity); CALL buy_getUltimate(NULL, vAuctionWarehouseFk, vDated); END$$ DELIMITER ;