81 lines
1.5 KiB
SQL
81 lines
1.5 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `stock`.`buyOut_refresh`(
|
|
`vTable` VARCHAR(255),
|
|
`vId` INT,
|
|
`vSource` VARCHAR(255))
|
|
BEGIN
|
|
DECLARE vLotExists INT;
|
|
|
|
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
|
|
|
|
INSERT INTO buyOut (
|
|
outFk,
|
|
source,
|
|
isSync,
|
|
warehouseFk,
|
|
dated,
|
|
itemFk,
|
|
quantity,
|
|
lack,
|
|
created,
|
|
isPicked
|
|
)
|
|
SELECT
|
|
lotFk,
|
|
vSource,
|
|
FALSE,
|
|
warehouseFk,
|
|
dated,
|
|
itemFk,
|
|
quantity,
|
|
quantity,
|
|
created,
|
|
isPicked
|
|
FROM tLotAlive
|
|
ON DUPLICATE KEY UPDATE
|
|
source = VALUES(source),
|
|
warehouseFk = VALUES(warehouseFk),
|
|
dated = VALUES(dated),
|
|
itemFk = VALUES(itemFk),
|
|
quantity = VALUES(quantity),
|
|
lack = VALUES(lack),
|
|
created = VALUES(created),
|
|
isPicked = VALUES(isPicked),
|
|
isSync = VALUES(isSync);
|
|
|
|
COMMIT;
|
|
END$$
|
|
DELIMITER ;
|