salix/db/routines/vn2008/procedures/item_buy.sql

33 lines
992 B
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`item_buy`(IN v_wh TINYINT, IN v_date DATETIME)
BEGIN
DECLARE date_inv DATE;
ALTER TABLE item
ADD buy_id INT UNSIGNED;
IF v_date < (SELECT vn.getInventoryDate()) THEN
SELECT MIN(landing) INTO date_inv FROM travel t INNER JOIN Entradas e ON e.travel_id = t.id
WHERE warehouse_id_out = 13 AND landing <= v_date;
ELSE
SET date_inv = vn.getInventoryDate();
END IF;
UPDATE item i INNER JOIN (
SELECT * FROM (
SELECT c.Id_Article item_id, c.Id_Compra id
FROM Compres c INNER JOIN Entradas e USING(Id_Entrada)
INNER JOIN travel t ON t.id = e.travel_id
WHERE t.landing BETWEEN date_inv AND v_date
AND c.Novincular = FALSE
AND c.Tarifa2 >= 0
ORDER BY v_wh = t.warehouse_id DESC, t.landing DESC
LIMIT 10000000000000000000
) t
GROUP BY item_id
) t
ON i.id = t.item_id
SET i.buy_id = t.id;
CREATE INDEX buy USING HASH ON item (buy_id);
END$$
DELIMITER ;