45 lines
1.2 KiB
SQL
45 lines
1.2 KiB
SQL
DELIMITER $$
|
|
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();
|
|
|
|
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;
|
|
|
|
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
|
|
SELECT COUNT(*) INTO vHasAnyInvoiceBooked
|
|
FROM travel t
|
|
JOIN entry e ON e.travelFk = t.id
|
|
JOIN invoiceIn ii ON ii.id = e.invoiceInFk
|
|
WHERE t.id = NEW.id
|
|
AND ii.isBooked;
|
|
|
|
IF vHasAnyInvoiceBooked THEN
|
|
CALL util.throw('The travel has entries with booked invoices');
|
|
END IF;
|
|
END IF;
|
|
|
|
IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN
|
|
CALL travel_throwAwb(NEW.id);
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|