28 lines
697 B
SQL
28 lines
697 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`sale_hasComponentLack`(
|
|
vSelf INT
|
|
)RETURNS tinyint(1)
|
|
READS SQL DATA
|
|
BEGIN
|
|
/**
|
|
* Check if a sales line has all the required components.
|
|
*
|
|
* @param vSelf Id de sale
|
|
* @return BOOL
|
|
*/
|
|
DECLARE vHasComponentLack TINYINT(1);
|
|
|
|
WITH componentRequired AS(
|
|
SELECT COUNT(*) total
|
|
FROM vn.component
|
|
WHERE isRequired
|
|
)SELECT SUM(IF(c.isRequired, TRUE, FALSE)) <> cr.total INTO vHasComponentLack
|
|
FROM vn.sale s
|
|
JOIN componentRequired cr
|
|
LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id
|
|
LEFT JOIN vn.component c ON c.id = sc.componentFk
|
|
WHERE s.id = vSelf;
|
|
|
|
RETURN vHasComponentLack;
|
|
END$$
|
|
DELIMITER ; |