CREATE OR REPLACE PROCEDURE ARQUIVO_DIC(
   P_REGISTRO    IN VARCHAR2,
   P_CDIMPOSTO   IN IMPOSTO.CDIMPOSTO%TYPE,
   P_CDEMPRESA   IN EMPRESA.CDEMPRESA%TYPE,
   P_CDINSCESTA  IN EMPRESA.CDINSCESTA%TYPE,
   P_DTINICIAL   IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINAL     IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTPOSICAO   IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_CDPAIS      IN ESTADO.CDPAIS%TYPE,
   P_SGESTADO    IN ESTADO.SGESTADO%TYPE,
   P_BENEFICIO   IN NOTAFISCAL.CDEMPRESA%TYPE,
   P_MODELO      IN NOTAFISCAL.CDEMPRESA%TYPE,
   P_PORTARIA    IN NOTAFISCAL.CDEMPRESA%TYPE,
   P_LIVRO       IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_GRUPOPRD    IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_NRSEQARQMAG IN VARCHAR2)

AS
   V_CONTGERAL      NUMBER;
   V_CONTADOR       NUMBER;
   V_SOMATOTAL      NUMBER;
   V_STTOTAL        VARCHAR2(4000);
   V_REGISTRO50     VARCHAR2(100);
   V_REGISTRO51     VARCHAR2(100);
   V_REGISTRO53     VARCHAR2(100);
   V_REGISTRO54     VARCHAR2(100);
   V_REGISTRO55     VARCHAR2(100);
   V_REGISTRO60     VARCHAR2(100);
   V_REGISTRO61     VARCHAR2(100);
   V_REGISTRO61R    VARCHAR2(100);
   V_REGISTRO70     VARCHAR2(100);
   V_REGISTRO71     VARCHAR2(100);
   V_REGISTRO74     VARCHAR2(100);
   V_REGISTRO75     VARCHAR2(100);
   V_REGISTRO88     VARCHAR2(100);
   V_REGISTRO90     VARCHAR2(100);
BEGIN
   V_CONTADOR := 0;

-------------------------------------------------------   /* DIC 10 */   ---------------------------------------------------

   V_CONTADOR := ARQUIVO_DIC_10(P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_BENEFICIO, P_MODELO, P_PORTARIA,
                                P_NRSEQARQMAG);
   V_SOMATOTAL := 1;
----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 50 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,1,1) = 'S' THEN
      V_REGISTRO50 := NVL(ARQUIVO_DIC_50(P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_CDIMPOSTO, P_CDPAIS, P_SGESTADO,
                                         P_NRSEQARQMAG, V_CONTADOR),'0');
      IF V_REGISTRO50 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO50,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO50,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO50,21,LENGTH(V_REGISTRO50)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 51 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,2,1) = 'S' THEN
      V_REGISTRO51 := ARQUIVO_DIC_51(P_LIVRO, P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL,
                                     P_CDPAIS, P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, V_STTOTAL, V_CONTGERAL);
      IF V_REGISTRO51 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO51,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO51,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO51,21,LENGTH(V_REGISTRO51)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 53 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,3,1) = 'S' THEN
      V_REGISTRO53 := ARQUIVO_DIC_53(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_CDPAIS,
                                     P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, V_STTOTAL, V_CONTGERAL);
      IF V_REGISTRO53 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO53,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO53,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO53,21,LENGTH(V_REGISTRO53)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 54 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,4,1) = 'S' THEN
      V_REGISTRO54 := ARQUIVO_DIC_54(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_CDPAIS,
                                     P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, V_STTOTAL);
      IF V_REGISTRO54 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO54,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO54,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO54,21,LENGTH(V_REGISTRO54)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 55 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,5,1) = 'S' THEN
        V_REGISTRO55 := ARQUIVO_DIC_55(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_NRSEQARQMAG,
                                       V_CONTADOR, V_CONTGERAL);
      IF V_REGISTRO55 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO55,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO55,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO55,21,LENGTH(V_REGISTRO55)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------   /* DIC 60 M_A_R*/   ------------------------------------------------
   IF SUBSTR(P_REGISTRO,6,1) = 'S' THEN
      V_REGISTRO60 := ARQUIVO_DIC_A_M_R(P_REGISTRO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_NRSEQARQMAG,
                                        V_CONTADOR, V_STTOTAL);
      IF V_REGISTRO60 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO60,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO60,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO60,21,LENGTH(V_REGISTRO60)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 61 e 61R */   ---------------------------------------------
   IF SUBSTR(P_REGISTRO,7,1) = 'S' THEN
      V_REGISTRO61 := ARQUIVO_DIC_61(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_DTPOSICAO,
                                     P_CDPAIS, P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, V_STTOTAL);
      IF V_REGISTRO61 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO61,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO61,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO61,21,LENGTH(V_REGISTRO61)));
      END IF;
  /*    V_REGISTRO61R := ARQUIVO_DIC_61R(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_DTPOSICAO,
                                       P_CDPAIS, P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, V_STTOTAL);

      IF V_REGISTRO61R > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO61R,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO61R,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO61R,21,LENGTH(V_REGISTRO61R)));
      END IF;*/
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 70 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,8,1) = 'S' THEN
      V_REGISTRO70 := ARQUIVO_DIC_70(P_LIVRO, P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_CDPAIS,
                                     P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, V_STTOTAL);
      IF V_REGISTRO70 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO70,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO70,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO70,21,LENGTH(V_REGISTRO70)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 71 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,9,1) = 'S' THEN
      V_REGISTRO71 := ARQUIVO_DIC_71(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_CDPAIS,
                                     P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, V_STTOTAL);
      IF V_REGISTRO71 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO71,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO71,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO71,21,LENGTH(V_REGISTRO71)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------   /* DIC 74 */   -------------------------------------------------
   IF SUBSTR(P_REGISTRO,10,1) = 'S' THEN
      V_REGISTRO74 := ARQUIVO_DIC_74(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL,
                                      P_NRSEQARQMAG, P_DTPOSICAO, V_CONTADOR, V_STTOTAL);
      IF V_REGISTRO74 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO74,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO74,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO74,21,LENGTH(V_REGISTRO74)));
      END IF;
   END IF;


----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 75 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,11,1) = 'S' THEN
      V_REGISTRO75 := ARQUIVO_DIC_75(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_NRSEQARQMAG,
                                     v_CONTADOR, P_GRUPOPRD, V_STTOTAL);
      IF V_REGISTRO75 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO75,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO75,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO75,21,LENGTH(V_REGISTRO75)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 88 */   ---------------------------------------------------
   IF SUBSTR(P_REGISTRO,12,1) = 'S' THEN
      V_REGISTRO88 := ARQUIVO_DIC_88(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_NRSEQARQMAG,
                                     v_CONTADOR, V_STTOTAL);
      IF V_REGISTRO88 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO88,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO88,11,10));
         V_STTOTAL   := TO_NUMBER(SUBSTR(V_REGISTRO88,21,LENGTH(V_REGISTRO88)));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIC 90 */   ---------------------------------------------------
   V_REGISTRO90 := ARQUIVO_DIC_90(P_CDEMPRESA, P_CDINSCESTA, V_STTOTAL, V_SOMATOTAL+1, V_CONTADOR, P_NRSEQARQMAG);

   DELETE FROM TMP_REGISTRO_PRODUTO;
   COMMIT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('ARQUIVO_DIC','5.30.xxx'); END;
/

