66 lines
1.4 KiB
MySQL
66 lines
1.4 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`Facturas_Saltos`(IN datSTART DATE , IN datEND DATE)
|
||
|
BEGIN
|
||
|
|
||
|
|
||
|
DECLARE strSER1 VARCHAR(2);
|
||
|
DECLARE strSER2 VARCHAR(2);
|
||
|
DECLARE intEMP1 INT;
|
||
|
DECLARE intEMP2 INT;
|
||
|
DECLARE v_done BOOLEAN DEFAULT FALSE;
|
||
|
DECLARE strFAC1 VARCHAR(11);
|
||
|
DECLARE strFAC2 VARCHAR(11);
|
||
|
|
||
|
|
||
|
DECLARE rs CURSOR FOR
|
||
|
SELECT Id_Factura, empresa_id, Serie
|
||
|
FROM Facturas
|
||
|
WHERE Fecha BETWEEN datSTART AND datEND
|
||
|
ORDER BY empresa_id, Serie, Id_Factura;
|
||
|
|
||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE;
|
||
|
|
||
|
OPEN rs;
|
||
|
|
||
|
DROP TEMPORARY TABLE IF EXISTS Facturas_Saltarinas;
|
||
|
|
||
|
CREATE TEMPORARY TABLE Facturas_Saltarinas
|
||
|
(Factura_Inicial VARCHAR(11),
|
||
|
Factura_Final VARCHAR(11),
|
||
|
Empresa VARCHAR(3),
|
||
|
Serie VARCHAR(1));
|
||
|
|
||
|
FETCH rs INTO strFAC1, intEMP1, strSER1;
|
||
|
|
||
|
IF NOT v_done THEN
|
||
|
|
||
|
FETCH rs INTO strFAC2, intEMP2, strSER2;
|
||
|
|
||
|
END IF;
|
||
|
|
||
|
WHILE NOT v_done DO
|
||
|
|
||
|
IF strSER1 = strSER2 AND intEMP1 = intEMP2 AND right(strFAC2,5) - right(strFAC1,5) > 1 then
|
||
|
|
||
|
INSERT INTO Facturas_Saltarinas(Factura_Inicial, Factura_Final, Empresa, Serie)
|
||
|
SELECT strFAC1, strFAC2, abbreviation, strSER1
|
||
|
FROM empresa
|
||
|
WHERE id = intEMP1;
|
||
|
|
||
|
END IF;
|
||
|
|
||
|
SET strFAC1 = strFAC2;
|
||
|
SET intEMP1 = intEMP2;
|
||
|
SET STRSER1 = strSER2;
|
||
|
|
||
|
FETCH rs INTO strFAC2, intEMP2, strSER2;
|
||
|
|
||
|
END WHILE;
|
||
|
|
||
|
SELECT * FROM Facturas_Saltarinas;
|
||
|
|
||
|
CLOSE rs;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|