37 lines
1.4 KiB
MySQL
37 lines
1.4 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`compresTriggerBeforeUpdate`(vOldEntrada INT, vNewEntrada INT, oldItem INT,
|
||
|
newItem INT, newNoVincular BOOLEAN, newCompra INT)
|
||
|
BEGIN
|
||
|
DECLARE newWarehouse INTEGER;
|
||
|
DECLARE hasToRecalculate BOOLEAN;
|
||
|
|
||
|
IF newNoVincular = FALSE THEN
|
||
|
IF oldItem <> newItem OR vOldEntrada <> vNewEntrada THEN
|
||
|
SELECT Id_Compra INTO hasToRecalculate FROM travel t
|
||
|
JOIN Entradas e ON e.travel_id = t.id
|
||
|
JOIN vn.lastBuy lb ON lb.id = newCompra
|
||
|
WHERE e.Id_Entrada = vOldEntrada LIMIT 1;
|
||
|
|
||
|
IF hasToRecalculate THEN
|
||
|
SELECT warehouse_id INTO newWarehouse FROM travel t
|
||
|
JOIN Entradas e ON t.id = e.travel_id
|
||
|
WHERE e.Id_Entrada = vOldEntrada;
|
||
|
CALL vn.lastBuyRefresh(newWarehouse);
|
||
|
END IF;
|
||
|
END IF;
|
||
|
IF vOldEntrada <> vNewEntrada THEN
|
||
|
|
||
|
UPDATE Entradas oldEntrada
|
||
|
JOIN travel oldTravel ON oldEntrada.travel_id = oldtravel.id
|
||
|
JOIN Entradas newEntrada ON newEntrada.Id_Entrada = vNewEntrada
|
||
|
JOIN travel newTravel ON newTravel.id = newEntrada.travel_id
|
||
|
JOIN vn.lastBuy lb ON newItem = lb.item AND newTravel.warehouse_id = lb.warehouse
|
||
|
SET lb.id = newCompra
|
||
|
WHERE oldEntrada.Id_Entrada = vOldEntrada AND oldTravel.warehouse_id <> newTravel.warehouse_id
|
||
|
AND newTravel.landing > lb.landing AND newTravel.landing <= util.VN_CURDATE();
|
||
|
END IF;
|
||
|
END IF;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|