2025-02-12 06:57:31 +00:00
|
|
|
DELIMITER $$
|
2025-02-19 13:13:54 +00:00
|
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `stock`.`buyOut_refresh`(
|
2025-02-24 17:05:21 +00:00
|
|
|
`vTable` VARCHAR(255),
|
|
|
|
`vId` INT,
|
|
|
|
`vSource` VARCHAR(255))
|
2025-02-12 06:57:31 +00:00
|
|
|
BEGIN
|
2025-02-24 17:05:21 +00:00
|
|
|
DECLARE vLotExists INT;
|
2025-02-12 06:57:31 +00:00
|
|
|
|
2025-02-25 09:49:58 +00:00
|
|
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
|
|
|
BEGIN
|
|
|
|
ROLLBACK;
|
|
|
|
RESIGNAL;
|
|
|
|
END;
|
|
|
|
|
2025-02-24 17:05:21 +00:00
|
|
|
IF vTable = 'lot' THEN
|
|
|
|
SET vLotExists = (SELECT COUNT(*) > 0 FROM tLotStatus);
|
|
|
|
|
|
|
|
IF NOT vLotExists THEN
|
|
|
|
INSERT INTO tLotStatus
|
|
|
|
SET lotFk = vId,
|
|
|
|
isExcluded = TRUE,
|
|
|
|
isAlive = FALSE;
|
|
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
|
|
|
|
START TRANSACTION;
|
|
|
|
|
|
|
|
-- Delete excluded/deleted/dead outs
|
|
|
|
|
|
|
|
DELETE o FROM buyOut o
|
|
|
|
JOIN tLotStatus oo ON oo.lotFk = o.outFk
|
|
|
|
WHERE oo.isExcluded OR NOT oo.isAlive;
|
|
|
|
|
|
|
|
-- Delete undead out picks
|
|
|
|
|
|
|
|
UPDATE buyLot l
|
|
|
|
JOIN buyPick p ON p.lotFk = l.lotFk
|
|
|
|
JOIN tLotStatus oo ON oo.lotFk = p.outFk
|
|
|
|
SET l.isSync = FALSE,
|
|
|
|
l.available = l.available + p.quantity
|
|
|
|
WHERE oo.isExcluded OR oo.isAlive;
|
|
|
|
|
|
|
|
DELETE p FROM buyPick p
|
|
|
|
JOIN tLotStatus oo ON oo.lotFk = p.outFk
|
|
|
|
WHERE oo.isExcluded OR oo.isAlive;
|
|
|
|
|
|
|
|
-- Update alive outs
|
2025-02-12 06:57:31 +00:00
|
|
|
|
|
|
|
INSERT INTO buyOut (
|
2025-02-18 18:34:38 +00:00
|
|
|
outFk,
|
2025-02-24 17:05:21 +00:00
|
|
|
source,
|
|
|
|
isSync,
|
2025-02-12 06:57:31 +00:00
|
|
|
warehouseFk,
|
|
|
|
dated,
|
|
|
|
itemFk,
|
|
|
|
quantity,
|
2025-02-18 14:58:38 +00:00
|
|
|
lack,
|
2025-02-12 06:57:31 +00:00
|
|
|
created,
|
2025-02-24 17:05:21 +00:00
|
|
|
isPicked
|
2025-02-12 06:57:31 +00:00
|
|
|
)
|
|
|
|
SELECT
|
2025-02-24 17:05:21 +00:00
|
|
|
lotFk,
|
|
|
|
vSource,
|
|
|
|
FALSE,
|
2025-02-12 06:57:31 +00:00
|
|
|
warehouseFk,
|
|
|
|
dated,
|
|
|
|
itemFk,
|
|
|
|
quantity,
|
2025-02-18 14:58:38 +00:00
|
|
|
quantity,
|
2025-02-12 06:57:31 +00:00
|
|
|
created,
|
2025-02-24 17:05:21 +00:00
|
|
|
isPicked
|
|
|
|
FROM tLotAlive
|
2025-02-12 06:57:31 +00:00
|
|
|
ON DUPLICATE KEY UPDATE
|
2025-02-24 17:05:21 +00:00
|
|
|
source = VALUES(source),
|
2025-02-12 06:57:31 +00:00
|
|
|
warehouseFk = VALUES(warehouseFk),
|
|
|
|
dated = VALUES(dated),
|
|
|
|
itemFk = VALUES(itemFk),
|
|
|
|
quantity = VALUES(quantity),
|
2025-02-18 14:58:38 +00:00
|
|
|
lack = VALUES(lack),
|
2025-02-12 06:57:31 +00:00
|
|
|
created = VALUES(created),
|
|
|
|
isPicked = VALUES(isPicked),
|
|
|
|
isSync = VALUES(isSync);
|
2025-02-14 09:21:02 +00:00
|
|
|
|
2025-02-24 17:05:21 +00:00
|
|
|
COMMIT;
|
2025-02-12 06:57:31 +00:00
|
|
|
END$$
|
|
|
|
DELIMITER ;
|