fix: refs #4409 First sync working version
gitea/salix/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Juan Ferrer 2025-02-19 12:56:42 +01:00
parent 72a651afa5
commit 6001f416d0
6 changed files with 25 additions and 22 deletions

View File

@ -6,9 +6,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyLot_addPick`(
)
BEGIN
INSERT INTO buyPick
SET
buyFk = vSelf,
outFk = outFk,
SET buyFk = vSelf,
outFk = vOutFk,
quantity = vQuantity
ON DUPLICATE KEY UPDATE
quantity = quantity + vQuantity;

View File

@ -3,6 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyLot_requestQu
vSelf INT,
vRequested INT,
vDated DATETIME,
vOutFk INT,
OUT vSupplied INT)
BEGIN
/**
@ -11,11 +12,12 @@ BEGIN
*
* @param vSelf The buyLot reference
* @param vRequested The requested quantity
* @param vDate The starting date for the associated buyOuts
* @param vDate The starting date for the associated outs
* @param vOutFk The if of requesting out
* @param vSupplied The supplied quantity
*/
DECLARE vPickFk INT;
DECLARE vOutFk INT;
DECLARE vPickOutFk INT;
DECLARE vPickQuantity INT;
DECLARE vPickGranted INT;
DECLARE vDone BOOL;
@ -25,8 +27,8 @@ BEGIN
FROM buyPick p
JOIN buyOut o USING(outFk)
WHERE p.buyFk = vSelf
AND o.dated > vDated
ORDER BY o.dated DESC, o.created DESC;
AND (o.dated, o.outFk) > (vDated, vOutFk)
ORDER BY o.dated DESC, o.created DESC, o.outFk DESC;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
@ -37,7 +39,7 @@ BEGIN
myLoop: LOOP
SET vDone = FALSE;
FETCH vPicks INTO vPickFk, vOutFk, vPickQuantity;
FETCH vPicks INTO vPickFk, vPickOutFk, vPickQuantity;
IF vDone THEN
LEAVE myLoop;
@ -50,7 +52,7 @@ BEGIN
UPDATE buyOut
SET isSync = FALSE,
lack = lack + vPickGranted
WHERE outFk = vOutFk;
WHERE outFk = vPickOutFk;
IF vSupplied >= vRequested THEN
LEAVE myLoop;

View File

@ -26,7 +26,7 @@ BEGIN
AND itemFk = vItem
AND dated >= vDated
AND (vExpired IS NULL OR dated < vExpired)
ORDER BY dated, created;
ORDER BY dated, created, outFk;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
@ -60,7 +60,7 @@ BEGIN
END IF;
IF vHasPicks AND vAvailable > 0 THEN
CALL buyOut_requestQuantity(vOutFk, vAvailable, vDated, vSuppliedFromRequest);
CALL buyOut_requestQuantity(vOutFk, vAvailable, vDated, vSelf, vSuppliedFromRequest);
SET vSupplied = vSupplied + vSuppliedFromRequest;
SET vAvailable = vAvailable - vSuppliedFromRequest;
END IF;

View File

@ -3,6 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_requestQu
vSelf INT,
vRequested INT,
vDated DATETIME,
vLotFk INT,
OUT vSupplied INT)
BEGIN
/**
@ -12,10 +13,11 @@ BEGIN
* @param vSelf The buyOut reference
* @param vRequested The requested quantity
* @param vDate The starting date for the associated lots
* @param vLotFk The if of requesting lot
* @param vSupplied The supplied quantity
*/
DECLARE vPickFk INT;
DECLARE vLotFk INT;
DECLARE vPickLotFk INT;
DECLARE vPickQuantity INT;
DECLARE vPickGranted INT;
DECLARE vDone BOOL;
@ -23,10 +25,10 @@ BEGIN
DECLARE vPicks CURSOR FOR
SELECT p.id, p.buyFk, p.quantity
FROM buyPick p
JOIN buyOut o USING(outFk)
WHERE o.outFk = vSelf
AND o.dated > vDated
ORDER BY o.dated DESC;
JOIN buyLot l USING(buyFk)
WHERE p.outFk = vSelf
AND (l.dated, p.buyFk) > (vDated, vLotFk)
ORDER BY l.dated, p.buyFk;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
@ -37,7 +39,7 @@ BEGIN
myLoop: LOOP
SET vDone = FALSE;
FETCH vPicks INTO vPickFk, vLotFk, vPickQuantity;
FETCH vPicks INTO vPickFk, vPickLotFk, vPickQuantity;
IF vDone THEN
LEAVE myLoop;
@ -50,7 +52,7 @@ BEGIN
UPDATE buyLot
SET isSync = FALSE,
available = available + vPickGranted
WHERE buyFk = vLotFk;
WHERE buyFk = vPickLotFk;
IF vSupplied >= vRequested THEN
LEAVE myLoop;

View File

@ -24,7 +24,7 @@ BEGIN
AND itemFk = vItem
AND dated <= vDated
AND (expired IS NULL OR expired > vDated)
ORDER BY dated;
ORDER BY dated, buyFk;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;
@ -54,7 +54,7 @@ BEGIN
END IF;
IF vHasPicks AND vLack > 0 THEN
CALL buyLot_requestQuantity(vLotFk, vLack, vDated, vSuppliedFromRequest);
CALL buyLot_requestQuantity(vLotFk, vLack, vDated, vSelf, vSuppliedFromRequest);
SET vSupplied = vSupplied + vSuppliedFromRequest;
SET vLack = vLack - vSuppliedFromRequest;
END IF;

View File

@ -9,12 +9,12 @@ proc: BEGIN
DECLARE vLots CURSOR FOR
SELECT buyFk FROM buyLot
WHERE !isSync
ORDER BY dated;
ORDER BY warehouseFk, itemFk, dated, buyFk;
DECLARE vOuts CURSOR FOR
SELECT outFk FROM buyOut
WHERE !isSync
ORDER BY dated;
ORDER BY warehouseFk, itemFk, dated, created, outFk;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET vDone = TRUE;