feat: refs #6869 define model #3172
|
@ -1,58 +1,51 @@
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_getCommission`(vTravelFk INT,
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_getCommission`(vTravelFk INT,
|
||||||
vCurrencyFk INT,
|
vCurrencyFk INT,
|
||||||
vSupplierFk INT
|
vSupplierFk INT
|
||||||
)
|
)
|
||||||
RETURNS int(11)
|
RETURNS int(11)
|
||||||
NOT DETERMINISTIC
|
NOT DETERMINISTIC
|
||||||
READS SQL DATA
|
READS SQL DATA
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE vCommission INT;
|
DECLARE vCommission INT;
|
||||||
DECLARE vCurrentCommission INT;
|
DECLARE vCurrentCommission INT;
|
||||||
DECLARE vIsCurrencyUsd INT;
|
DECLARE vIsNotEUR INT;
|
||||||
DECLARE vLastEntryFk INT;
|
DECLARE vLastEntryFk INT;
|
||||||
|
|
||||||
SELECT count(*) INTO vIsCurrencyUsd
|
|
||||||
FROM currency c
|
|
||||||
WHERE c.code = 'USD' AND id = vCurrencyFk;
|
|
||||||
|
|
||||||
IF NOT vIsCurrencyUsd THEN
|
|
||||||
|
|
||||||
SELECT e.id INTO vLastEntryFk
|
|
||||||
FROM vn.entry e
|
|
||||||
JOIN vn.travel tr ON tr.id = e.travelFk
|
|
||||||
WHERE e.supplierFk = vSupplierFk
|
|
||||||
ORDER BY tr.landed DESC
|
|
||||||
LIMIT 1;
|
|
||||||
|
|
||||||
IF vLastEntryFk THEN
|
|
||||||
|
|
||||||
SELECT commission INTO vCurrentCommission
|
|
||||||
FROM vn.entry
|
|
||||||
WHERE id = vLastEntryFk;
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
|
|
||||||
SELECT commission INTO vCurrentCommission
|
|
||||||
FROM supplier s
|
|
||||||
WHERE s.id = vSupplierFk;
|
|
||||||
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
RETURN vCurrentCommission;
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
|
|
||||||
|
SELECT count(*) INTO vIsNotEUR
|
||||||
|
FROM currency c
|
||||||
|
WHERE c.code <> 'EUR' AND id = vCurrencyFk;
|
||||||
|
|
||||||
|
IF vIsNotEUR THEN
|
||||||
SELECT ROUND(-100 * (1 - (1 / r.value))) INTO vCommission
|
SELECT ROUND(-100 * (1 - (1 / r.value))) INTO vCommission
|
||||||
FROM travel t
|
FROM travel t
|
||||||
LEFT JOIN referenceCurrent r ON r.currencyFk = vCurrencyFk AND r.`dated` <= t.shipped
|
LEFT JOIN referenceCurrent r ON r.currencyFk = vCurrencyFk AND r.`dated` <= t.shipped
|
||||||
WHERE t.id = vTravelFk
|
WHERE t.id = vTravelFk
|
||||||
ORDER BY r.`dated` DESC
|
ORDER BY r.`dated` DESC
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
|
|
||||||
RETURN IFNULL(vCommission, 0);
|
RETURN IFNULL(vCommission, 0);
|
||||||
|
ELSE
|
||||||
END IF;
|
SELECT e.id INTO vLastEntryFk
|
||||||
|
FROM `entry` e
|
||||||
|
JOIN travel tr ON tr.id = e.travelFk
|
||||||
|
WHERE e.supplierFk = vSupplierFk
|
||||||
|
ORDER BY tr.landed DESC
|
||||||
|
LIMIT 1;
|
||||||
|
|
||||||
|
IF vLastEntryFk THEN
|
||||||
|
SELECT commission INTO vCurrentCommission
|
||||||
|
FROM `entry`
|
||||||
|
WHERE id = vLastEntryFk;
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
SELECT commission INTO vCurrentCommission
|
||||||
|
FROM supplier s
|
||||||
|
WHERE s.id = vSupplierFk;
|
||||||
|
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN vCurrentCommission;
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -22,7 +22,7 @@ BEGIN
|
||||||
FROM vn.entry e
|
FROM vn.entry e
|
||||||
JOIN vn.travel t ON t.id = e.travelFk
|
JOIN vn.travel t ON t.id = e.travelFk
|
||||||
JOIN vn.warehouse w ON w.id = t.warehouseInFk
|
JOIN vn.warehouse w ON w.id = t.warehouseInFk
|
||||||
WHERE t.shipped >= util.VN_CURDATE()
|
WHERE t.landed >= util.VN_CURDATE()
|
||||||
AND e.currencyFk = vCurrency
|
AND e.currencyFk = vCurrency
|
||||||
AND NOT e.isBooked;
|
AND NOT e.isBooked;
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ BEGIN
|
||||||
SET e.commission = vComission;
|
SET e.commission = vComission;
|
||||||
|
|
||||||
SELECT `name` INTO vCurrencyName
|
SELECT `name` INTO vCurrencyName
|
||||||
FROM currency
|
FROM currency
|
||||||
WHERE id = vCurrency;
|
WHERE id = vCurrency;
|
||||||
|
|
||||||
CALL entry_recalc();
|
CALL entry_recalc();
|
||||||
|
|
Loading…
Reference in New Issue