salix/db/routines/vn/triggers/travel_beforeUpdate.sql

45 lines
1.2 KiB
MySQL
Raw Normal View History

DELIMITER $$
2024-08-20 08:06:10 +00:00
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`travel_beforeUpdate`
BEFORE UPDATE ON `travel`
FOR EACH ROW
BEGIN
DECLARE vHasAnyInvoiceBooked BOOL;
SET NEW.editorFk = account.myUser_getId();
2024-01-30 14:07:13 +00:00
2024-11-21 14:09:58 +00:00
IF NOT (NEW.landed <=> OLD.landed)
OR NOT (NEW.shipped <=> OLD.shipped) THEN
CALL travel_checkDates(NEW.shipped, NEW.landed);
END IF;
IF NOT (NEW.isReceived <=> OLD.isReceived) THEN
CALL travel_checkPackaging(NEW.id);
END IF;
IF NOT (NEW.warehouseInFk <=> OLD.warehouseInFk) THEN
CALL travel_checkWarehouseIsFeedStock(NEW.warehouseInFk);
END IF;
2024-11-21 14:09:58 +00:00
IF NOT (NEW.isRaid <=> OLD.isRaid) OR NOT (NEW.daysInForward <=> OLD.daysInForward) THEN
CALL travel_checkRaid(NEW.isRaid, NEW.daysInForward);
END IF;
IF NOT (NEW.awbFk <=> OLD.awbFk)THEN
2024-11-21 14:09:58 +00:00
SELECT COUNT(*) INTO vHasAnyInvoiceBooked
FROM travel t
2024-11-21 14:09:58 +00:00
JOIN entry e ON e.travelFk = t.id
JOIN invoiceIn ii ON ii.id = e.invoiceInFk
WHERE t.id = NEW.id
2024-11-21 14:09:58 +00:00
AND ii.isBooked;
IF vHasAnyInvoiceBooked THEN
CALL util.throw('The travel has entries with booked invoices');
END IF;
2024-11-21 14:09:58 +00:00
END IF;
2024-05-16 13:34:45 +00:00
IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN
2024-05-17 06:16:50 +00:00
CALL travel_throwAwb(NEW.id);
END IF;
END$$
DELIMITER ;