salix/db/routines/vn/procedures/item_multipleBuy.sql

37 lines
985 B
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_multipleBuy`(
vDate DATETIME,
vWarehouseFk INT
)
BEGIN
/**
* Updates the tmp.itemInventory table, adding the buy id.
*
* @param tmp.itemInventory(buy_id)
* @param vDate -> Date of the purchase operation.
* @param vWarehouseFk -> Identifier of the warehouse (warehouseId).
*/
ALTER TABLE tmp.itemInventory ADD IF NOT EXISTS buy_id INT;
CALL buy_getUltimate (NULL, vWarehouseFk, vDate);
CREATE OR REPLACE TEMPORARY TABLE tmp
(KEY (itemFk))
ENGINE = MEMORY
SELECT *
FROM (
SELECT itemFk, buyFk
FROM tmp.buyUltimate
ORDER BY (vWarehouseFk = warehouseFk) DESC, landing DESC
LIMIT 10000000000000000000
) t
GROUP BY itemFk;
UPDATE tmp.itemInventory ai
JOIN tmp t ON ai.id = t.itemFk
SET ai.buy_id = t.buyFk;
DROP TEMPORARY TABLE tmp, tmp.buyUltimate;
END$$
DELIMITER ;