salix/db/routines/vn2008/procedures/buy_label.sql

41 lines
1.3 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`buy_label`(IN entry_id_ INT, IN groupby TINYINT(1))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE label INT;
DECLARE id INT;
DECLARE recordset CURSOR FOR SELECT Compres.Etiquetas, Compres.Id_Compra FROM Compres INNER JOIN
(SELECT e.Id_entrada FROM Entradas e INNER JOIN (
SELECT Id_Entrada,Inventario,Id_proveedor,travel_id,Id_Agencia FROM Entradas e1 INNER JOIN travel t ON e1.travel_id = t.id WHERE Id_Entrada = entry_id_) y
ON y.Inventario = e.Inventario AND e.travel_id = y.travel_id AND e.Id_proveedor = y.Id_proveedor AND y.Id_Agencia = e.Id_Agencia
WHERE (0 OR e.Id_Entrada = entry_id_)) entry_label
ON Compres.Id_Entrada = entry_label.Id_entrada
INNER JOIN Articles ON Compres.Id_Article = Articles.Id_Article WHERE Articles.Imprimir <> FALSE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
DROP TEMPORARY TABLE IF EXISTS `buy_label_source`;
CREATE TEMPORARY TABLE `buy_label_source`
(
`buy_id` INT(11) NOT NULL
)
ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
OPEN recordset;
REPEAT
FETCH recordset INTO label, id;
WHILE label > 0 DO
SET label = label - 1;
INSERT INTO buy_label_source (buy_id) VALUES (id);
END WHILE;
UNTIL done END REPEAT;
END$$
DELIMITER ;