DROP function IF EXISTS `vn`.`entry_getCommission`; DELIMITER $$ CREATE DEFINER=`root`@`%` FUNCTION `vn`.`entry_getCommission`( vTravelFk INT, vCurrencyFk INT, vSupplierFk INT ) RETURNS int(11) READS SQL DATA BEGIN DECLARE vCommission INT; DECLARE vCurrentCommission INT; DECLARE vIsCurrencyUsd INT; SELECT count(*) INTO vIsCurrencyUsd FROM currency c WHERE c.code = 'USD' AND id = vCurrencyFk; IF NOT vIsCurrencyUsd THEN SELECT commission INTO vCurrentCommission FROM supplier s WHERE s.id = vSupplierFk; RETURN vCurrentCommission; END IF; SELECT ROUND(-100 * (1 - (1 / r.value))) INTO vCommission FROM travel t LEFT JOIN referenceCurrent r ON r.currencyFk = vCurrencyFk AND r.`dated` <= t.shipped WHERE t.id = vTravelFk ORDER BY r.`dated` DESC LIMIT 1; RETURN IFNULL(vCommission, 0); END$$ DELIMITER ;