DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_afterUpsert`(vInvoiceInFk INT) BEGIN /** * Triggered actions when a invoiceInTax is updated or inserted. * * @param vInvoiceInFk The invoiceIn id */ DECLARE vTaxRowLimit INT; DECLARE vLines INT; DECLARE vHasDistinctTransactions INT; SELECT taxRowLimit INTO vTaxRowLimit FROM invoiceInConfig; SELECT COUNT(*) INTO vLines FROM invoiceInTax WHERE invoiceInFk = vInvoiceInFk AND (taxTypeSageFk OR transactionTypeSageFk); IF vLines >= vTaxRowLimit THEN CALL util.throw (CONCAT('The maximum number of lines is ', vTaxRowLimit)); END IF; SELECT COUNT(DISTINCT transactionTypeSageFk) INTO vHasDistinctTransactions FROM invoiceIn ii JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id JOIN invoiceInSerial iis ON iis.code = ii.serial WHERE ii.id = vInvoiceInFk AND iis.taxAreaFk = 'CEE' AND transactionTypeSageFk; IF vHasDistinctTransactions > 1 THEN CALL util.throw ('This invoice does not allow different types of transactions'); END IF; END$$ DELIMITER ;