33 lines
1.0 KiB
SQL
33 lines
1.0 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`invoiceIn_afterUpdate`
|
|
AFTER UPDATE ON `invoiceIn`
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DECLARE vIsEuro BOOL;
|
|
|
|
SELECT `code` = 'EUR' INTO vIsEuro
|
|
FROM currency
|
|
WHERE id = NEW.currencyFk;
|
|
|
|
IF (NOT NEW.issued <=> OLD.issued
|
|
OR NEW.currencyFk <> OLD.currencyFk) THEN
|
|
|
|
UPDATE invoiceInTax iit
|
|
JOIN invoiceIn ii ON ii.id = iit.invoiceInFk
|
|
LEFT JOIN referenceRate rr ON rr.dated = ii.issued
|
|
AND rr.currencyFk = ii.currencyFk
|
|
SET iit.taxableBase = IF(vIsEuro, iit.taxableBase, iit.foreignValue / rr.value),
|
|
iit.foreignValue = IF(vIsEuro, NULL, iit.foreignValue)
|
|
WHERE ii.id = NEW.id;
|
|
|
|
UPDATE invoiceInDueDay iidd
|
|
JOIN invoiceIn ii ON ii.id = iidd.invoiceInFk
|
|
LEFT JOIN referenceRate rr ON rr.dated = ii.issued
|
|
AND rr.currencyFk = ii.currencyFk
|
|
SET iidd.amount = IF(vIsEuro, iidd.amount, iidd.foreignValue / rr.value),
|
|
iidd.foreignValue = IF(vIsEuro, NULL, iidd.foreignValue)
|
|
WHERE ii.id = NEW.id;
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|