DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_refreshSale`( `vTableName` VARCHAR(255), `vTableId` INT) BEGIN DROP TEMPORARY TABLE IF EXISTS tValues; CREATE TEMPORARY TABLE tValues ENGINE = MEMORY SELECT m.id saleFk, m.ticketFk, m.itemFk, t.warehouseFk, t.shipped, ABS(m.quantity) quantity, m.created, TIMESTAMPADD(DAY, tp.life, t.shipped) expired, m.quantity < 0 isIn, m.isPicked OR s.alertLevel > al.id isPicked FROM vn.sale m JOIN vn.ticket t ON t.id = m.ticketFk JOIN vn.ticketState s ON s.ticketFk = t.id JOIN vn.item i ON i.id = m.itemFk JOIN vn.itemType tp ON tp.id = i.typeFk JOIN vn.alertLevel al ON al.code = 'ON_PREPARATION' WHERE ( vTableId IS NULL OR (vTableName = 'ticket' AND t.id = vTableId) OR (vTableName = 'sale' AND m.id = vTableId) ) AND t.shipped >= vn.getInventoryDate() AND m.quantity != 0; REPLACE INTO inbound ( tableName, tableId, warehouseFk, dated, itemFk, expired, quantity, isPicked ) SELECT 'sale', saleFk, warehouseFk, shipped, itemFk, expired, quantity, isPicked FROM tValues WHERE isIn; REPLACE INTO outbound ( tableName, tableId, warehouseFk, dated, itemFk, created, quantity, isPicked ) SELECT 'sale', saleFk, warehouseFk, shipped, itemFk, created, quantity, isPicked FROM tValues WHERE !isIn; DROP TEMPORARY TABLE tValues; END$$ DELIMITER ;