DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`EntradasTriggerBeforeUpdate`(oldTravel INT, newTravel INT, oldRedada BOOLEAN, newRedada BOOLEAN, newId INT) BEGIN DECLARE newWarehouse INTEGER; DECLARE hasToRecalculate BOOLEAN; IF oldRedada <> newRedada OR newTravel IS NULL THEN SELECT Id_Compra INTO hasToRecalculate FROM Compres c JOIN vn.lastBuy lb ON lb.id = c.Id_Compra WHERE c.Id_Entrada = newId LIMIT 1; IF hasToRecalculate THEN SELECT warehouse_id INTO newWarehouse FROM travel WHERE id = newtravel; CALL vn.lastBuyRefresh(newWarehouse); END IF; END IF; IF newTravel <> oldTravel AND newTravel IS NOT NULL THEN UPDATE travel t JOIN Compres c ON c.Id_Entrada = newId JOIN vn.lastBuy lb ON c.Id_Article = lb.item AND t.warehouse_id = lb.warehouse SET lb.id = c.Id_Compra WHERE t.id = newTravel AND t.landing BETWEEN vn.getInventoryDate() AND util.yesterday() AND t.landing > lb.landing; END IF; END$$ DELIMITER ;