37 lines
1.1 KiB
SQL
37 lines
1.1 KiB
SQL
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 ;
|