fix: refs #7213 problem rounding
gitea/salix/pipeline/pr-master There was a failure building this commit
Details
gitea/salix/pipeline/pr-master There was a failure building this commit
Details
This commit is contained in:
parent
88246174dc
commit
3da6a700ae
|
@ -0,0 +1,71 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemRoundingByBuy`(
|
||||||
|
vBuyFk INT
|
||||||
|
)
|
||||||
|
/**
|
||||||
|
* Update rounding problem for all sales related to a buy
|
||||||
|
* @param vBuyFk Id buy
|
||||||
|
*/
|
||||||
|
DECLARE vItemFk INT,
|
||||||
|
DECLARE vWareHouseFk INT
|
||||||
|
DECLARE vMaxDated DATE;
|
||||||
|
DECLARE vMinDated DATE;
|
||||||
|
DECLARE vLanding DATE;
|
||||||
|
DECLARE vLastBuy INT;
|
||||||
|
DECLARE vCurrentBuy INT;
|
||||||
|
DECLARE vGrouping INT;
|
||||||
|
|
||||||
|
SELECT b.itemFk, t.warehouseInFk
|
||||||
|
INTO vItemFk, vWareHouseFk
|
||||||
|
FROM vn.buy b
|
||||||
|
JOIN vn.entry e ON e.id = b.entryFk
|
||||||
|
JOIN vn.travel t ON t.id = e.travelFk
|
||||||
|
WHERE b.id = vBuyFk;
|
||||||
|
|
||||||
|
SELECT DATE(MAX(t.shipped)) + INTERVAL 1 DAY, DATE(MIN(t.shipped))
|
||||||
|
INTO vMaxDated, vMinDated
|
||||||
|
FROM sale s
|
||||||
|
JOIN ticket t ON t.id = s.ticketFk
|
||||||
|
WHERE t.shipped >= CURDATE()
|
||||||
|
AND s.itemFk = vItemFk
|
||||||
|
AND s.quantity > 0;
|
||||||
|
|
||||||
|
CALL buy_getUltimate(vItemFk, vWareHouseFk, vMinDated);
|
||||||
|
|
||||||
|
SELECT bu.buyFk, b.grouping INTO vLastBuy, vGrouping
|
||||||
|
FROM tmp.buyUltimate bu
|
||||||
|
JOIN buy b ON b.id = bu.buyFk;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.buyUltimate;
|
||||||
|
|
||||||
|
SET vLanding = vMaxDated;
|
||||||
|
|
||||||
|
WHILE vCurrentBuy <> vLastBuy OR vLanding > vMinDated DO
|
||||||
|
SET vMaxDated = vLanding - INTERVAL 1 DAY;
|
||||||
|
|
||||||
|
CALL buy_getUltimate(vItemFk, vWareHouseFk, vMaxDated);
|
||||||
|
|
||||||
|
SELECT buyFk, landing
|
||||||
|
INTO vCurrentBuy, vLanding
|
||||||
|
FROM tmp.buyUltimate;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.buyUltimate;
|
||||||
|
END WHILE;
|
||||||
|
|
||||||
|
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
|
||||||
|
(INDEX(saleFk, isProblemCalcNeeded))
|
||||||
|
SELECT s.id saleFk ,
|
||||||
|
MOD(s.quantity, vGrouping) hasProblem,
|
||||||
|
ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
|
||||||
|
FROM sale s
|
||||||
|
JOIN ticket t ON t.id = s.ticketFk
|
||||||
|
WHERE s.itemFk = vItemFk
|
||||||
|
AND s.quantity > 0
|
||||||
|
AND t.shipped BETWEEN vMinDated
|
||||||
|
AND util.dayEnd(vMaxDated);
|
||||||
|
|
||||||
|
CALL sale_setProblem('hasRounding');
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.sale;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
Loading…
Reference in New Issue