SET TERM ^ ;

CREATE OR ALTER PROCEDURE AUDITORIA_DOCUMENTOS_CANT (
    FECINI DATE,
    FECFIN DATE,
    DOC INTEGER)
RETURNS (
    DOCUMENTO VARCHAR(40),
    ANO INTEGER,
    ENERO NUMERIC(18,3),
    FEBRERO NUMERIC(18,3),
    MARZO NUMERIC(18,3),
    ABRIL NUMERIC(18,3),
    MAYO NUMERIC(18,3),
    JUNIO NUMERIC(18,3),
    JULIO NUMERIC(18,3),
    AGOSTO NUMERIC(18,3),
    SEPTIEMBRE NUMERIC(18,3),
    OCTUBRE NUMERIC(18,3),
    NOVIEMBRE NUMERIC(18,3),
    DICIEMBRE NUMERIC(18,3),
    TOTAL NUMERIC(18,3))
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE MES INTEGER;
DECLARE VARIABLE CANTIDAD INTEGER;
DECLARE VARIABLE DOCS INTEGER;
DECLARE VARIABLE SUBTOTAL INTEGER;
BEGIN
BEGIN
ENERO = 0;
FEBRERO= 0;
MARZO= 0;
ABRIL = 0;
MAYO= 0;
JUNIO= 0;
JULIO= 0;
AGOSTO= 0;
SEPTIEMBRE= 0;
OCTUBRE= 0;
NOVIEMBRE= 0;
DICIEMBRE= 0;
TOTAL = 0;
FECINI = FECINI;
FECFIN = FECFIN;
ano = EXTRACT(YEAR FROM (FECINI));
DOCUMENTO = 'NO DISPONIBLE';
FOR SELECT EXTRACT(YEAR FROM MAX(AUDI_FECHA)),EXTRACT(MONTH FROM MAX(AUDI_FECHA)), COUNT(*), MAX(A.TIDO_COD)  FROM AUDITORIA A
WHERE A.AUDI_OPER = 'I' AND A.AUDI_FECHA >=:FECINI AND A.AUDI_FECHA <=:FECFIN AND TIDO_COD  = :DOC
GROUP BY EXTRACT(MONTH FROM A.AUDI_FECHA)
INTO :ANO,:MES,:CANTIDAD, DOCS
DO
BEGIN
SELECT T.TIDO_NOMLARGO FROM TIPO_DOCUMENTO T WHERE T.TIDO_COD = :DOCS INTO :DOCUMENTO;
IF (:MES = 1) THEN
ENERO = CANTIDAD;
IF (:MES = 2) THEN
FEBRERO = CANTIDAD;
IF (:MES = 3) THEN
MARZO = CANTIDAD;
IF (:MES = 4) THEN
ABRIL = CANTIDAD;
IF (:MES = 5) THEN
MAYO = CANTIDAD;
IF (:MES = 6) THEN
JUNIO = CANTIDAD;
IF (:MES = 7) THEN
JULIO = CANTIDAD;
IF (:MES = 8) THEN
AGOSTO = CANTIDAD;
IF (:MES = 9) THEN
SEPTIEMBRE = CANTIDAD;
IF (:MES = 10) THEN
OCTUBRE = CANTIDAD;
IF (:MES = 11) THEN
NOVIEMBRE = CANTIDAD;
IF (:MES = 12) THEN
DICIEMBRE = CANTIDAD;
TOTAL= ENERO+FEBRERO+MARZO+ABRIL+MAYO+JUNIO+JULIO+AGOSTO+SEPTIEMBRE+OCTUBRE+NOVIEMBRE+DICIEMBRE;
END
SUSPEND;
END
/*Segundo aņo*/
BEGIN
ENERO = 0;
FEBRERO= 0;
MARZO= 0;
ABRIL = 0;
MAYO= 0;
JUNIO= 0;
JULIO= 0;
AGOSTO= 0;
SEPTIEMBRE= 0;
OCTUBRE= 0;
NOVIEMBRE= 0;
DICIEMBRE= 0;
TOTAL = 0;
FECINI = FECINI-365;
FECFIN = FECFIN-365;
ano = EXTRACT(YEAR FROM (FECINI));
DOCUMENTO = 'NO DISPONIBLE';
FOR SELECT EXTRACT(YEAR FROM MAX(AUDI_FECHA)),EXTRACT(MONTH FROM MAX(AUDI_FECHA)), COUNT(*), MAX(A.TIDO_COD)  FROM AUDITORIA A
WHERE A.AUDI_OPER = 'I' AND A.AUDI_FECHA >=(:FECINI) AND A.AUDI_FECHA <=(:FECFIN) AND TIDO_COD  = :DOC
GROUP BY EXTRACT(MONTH FROM A.AUDI_FECHA)
INTO :ANO,:MES,:CANTIDAD, DOCS
DO
BEGIN
SELECT T.TIDO_NOMLARGO FROM TIPO_DOCUMENTO T WHERE T.TIDO_COD = :DOCS INTO :DOCUMENTO;
IF (:MES = 1) THEN
ENERO = CANTIDAD;
IF (:MES = 2) THEN
FEBRERO = CANTIDAD;
IF (:MES = 3) THEN
MARZO = CANTIDAD;
IF (:MES = 4) THEN
ABRIL = CANTIDAD;
IF (:MES = 5) THEN
MAYO = CANTIDAD;
IF (:MES = 6) THEN
JUNIO = CANTIDAD;
IF (:MES = 7) THEN
JULIO = CANTIDAD;
IF (:MES = 8) THEN
AGOSTO = CANTIDAD;
IF (:MES = 9) THEN
SEPTIEMBRE = CANTIDAD;
IF (:MES = 10) THEN
OCTUBRE = CANTIDAD;
IF (:MES = 11) THEN
NOVIEMBRE = CANTIDAD;
IF (:MES = 12) THEN
DICIEMBRE = CANTIDAD;
TOTAL= ENERO+FEBRERO+MARZO+ABRIL+MAYO+JUNIO+JULIO+AGOSTO+SEPTIEMBRE+OCTUBRE+NOVIEMBRE+DICIEMBRE;
END
SUSPEND;
END

END^

SET TERM ; ^

/* Following GRANT statetements are generated automatically */

GRANT SELECT ON AUDITORIA TO PROCEDURE AUDITORIA_DOCUMENTOS_CANT;
GRANT SELECT ON TIPO_DOCUMENTO TO PROCEDURE AUDITORIA_DOCUMENTOS_CANT;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE AUDITORIA_DOCUMENTOS_CANT TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE AUDITORIA_DOCUMENTOS_CANT TO SYSDBA;

