2024-01-15 11:31:03 +00:00
|
|
|
|
DELIMITER $$
|
2024-08-20 08:06:10 +00:00
|
|
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `cache`.`stock_refresh`(v_refresh BOOL)
|
2024-01-15 11:31:03 +00:00
|
|
|
|
proc: BEGIN
|
|
|
|
|
/**
|
|
|
|
|
* Crea o actualiza la cache con el disponible hasta el día de
|
|
|
|
|
* ayer. Esta cache es usada como base para otros procedimientos
|
|
|
|
|
* como el cálculo del visible o del ATP.
|
|
|
|
|
*
|
|
|
|
|
* @param v_refresh %TRUE para forzar el recálculo de la cache
|
|
|
|
|
**/
|
|
|
|
|
DECLARE v_calc INT;
|
|
|
|
|
DECLARE v_date_inv DATE;
|
|
|
|
|
DECLARE vCURDATE DATE;
|
|
|
|
|
DECLARE v_last_refresh DATETIME;
|
|
|
|
|
|
|
|
|
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
|
|
|
|
BEGIN
|
|
|
|
|
CALL cache_calc_unlock (v_calc);
|
|
|
|
|
RESIGNAL;
|
|
|
|
|
END;
|
|
|
|
|
|
|
|
|
|
CALL cache_calc_start (v_calc, v_refresh, 'stock', NULL);
|
|
|
|
|
|
|
|
|
|
IF !v_refresh
|
|
|
|
|
THEN
|
|
|
|
|
LEAVE proc;
|
|
|
|
|
END IF;
|
|
|
|
|
|
|
|
|
|
SET v_date_inv = vn.getInventoryDate();
|
|
|
|
|
SET vCURDATE = util.VN_CURDATE();
|
|
|
|
|
|
|
|
|
|
DELETE FROM stock;
|
|
|
|
|
|
|
|
|
|
INSERT INTO stock (item_id, warehouse_id, amount)
|
|
|
|
|
SELECT item_id, warehouse_id, SUM(amount) amount FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT itemFk AS item_id, warehouseFk AS warehouse_id, quantity AS amount
|
|
|
|
|
FROM vn.itemTicketOut
|
|
|
|
|
WHERE shipped >= v_date_inv AND shipped < vCURDATE
|
|
|
|
|
UNION ALL
|
|
|
|
|
SELECT itemFk ASitem_id, warehouseInFk AS warehouse_id, quantity AS amount
|
|
|
|
|
FROM vn.itemEntryIn
|
|
|
|
|
WHERE landed >= v_date_inv AND landed < vCURDATE AND isVirtualStock is FALSE
|
|
|
|
|
UNION ALL
|
|
|
|
|
SELECT itemFk AS item_id ,warehouseOutFk AS warehouse_id, quantity AS amount
|
|
|
|
|
FROM vn.itemEntryOut
|
|
|
|
|
WHERE shipped >= v_date_inv AND shipped < vCURDATE
|
|
|
|
|
) t
|
|
|
|
|
GROUP BY item_id, warehouse_id HAVING amount != 0;
|
|
|
|
|
|
|
|
|
|
CALL cache_calc_end (v_calc);
|
|
|
|
|
END$$
|
|
|
|
|
DELIMITER ;
|