72 lines
1.4 KiB
SQL
72 lines
1.4 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `stock`.`buyOut_refresh`(
|
|
`vTable` VARCHAR(255))
|
|
BEGIN
|
|
CREATE TEMPORARY TABLE tOutPrune
|
|
ENGINE = MEMORY
|
|
SELECT outFk FROM tOutOld
|
|
EXCEPT
|
|
SELECT outFk FROM tOutNew;
|
|
|
|
DELETE o FROM buyOut o JOIN tOutPrune d USING(outFk);
|
|
|
|
INSERT INTO buyOut (
|
|
tableName,
|
|
tableId,
|
|
outFk,
|
|
warehouseFk,
|
|
dated,
|
|
itemFk,
|
|
quantity,
|
|
lack,
|
|
created,
|
|
isPicked,
|
|
isSync
|
|
)
|
|
SELECT
|
|
vTable,
|
|
tableId,
|
|
outFk,
|
|
warehouseFk,
|
|
dated,
|
|
itemFk,
|
|
quantity,
|
|
quantity,
|
|
created,
|
|
isPicked,
|
|
FALSE
|
|
FROM tOutNew
|
|
ON DUPLICATE KEY UPDATE
|
|
tableName = VALUES(tableName),
|
|
tableId = VALUES(tableId),
|
|
warehouseFk = VALUES(warehouseFk),
|
|
dated = VALUES(dated),
|
|
itemFk = VALUES(itemFk),
|
|
quantity = VALUES(quantity),
|
|
lack = VALUES(lack),
|
|
created = VALUES(created),
|
|
isPicked = VALUES(isPicked),
|
|
isSync = VALUES(isSync);
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tPickPrune
|
|
ENGINE = MEMORY
|
|
SELECT id FROM buyPick
|
|
WHERE outFk IN (
|
|
SELECT outFk FROM tOutDel
|
|
UNION
|
|
SELECT outFk FROM tOutNew
|
|
);
|
|
|
|
UPDATE buyLot l
|
|
JOIN buyPick p ON p.buyFk = l.buyFk
|
|
JOIN tPickPrune pp ON pp.id = p.id
|
|
SET l.isSync = FALSE,
|
|
l.available = l.available + p.quantity;
|
|
|
|
DELETE p FROM buyPick p
|
|
JOIN tPickPrune pp USING (id);
|
|
|
|
DROP TEMPORARY TABLE tPickPrune;
|
|
END$$
|
|
DELIMITER ;
|