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 BEGIN
INSERT INTO buyPick INSERT INTO buyPick
SET SET buyFk = vSelf,
buyFk = vSelf, outFk = vOutFk,
outFk = outFk,
quantity = vQuantity quantity = vQuantity
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
quantity = quantity + vQuantity; quantity = quantity + vQuantity;

View File

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

View File

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

View File

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

View File

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

View File

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