salix/db/routines/stock/procedures/buyOut_refreshSale.sql

54 lines
1.2 KiB
MySQL
Raw Normal View History

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_refreshSale`(
`vTable` VARCHAR(255),
`vId` INT)
BEGIN
DECLARE vPreparation INT;
SELECT id INTO vPreparation
FROM vn.alertLevel WHERE code = 'ON_PREPARATION';
CREATE OR REPLACE TEMPORARY TABLE tOldOut
ENGINE = MEMORY
SELECT saleFk tableId
FROM buyOutSale
WHERE
(vTable = 'ticket' AND ticketFk = vId)
OR (vTable = 'sale' AND saleFk = vId);
CREATE OR REPLACE TEMPORARY TABLE tNewOut
ENGINE = MEMORY
SELECT
t.id ticketFk,
s.id tableId,
t.warehouseFk,
t.shipped dated,
s.itemFk,
s.quantity,
s.created,
s.isPicked OR alertLevel > vPreparation isPicked
FROM vn.sale s
JOIN vn.ticket t ON t.id = s.ticketFk
JOIN vn.ticketState ts ON s.ticketFk = t.id
WHERE s.quantity >= 0
AND (
(vTable = 'ticket' AND t.id = vId)
OR (vTable = 'sale' AND s.id = vId)
);
START TRANSACTION;
CALL buyOut_refresh('sale', vId);
DELETE o FROM buyOutSale o
JOIN tDelete d ON d.tableId = o.saleFk;
INSERT IGNORE INTO buyOutSale (ticketFk, saleFk)
SELECT ticketFk, tableId FROM tNewOut;
COMMIT;
DROP TEMPORARY TABLE tNewOut, tOldOut, tDelete;
END$$
DELIMITER ;