46 lines
1.2 KiB
MySQL
46 lines
1.2 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`last_buy_refresh`(vRefresh BOOL)
|
||
|
proc: BEGIN
|
||
|
/**
|
||
|
* Crea o actualiza la cache con la última compra y fecha de cada
|
||
|
* artículo hasta ayer. Para obtener la última compra hasta una fecha
|
||
|
* determinada utilizar el procedimiento vn.buyUltimate().
|
||
|
*
|
||
|
* @param vRefresh %TRUE para forzar el recálculo de la cache
|
||
|
*/
|
||
|
DECLARE vCalc INT;
|
||
|
DECLARE started DATE;
|
||
|
DECLARE ended DATE;
|
||
|
DECLARE vLastRefresh DATE;
|
||
|
|
||
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||
|
BEGIN
|
||
|
CALL cache_calc_unlock (vCalc);
|
||
|
RESIGNAL;
|
||
|
END;
|
||
|
|
||
|
CALL cache_calc_start (vCalc, vRefresh, 'last_buy', NULL);
|
||
|
|
||
|
IF !vRefresh
|
||
|
THEN
|
||
|
LEAVE proc;
|
||
|
END IF;
|
||
|
|
||
|
-- TODO: ¿Se puede usar la fecha del ultimo inventario?
|
||
|
SELECT inventoried INTO started FROM vn.config LIMIT 1;
|
||
|
SET ended = util.VN_CURDATE(); -- TIMESTAMPADD(DAY, -1, util.VN_CURDATE());
|
||
|
|
||
|
CALL vn.buyUltimateFromInterval(NULL, started, ended);
|
||
|
|
||
|
DELETE FROM last_buy;
|
||
|
|
||
|
INSERT INTO last_buy (item_id, warehouse_id, buy_id, landing)
|
||
|
SELECT itemFk, warehouseFk, buyFk, landed
|
||
|
FROM tmp.buyUltimateFromInterval;
|
||
|
|
||
|
DROP TEMPORARY TABLE tmp.buyUltimateFromInterval;
|
||
|
|
||
|
CALL cache_calc_end (vCalc);
|
||
|
END$$
|
||
|
DELIMITER ;
|