salix/db/routines/vn/procedures/visible_getMisfit.sql

47 lines
1.2 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`visible_getMisfit`(vSectorFk INT)
BEGIN
/* Devuelve una tabla temporal con los descuadres entre el visible teórico y lo ubicado en la práctica
*
* @param vSectorFk Identificador de vn.sector
*
* @return tmp.stockMisfit(itemFk, visible, parked)
*/
DECLARE vCalcVisibleFk INT;
DECLARE vWarehouseFk INT;
SELECT warehouseFk INTO vWarehouseFk
FROM vn.sector s
WHERE s.id = vSectorFk;
CALL cache.visible_refresh(vCalcVisibleFk, FALSE, vWarehouseFk);
DROP TEMPORARY TABLE IF EXISTS tmp.stockMisfit;
CREATE TEMPORARY TABLE tmp.stockMisfit(
itemFk INT PRIMARY KEY,
visible INT NOT NULL DEFAULT 0,
parked INT NOT NULL DEFAULT 0)
ENGINE = MEMORY;
INSERT INTO tmp.stockMisfit(itemFk, parked)
SELECT iss.itemFk , sum(iss.visible )
FROM vn.itemShelvingStock iss
JOIN vn.sector s ON s.id = iss.sectorFk
WHERE vSectorFk IN (s.id, s.sonFk)
GROUP BY iss.itemFk;
INSERT INTO tmp.stockMisfit(itemFk, visible)
SELECT v.item_id , v.visible
FROM cache.visible v
WHERE v.calc_id = vCalcVisibleFk
ON DUPLICATE KEY UPDATE visible = v.visible;
DELETE FROM tmp.stockMisfit
WHERE visible = parked;
END$$
DELIMITER ;