CREATE OR REPLACE PROCEDURE ADRC_ST_PARANA(
   P_CDEMPRESA        IN EMPRESA.CDEMPRESA%TYPE,
   P_CDINSCESTA       IN EMPRESA.CDINSCESTA%TYPE,
   P_VERSAO           IN VARCHAR2,
   P_DTINICIAL        IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINAL          IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_FINALIDADE       IN VARCHAR2,
   P_NRREGESPECIAL    IN VARCHAR2,
   P_IDCENTRDISTR     IN VARCHAR2,
   P_CDEMPRESADISTR   IN EMPRESA.CDEMPRESA%TYPE,
   P_CDINSCESTADISTR  IN EMPRESA.CDINSCESTA%TYPE,
   P_NRSEQARQMAG      IN ARQMAGNETICO.NRSEQARQMAG%TYPE)
AS
   V_CONTREG          NUMBER;
BEGIN
   V_CONTREG := 0;

   IF P_IDCENTRDISTR = '0' THEN
      /*Registro 0000  Abertura do arquivo e identificacao do contribuinte - Estabelecimento que nao e Centro de Ditribuicao*/
      FOR C_REG0000 IN (SELECT '0000'          ||'|'||
                               P_VERSAO        ||'|'||
                               TO_CHAR(P_DTINICIAL,'MMYYYY') ||'|'||
                               REPLACE(REPLACE(REPLACE(I.NRINSJURIEST,'.'),'/'),'-')  ||'|'||
                               REPLACE(REPLACE(I.CDINSCESTA,'/'),'-')                 ||'|'||
                               RETIRA_CARACTER_ESPECIAL(E.NMRAZSOCEMPR,'S')           ||'|'||
                               P_FINALIDADE    ||'|'||
                               P_NRREGESPECIAL ||'|'||
                               REPLACE(REPLACE(REPLACE(ID.NRINSJURIEST,'.'),'/'),'-') ||'|'||
                               REPLACE(REPLACE(ID.CDINSCESTA,'/'),'-') AS REG_0000
                          FROM EMPRESA E, INSCRESTAD I, INSCRESTAD ID
                         WHERE E.CDEMPRESA      = P_CDEMPRESA
                           AND I.CDEMPRESA      = P_CDEMPRESA
                           AND I.CDINSCESTA     = P_CDINSCESTA
                           AND ID.CDEMPRESA     = P_CDEMPRESADISTR
                           AND ID.CDINSCESTA    = P_CDINSCESTADISTR) LOOP
         INSERT INTO ARQMAGNETICO
            (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
            ('0000'||LPAD(RTRIM(V_CONTREG),6,'0'), C_REG0000.REG_0000, P_NRSEQARQMAG);
         V_CONTREG :=  NVL(V_CONTREG,0) + 1;
      END LOOP;

      V_CONTREG := ADRC_ST_NAO_CENTRALIZADOR(P_CDEMPRESA,P_CDINSCESTA,P_DTINICIAL,P_DTFINAL,P_NRSEQARQMAG,P_IDCENTRDISTR,V_CONTREG);
   ELSE
      /*Registro 0001  Abertura do arquivo e identificacao do contribuinte - Estabelecimento Centro de Distribuicao*/
      FOR C_REG0001 IN (SELECT '0001'          ||'|'||
                               P_VERSAO        ||'|'||
                               TO_CHAR(P_DTINICIAL,'MMYYYY') ||'|'||
                               REPLACE(REPLACE(REPLACE(I.NRINSJURIEST,'.'),'/'),'-') ||'|'||
                               REPLACE(REPLACE(I.CDINSCESTA,'/'),'-')                ||'|'||
                               RETIRA_CARACTER_ESPECIAL(E.NMRAZSOCEMPR,'S')          ||'|'||
                               P_FINALIDADE    AS REG_0001
                          FROM EMPRESA E, INSCRESTAD I
                         WHERE E.CDEMPRESA      = P_CDEMPRESA
                           AND I.CDEMPRESA      = P_CDEMPRESA
                           AND I.CDINSCESTA     = P_CDINSCESTA) LOOP
         INSERT INTO ARQMAGNETICO
            (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
            ('0001'||LPAD(RTRIM(V_CONTREG),6,'0'), C_REG0001.REG_0001, P_NRSEQARQMAG);
         V_CONTREG :=  NVL(V_CONTREG,0) + 1;
      END LOOP;

      V_CONTREG := ADRC_ST_CENTRALIZADOR(P_CDEMPRESA,P_CDINSCESTA,P_DTINICIAL,P_DTFINAL,P_NRSEQARQMAG,P_IDCENTRDISTR,V_CONTREG);
   END IF;

   /*Registro 9999  Encerramento do arquivo*/
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      ('9999'||LPAD(RTRIM(V_CONTREG),6,'0'), '9999'||'|'||LPAD(NVL(V_CONTREG,0)+1,9,'0'), P_NRSEQARQMAG);
END;
/