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

33 lines
1.0 KiB
MySQL
Raw Normal View History

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceOut_beforeInsert`
BEFORE INSERT ON `invoiceOut`
FOR EACH ROW
BEGIN
DECLARE vRef CHAR(10) ;
IF YEAR(NEW.issued) <= 2021 THEN
SELECT CONCAT(NEW.serial,
IFNULL(RIGHT(MAX(i.ref), LENGTH(i.ref)-1) ,
RPAD(CONCAT(c.sage200Company, RIGHT(YEAR(util.VN_CURDATE()), 2)), 7,'0')) + 1) INTO vRef
FROM invoiceOut i
LEFT JOIN company c ON c.id = i.companyFk
WHERE i.serial = NEW.serial
AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.dayEnd(util.lastDayOfYear(NEW.issued))
AND c.id = NEW.companyFk;
ELSE
SELECT CONCAT(NEW.serial,
IFNULL(RIGHT(MAX(i.ref), LENGTH(i.ref)-1) ,
RPAD(CONCAT(c.sage200Company, RIGHT(YEAR(util.VN_CURDATE()), 2)), 8,'0')) + 1) INTO vRef
FROM invoiceOut i
LEFT JOIN company c ON c.id = i.companyFk
WHERE i.serial = NEW.serial
AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.dayEnd(util.lastDayOfYear(NEW.issued))
AND c.id = NEW.companyFk;
END IF;
SET NEW.ref = vRef;
END$$
DELIMITER ;