37 lines
1.1 KiB
MySQL
37 lines
1.1 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buyUltimate`(vWarehouseFk SMALLINT, vDated DATE)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Calcula las últimas compras realizadas hasta una fecha
|
||
|
*
|
||
|
* @param vWarehouseFk Id del almacén
|
||
|
* @param vDated Compras hasta fecha
|
||
|
* @return tmp.buyUltimate
|
||
|
*/
|
||
|
CALL cache.last_buy_refresh (FALSE);
|
||
|
|
||
|
DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate;
|
||
|
CREATE TEMPORARY TABLE tmp.buyUltimate
|
||
|
(PRIMARY KEY (itemFk, warehouseFk),
|
||
|
INDEX(itemFk))
|
||
|
ENGINE = MEMORY
|
||
|
SELECT item_id itemFk, buy_id buyFk, warehouse_id warehouseFk, landing
|
||
|
FROM cache.last_buy
|
||
|
WHERE warehouse_id = vWarehouseFk OR vWarehouseFk IS NULL;
|
||
|
|
||
|
CALL buyUltimateFromInterval(vWarehouseFk, util.VN_CURDATE(), vDated);
|
||
|
|
||
|
REPLACE INTO tmp.buyUltimate
|
||
|
SELECT itemFk, buyFk, warehouseFk, landed landing
|
||
|
FROM tmp.buyUltimateFromInterval
|
||
|
WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
|
||
|
AND landed <= vDated;
|
||
|
|
||
|
INSERT IGNORE INTO tmp.buyUltimate
|
||
|
SELECT itemFk, buyFk, warehouseFk, landed landing
|
||
|
FROM tmp.buyUltimateFromInterval
|
||
|
WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL)
|
||
|
AND landed > vDated;
|
||
|
END$$
|
||
|
DELIMITER ;
|