CREATE OR REPLACE PROCEDURE SPED_ECF_ABERTURA(
   P_CDEMPRESA IN EMPRESA.CDEMPRESA%TYPE,
   P_ANO IN VARCHAR,
   P_RETIFICADORA IN VARCHAR,
   P_ECDTRANS IN VARCHAR,
   P_NRSEQARQMAG IN VARCHAR,
   P_NRORDENACAO OUT NUMBER)
IS
   V_LINHA VARCHAR2(4000);
   V_NRORDREGARQ NUMBER;
   V_TEMP_ESC VARCHAR2(01);
   V_IMUISEN VARCHAR2(02);
   V_EXISTERTT VARCHAR2(01);
   V_IDFORMAPUR VARCHAR2(03);
   V_COUNT NUMBER;
BEGIN

   IF P_ANO = '2014' THEN
      /* REGISTRO 0000 */
      BEGIN
         SELECT '|0000'        ||'|'|| /* NOME DO REGISTRO */
                'LECF'         ||'|'|| /* TEXTO FIXO */
                '0001'         ||'|'|| /* VERSAO DO LEIAUTE */
                E.NRINSJUREMPR ||'|'|| /* CNPJ */
                E.NMRAZSOCEMPR ||'|'|| /* RAZAO SOCIAL DA EMPRESA */
                R.INDSITINIPER ||'|'|| /* INDICADOR DO INICIO DO PERIODO */
                R.SITESPECIAL  ||'|'|| /* INDICADOR DE SITUACAO ESPECIAL E OUTROS EVENTOS */
                ''             ||'|'|| /* PATRIMONIO REMANESCENTE EM CASO DE CISAO (%) */
                DECODE(R.SITESPECIAL,'0','',TO_CHAR(R.DTSITESP, 'DDMMYYYY')) ||'|'|| /* DATA DA SITUACAO ESPECIAL OU EVENTO */
                '0101'||P_ANO  ||'|'|| /* DATA INICIAL */
                '3112'||P_ANO  ||'|'|| /* DATA FINAL */
                P_RETIFICADORA ||'|'|| /* ESCRITURACAO RETIFICADORA */
                                 '|'|| /* NUMERO DO RECIBO ANTERIOR */
                R.TIPECF       ||'|'|| /* TIPO DA ECF */
                R.CODSCP       ||'|'   /* IDENTIFICACAO DA SCP */
           INTO V_LINHA
           FROM REG0000_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   ELSIF P_ANO = '2015' THEN
      /* REGISTRO 0000 */
      BEGIN
         SELECT '|0000'        ||'|'|| /* NOME DO REGISTRO */
                'LECF'         ||'|'|| /* TEXTO FIXO */
                '0002'         ||'|'|| /* VERSAO DO LEIAUTE */
                E.NRINSJUREMPR ||'|'|| /* CNPJ */
                E.NMRAZSOCEMPR ||'|'|| /* RAZAO SOCIAL DA EMPRESA */
                R.INDSITINIPER ||'|'|| /* INDICADOR DO INICIO DO PERIODO */
                R.SITESPECIAL  ||'|'|| /* INDICADOR DE SITUACAO ESPECIAL E OUTROS EVENTOS */
                ''             ||'|'|| /* PATRIMONIO REMANESCENTE EM CASO DE CISAO (%) */
                DECODE(R.SITESPECIAL,'0','',TO_CHAR(R.DTSITESP, 'DDMMYYYY')) ||'|'|| /* DATA DA SITUACAO ESPECIAL OU EVENTO */
                '0101'||P_ANO  ||'|'|| /* DATA INICIAL */
                '3112'||P_ANO  ||'|'|| /* DATA FINAL */
                P_RETIFICADORA ||'|'|| /* ESCRITURACAO RETIFICADORA */
                                 '|'|| /* NUMERO DO RECIBO ANTERIOR */
                R.TIPECF       ||'|'|| /* TIPO DA ECF */
                R.CODSCP       ||'|'   /* IDENTIFICACAO DA SCP */
           INTO V_LINHA
           FROM REG0000_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   ELSIF P_ANO = '2016' THEN
      /* REGISTRO 0000 */
      BEGIN
         SELECT '|0000'        ||'|'|| /* NOME DO REGISTRO */
                'LECF'         ||'|'|| /* TEXTO FIXO */
                '0003'         ||'|'|| /* VERSAO DO LEIAUTE */
                E.NRINSJUREMPR ||'|'|| /* CNPJ */
                E.NMRAZSOCEMPR ||'|'|| /* RAZAO SOCIAL DA EMPRESA */
                R.INDSITINIPER ||'|'|| /* INDICADOR DO INICIO DO PERIODO */
                R.SITESPECIAL  ||'|'|| /* INDICADOR DE SITUACAO ESPECIAL E OUTROS EVENTOS */
                ''             ||'|'|| /* PATRIMONIO REMANESCENTE EM CASO DE CISAO (%) */
                DECODE(R.SITESPECIAL,'0','',TO_CHAR(R.DTSITESP, 'DDMMYYYY'))||'|'|| /* DATA DA SITUACAO ESPECIAL OU EVENTO */
                '0101'||P_ANO  ||'|'|| /* DATA INICIAL */
                '3112'||P_ANO  ||'|'|| /* DATA FINAL */
                P_RETIFICADORA ||'|'|| /* ESCRITURACAO RETIFICADORA */
                                 '|'|| /* NUMERO DO RECIBO ANTERIOR */
                R.TIPECF       ||'|'|| /* TIPO DA ECF */
                R.CODSCP       ||'|'   /* IDENTIFICACAO DA SCP */
           INTO V_LINHA
           FROM REG0000_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   ELSIF  P_ANO = '2017' THEN
      /* REGISTRO 0000 */
      BEGIN
         SELECT '|0000'        ||'|'|| /* NOME DO REGISTRO */
                'LECF'         ||'|'|| /* TEXTO FIXO */
                '0004'         ||'|'|| /* VERSAO DO LEIAUTE */
                E.NRINSJUREMPR ||'|'|| /* CNPJ */
                E.NMRAZSOCEMPR ||'|'|| /* RAZAO SOCIAL DA EMPRESA */
                R.INDSITINIPER ||'|'|| /* INDICADOR DO INICIO DO PERIODO */
                R.SITESPECIAL  ||'|'|| /* INDICADOR DE SITUACAO ESPECIAL E OUTROS EVENTOS */
                ''             ||'|'|| /* PATRIMONIO REMANESCENTE EM CASO DE CISAO (%) */
                DECODE(R.SITESPECIAL,'0','',TO_CHAR(R.DTSITESP, 'DDMMYYYY'))||'|'|| /* DATA DA SITUACAO ESPECIAL OU EVENTO */
                '0101'||P_ANO  ||'|'|| /* DATA INICIAL */
                '3112'||P_ANO  ||'|'|| /* DATA FINAL */
                P_RETIFICADORA ||'|'|| /* ESCRITURACAO RETIFICADORA */
                                 '|'|| /* NUMERO DO RECIBO ANTERIOR */
                R.TIPECF       ||'|'|| /* TIPO DA ECF */
                R.CODSCP       ||'|'   /* IDENTIFICACAO DA SCP */
           INTO V_LINHA
           FROM REG0000_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   ELSIF P_ANO = '2018' THEN
         /* REGISTRO 0000 */
      BEGIN
         SELECT '|0000'        ||'|'|| /* NOME DO REGISTRO */
                'LECF'         ||'|'|| /* TEXTO FIXO */
                '0005'         ||'|'|| /* VERSAO DO LEIAUTE */
                E.NRINSJUREMPR ||'|'|| /* CNPJ */
                E.NMRAZSOCEMPR ||'|'|| /* RAZAO SOCIAL DA EMPRESA */
                R.INDSITINIPER ||'|'|| /* INDICADOR DO INICIO DO PERIODO */
                R.SITESPECIAL  ||'|'|| /* INDICADOR DE SITUACAO ESPECIAL E OUTROS EVENTOS */
                ''             ||'|'|| /* PATRIMONIO REMANESCENTE EM CASO DE CISAO (%) */
                DECODE(R.SITESPECIAL,'0','',TO_CHAR(R.DTSITESP, 'DDMMYYYY'))||'|'|| /* DATA DA SITUACAO ESPECIAL OU EVENTO */
                '0101'||P_ANO  ||'|'|| /* DATA INICIAL */
                '3112'||P_ANO  ||'|'|| /* DATA FINAL */
                P_RETIFICADORA ||'|'|| /* ESCRITURACAO RETIFICADORA */
                                 '|'|| /* NUMERO DO RECIBO ANTERIOR */
                R.TIPECF       ||'|'|| /* TIPO DA ECF */
                R.CODSCP       ||'|'   /* IDENTIFICACAO DA SCP */
           INTO V_LINHA
           FROM REG0000_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;

   ELSE
         /* REGISTRO 0000 */
      BEGIN
         SELECT '|0000'        ||'|'|| /* NOME DO REGISTRO */
                'LECF'         ||'|'|| /* TEXTO FIXO */
                DECODE(R.SITESPECIAL,'0','0006' ,'0005')        ||'|'|| /* VERSAO DO LEIAUTE */
                E.NRINSJUREMPR ||'|'|| /* CNPJ */
                E.NMRAZSOCEMPR ||'|'|| /* RAZAO SOCIAL DA EMPRESA */
                R.INDSITINIPER ||'|'|| /* INDICADOR DO INICIO DO PERIODO */
                R.SITESPECIAL  ||'|'|| /* INDICADOR DE SITUACAO ESPECIAL E OUTROS EVENTOS */
                ''             ||'|'|| /* PATRIMONIO REMANESCENTE EM CASO DE CISAO (%) */
                DECODE(R.SITESPECIAL,'0','',TO_CHAR(R.DTSITESP, 'DDMMYYYY'))||'|'|| /* DATA DA SITUACAO ESPECIAL OU EVENTO */
                '0101'||P_ANO  ||'|'|| /* DATA INICIAL */
                '3112'||P_ANO  ||'|'|| /* DATA FINAL */
                P_RETIFICADORA ||'|'|| /* ESCRITURACAO RETIFICADORA */
                                 '|'|| /* NUMERO DO RECIBO ANTERIOR */
                R.TIPECF       ||'|'|| /* TIPO DA ECF */
                R.CODSCP       ||'|'   /* IDENTIFICACAO DA SCP */
           INTO V_LINHA
           FROM REG0000_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;

   END IF;

   V_NRORDREGARQ := 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   /* REGISTRO 0001 */
   BEGIN
      SELECT '|0001' ||'|'|| /* NOME DO REGISTRO */
             '0'     ||'|'   /* IDENTIFICACAO DE MOVIMENTO */
        INTO V_LINHA
        FROM DUAL;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_LINHA := NULL;
   END;
   V_NRORDREGARQ := 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   /* O CARACTER L OU C SERA SOMENTE PARA OS LUCROS PRESUMIDOS, PARA O LUCRO REAL, DEVERA SER VAZIO */
   V_IDFORMAPUR := '';
   V_TEMP_ESC := '';
   BEGIN
      SELECT IDFORMAPUR
        INTO V_IDFORMAPUR
        FROM EMPRESA
       WHERE CDEMPRESA = P_CDEMPRESA;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_IDFORMAPUR := NULL;
   END;

   IF V_IDFORMAPUR IN ('LPM', 'LPT') THEN
      V_IDFORMAPUR := 'P';
   ELSIF V_IDFORMAPUR IN ('LRM', 'LRT') THEN
      V_IDFORMAPUR := 'R';
   END IF;
   IF V_IDFORMAPUR = 'P' THEN
      BEGIN
         SELECT 'L'
           INTO V_TEMP_ESC
           FROM REG0010_ECF
          WHERE CDEMPRESA = P_CDEMPRESA
            AND FORMATRIB IN ('3', '4', '5', '7')
            AND P_ECDTRANS = 'N';
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_TEMP_ESC := '';
      END;
      IF V_TEMP_ESC IS NULL THEN
         V_TEMP_ESC := 'C';
      END IF;
   END IF;

   /* VERIFICA SE A EMPRESA E IMUNE OU ISENTA */
   V_IMUISEN := '';
   BEGIN
      SELECT 'OK'
        INTO V_IMUISEN
        FROM REG0010_ECF
       WHERE CDEMPRESA = P_CDEMPRESA
         AND FORMATRIB IN ('8', '9');
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_IMUISEN := NULL;
   END;
   IF P_ANO < 2016 THEN
      /* REGISTRO 0010 */
      BEGIN
         SELECT '|0010'        ||'|'|| /* NOME DO REGISTRO */
                                 '|'|| /* HASCODE DO PERIODO ANTERIOR */
                R.OPTREFIS     ||'|'|| /* ID OPTANTE PELO REFIS */
                R.OPTPAES      ||'|'|| /* ID OPTANTE PELO PAES */
                R.FORMATRIB    ||'|'|| /* FORMA DE TRIBUTACAO DO LUCRO */
                R.FORMAAPUR    ||'|'|| /* PERIODO DE APURACAO IRPJ E CSLL */
                R.CODQUALIFPJ  ||'|'|| /* QUALIFICACAO DA PESSOA JURIDICA */
                R.FORMATRIBPER ||'|'|| /* FORMA DE TRIBUTACAO DO PERIODO */
                DECODE(R.FORMAAPUR, 'T', '', R.MESBALRED)    ||'|'|| /* ID FORMA DE APURACAO DA ESTIMATIVA */
                V_TEMP_ESC     ||'|'|| /* TIPO DE ESCRITURACAO */
                DECODE(V_IMUISEN, 'OK', R.TIPENT, '')       ||'|'|| /* TIPO DE PESSOA JURIDICA (IMUNE OU ISENTA) */
                DECODE(V_IMUISEN, 'OK', R.FORMAAPURI, '')   ||'|'|| /* EXISTENCIA DE ATIVIDADE TRIBUTATA PELO IRPJ
                                                                       E CSLL PARA IMUNES OU ISENTAS */
                DECODE(V_IMUISEN, 'OK', R.APURCSLL, '')     ||'|'|| /* APURACAO DA CSLL PARA IMUNES E ISENTAS */
                R.OPTEXTRTT  ||'|'|| /* OPTANTE PELA EXTINCAO DO RTT */
                R.DIFFCONT   ||'|'   /* EXISTE DIFERENCA ENTRE FCONT E  CONTABILIDADE SOCIETARIA */
           INTO V_LINHA
           FROM REG0010_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   ELSE
      /* REGISTRO 0010 */
      BEGIN
         SELECT '|0010'        ||'|'|| /* NOME DO REGISTRO */
                                 '|'|| /* HASCODE DO PERIODO ANTERIOR */
                R.OPTREFIS     ||'|'|| /* ID OPTANTE PELO REFIS */
                R.OPTPAES      ||'|'|| /* ID OPTANTE PELO PAES */
                R.FORMATRIB    ||'|'|| /* FORMA DE TRIBUTACAO DO LUCRO */
                R.FORMAAPUR    ||'|'|| /* PERIODO DE APURACAO IRPJ E CSLL */
                R.CODQUALIFPJ  ||'|'|| /* QUALIFICACAO DA PESSOA JURIDICA */
                R.FORMATRIBPER ||'|'|| /* FORMA DE TRIBUTACAO DO PERIODO */
                DECODE(R.FORMAAPUR, 'T', '', R.MESBALRED)    ||'|'|| /* ID FORMA DE APURACAO DA ESTIMATIVA */
                V_TEMP_ESC     ||'|'|| /* TIPO DE ESCRITURACAO */
                DECODE(V_IMUISEN, 'OK', R.TIPENT, '')       ||'|'|| /* TIPO DE PESSOA JURIDICA (IMUNE OU ISENTA) */
                DECODE(V_IMUISEN, 'OK', R.FORMAAPURI, '')   ||'|'|| /* EXISTENCIA DE ATIVIDADE TRIBUTATA PELO IRPJ
                                                                       E CSLL PARA IMUNES OU ISENTAS */
                DECODE(V_IMUISEN, 'OK', R.APURCSLL, '')     ||'|'|| /* APURACAO DA CSLL PARA IMUNES E ISENTAS */
                (CASE WHEN R.FORMATRIB IN ('3','4','5','7')
                     THEN R.IDCRITRECRECE
                     ELSE '' END)||'|'       /*Criterio de Reconhecimento de Receitas*/
           INTO V_LINHA
           FROM REG0010_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;

   END IF;
   V_NRORDREGARQ := V_NRORDREGARQ + 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   IF P_ANO < 2016 THEN
      /* REGISTRO 0020 */
      BEGIN
         SELECT '|0020'        ||'|'|| /* NOME DO REGISTRO */
                R.INDALIQCSLL  ||'|'|| /* PJ Sujeita a Aliquota da CSLL de 15% */
                R.INDQTESCP    ||'|'|| /* Quantidade de SCP da PJ */
                R.INDADMFUNCLU ||'|'|| /* Administradora de Fundos e Clubes de Investimento */
                R.INDPARTCONS  ||'|'|| /* Participacoes em Consorcios de Empresas */
                R.INDOPEXT     ||'|'|| /* Operacoes com o Exterior */
                R.INDOPVINC    ||'|'|| /* Operacoes com Pessoa Vinculada/Interposta Pessoa / Pais com  Tributacao Favorecida */
                R.INDPJENQUAD  ||'|'|| /* PJ Enquadrada nos artigos 48 ou 49 da IN RFB no 1.312/2012 */
                R.INDPARTEXT   ||'|'|| /* Participacoes no Exterior */
                R.INDATIVRURAL ||'|'|| /* Atividade Rural */
                R.INDLUCEXP    ||'|'|| /* Lucro da Exploracao */
                R.INDREDISEN   ||'|'|| /* Isencao e Reducao do Imposto para Lucro Presumido */
                R.INDFIN       ||'|'|| /* FINOR/FINAM/FUNRES */
                R.INDDOAELEIT  ||'|'|| /* Doacoes a Campanhas Eleitorais */
                R.INDPARTCOLIG ||'|'|| /* Participacao Permanente em Coligadas ou Controladas */
                R.INDVENDEXP   ||'|'|| /* PJ Efetuou Vendas a Empresa Comercial Exportadora com Fim Especifico de Exportacao */
                R.INDRECEXT    ||'|'|| /* Rendimentos do Exterior ou de Nao Residentes */
                R.INDATIVEXT   ||'|'|| /* Ativos no Exterior */
                R.INDCOMEXP    ||'|'|| /* PJ Comercial Exportadora */
                R.INDPGTOEXT   ||'|'|| /* Pagamentos ao Exterior ou a Nao Residentes */
                R.INDECOMTI    ||'|'|| /* Comercio Eletronico e Tecnologia da Informacao */
                R.INDROYREC    ||'|'|| /* Royalties Recebidos do Brasil e do Exterior */
                R.INDROYPAG    ||'|'|| /* Royalties Pagos a Beneficiarios do Brasil e do Exterior */
                R.INDRENDSERV  ||'|'|| /* Rendimentos Relativos a Servicos, Juros e Dividendos Recebidos do Brasil e do Exterior*/
                R.INDPGTOREM   ||'|'|| /* Pagamentos ou Remessas a Titulo de
                                          Servicos, Juros e Dividendos a
                                          Beneficiarios do Brasil e do Exterior */
                R.INDINOVTEC   ||'|'|| /* Inovacao Tecnologica e Desenvolvimento Tecnologico */
                R.INDCAPINF    ||'|'|| /* Capacitacao de Informatica e Inclusao Digital */
                R.INDPJHAB     ||'|'|| /* PJ Habilitada no Repes, Recap, Padis,
                                          PATVD, Reidi, Repenec, Reicomp,
                                          Retaero, Recine, Residuos Solidos,
                                          Recopa, Copa do Mundo, Retid,
                                          REPNBL-Redes, Reif e Olimpiadas */
                R.INDPOLOAM    ||'|'||   /* Polo Industrial de Manaus e Amazonia Ocidental */
                R.INDZONEXP    ||'|'||   /* Zonas de Processamento de Exportacao */
                R.INDAREACOM   ||'|'   /* Areas de Livre Comercio */
           INTO V_LINHA
           FROM REG0020_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   ELSIF P_ANO  = 2016 THEN
      /* REGISTRO 0020 */
      BEGIN
         SELECT '|0020'        ||'|'|| /* NOME DO REGISTRO */
                R.INDALIQCSLL  ||'|'|| /* PJ Sujeita a Aliquota da CSLL de 15% */
                R.INDQTESCP    ||'|'|| /* Quantidade de SCP da PJ */
                R.INDADMFUNCLU ||'|'|| /* Administradora de Fundos e Clubes de Investimento */
                R.INDPARTCONS  ||'|'|| /* Participacoes em Consorcios de Empresas */
                R.INDOPEXT     ||'|'|| /* Operacoes com o Exterior */
                R.INDOPVINC    ||'|'|| /* Operacoes com Pessoa Vinculada/Interposta Pessoa / Pais com  Tributacao Favorecida */
                R.INDPJENQUAD  ||'|'|| /* PJ Enquadrada nos artigos 48 ou 49 da IN RFB no 1.312/2012 */
                R.INDPARTEXT   ||'|'|| /* Participacoes no Exterior */
                R.INDATIVRURAL ||'|'|| /* Atividade Rural */
                R.INDLUCEXP    ||'|'|| /* Lucro da Exploracao */
                R.INDREDISEN   ||'|'|| /* Isencao e Reducao do Imposto para Lucro Presumido */
                R.INDFIN       ||'|'|| /* FINOR/FINAM/FUNRES */
                R.INDDOAELEIT  ||'|'|| /* Doacoes a Campanhas Eleitorais */
                R.INDPARTCOLIG ||'|'|| /* Participacao Permanente em Coligadas ou Controladas */
                R.INDVENDEXP   ||'|'|| /* PJ Efetuou Vendas a Empresa Comercial Exportadora com Fim Especifico de Exportacao */
                R.INDRECEXT    ||'|'|| /* Rendimentos do Exterior ou de Nao Residentes */
                R.INDATIVEXT   ||'|'|| /* Ativos no Exterior */
                R.INDCOMEXP    ||'|'|| /* PJ Comercial Exportadora */
                R.INDPGTOEXT   ||'|'|| /* Pagamentos ao Exterior ou a Nao Residentes */
                R.INDECOMTI    ||'|'|| /* Comercio Eletronico e Tecnologia da Informacao */
                R.INDROYREC    ||'|'|| /* Royalties Recebidos do Brasil e do Exterior */
                R.INDROYPAG    ||'|'|| /* Royalties Pagos a Beneficiarios do Brasil e do Exterior */
                R.INDRENDSERV  ||'|'|| /* Rendimentos Relativos a Servicos, Juros e Dividendos Recebidos do Brasil e do Exterior*/
                R.INDPGTOREM   ||'|'|| /* Pagamentos ou Remessas a Titulo de
                                          Servicos, Juros e Dividendos a
                                          Beneficiarios do Brasil e do Exterior */
                R.INDINOVTEC   ||'|'|| /* Inovacao Tecnologica e Desenvolvimento Tecnologico */
                R.INDCAPINF    ||'|'|| /* Capacitacao de Informatica e Inclusao Digital */
                R.INDPJHAB     ||'|'|| /* PJ Habilitada no Repes, Recap, Padis,
                                          PATVD, Reidi, Repenec, Reicomp,
                                          Retaero, Recine, Residuos Solidos,
                                          Recopa, Copa do Mundo, Retid,
                                          REPNBL-Redes, Reif e Olimpiadas */
                R.INDPOLOAM    ||'|'||   /* Polo Industrial de Manaus e Amazonia Ocidental */
                R.INDZONEXP    ||'|'||   /* Zonas de Processamento de Exportacao */
                R.INDAREACOM   ||'|'||   /* Areas de Livre Comercio */
                NVL(R.IDENTMULTINACI,'N')   ||'|' /*IND_PAIS_A_PAIS*/
           INTO V_LINHA
           FROM REG0020_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   ELSE
      /* REGISTRO 0020 */
      BEGIN
         SELECT '|0020'        ||'|'|| /* NOME DO REGISTRO */
                R.INDALIQCSLL  ||'|'|| /* PJ Sujeita a Aliquota da CSLL de 15% */
                R.INDQTESCP    ||'|'|| /* Quantidade de SCP da PJ */
                R.INDADMFUNCLU ||'|'|| /* Administradora de Fundos e Clubes de Investimento */
                R.INDPARTCONS  ||'|'|| /* Participacoes em Consorcios de Empresas */
                R.INDOPEXT     ||'|'|| /* Operacoes com o Exterior */
                R.INDOPVINC    ||'|'|| /* Operacoes com Pessoa Vinculada/Interposta Pessoa / Pais com  Tributacao Favorecida */
                R.INDPJENQUAD  ||'|'|| /* PJ Enquadrada nos artigos 48 ou 49 da IN RFB no 1.312/2012 */
                R.INDPARTEXT   ||'|'|| /* Participacoes no Exterior */
                R.INDATIVRURAL ||'|'|| /* Atividade Rural */
                R.INDLUCEXP    ||'|'|| /* Lucro da Exploracao */
                R.INDREDISEN   ||'|'|| /* Isencao e Reducao do Imposto para Lucro Presumido */
                R.INDFIN       ||'|'|| /* FINOR/FINAM/FUNRES */
                R.INDDOAELEIT  ||'|'|| /* Doacoes a Campanhas Eleitorais */
                R.INDPARTCOLIG ||'|'|| /* Participacao Permanente em Coligadas ou Controladas */
                R.INDVENDEXP   ||'|'|| /* PJ Efetuou Vendas a Empresa Comercial Exportadora com Fim Especifico de Exportacao */
                R.INDRECEXT    ||'|'|| /* Rendimentos do Exterior ou de Nao Residentes */
                R.INDATIVEXT   ||'|'|| /* Ativos no Exterior */
                R.INDCOMEXP    ||'|'|| /* PJ Comercial Exportadora */
                R.INDPGTOEXT   ||'|'|| /* Pagamentos ao Exterior ou a Nao Residentes */
                R.INDECOMTI    ||'|'|| /* Comercio Eletronico e Tecnologia da Informacao */
                R.INDROYREC    ||'|'|| /* Royalties Recebidos do Brasil e do Exterior */
                R.INDROYPAG    ||'|'|| /* Royalties Pagos a Beneficiarios do Brasil e do Exterior */
                R.INDRENDSERV  ||'|'|| /* Rendimentos Relativos a Servicos, Juros e Dividendos Recebidos do Brasil e do Exterior*/
                R.INDPGTOREM   ||'|'|| /* Pagamentos ou Remessas a Titulo de
                                          Servicos, Juros e Dividendos a
                                          Beneficiarios do Brasil e do Exterior */
                R.INDINOVTEC   ||'|'|| /* Inovacao Tecnologica e Desenvolvimento Tecnologico */
                R.INDCAPINF    ||'|'|| /* Capacitacao de Informatica e Inclusao Digital */
                R.INDPJHAB     ||'|'|| /* PJ Habilitada no Repes, Recap, Padis,
                                          PATVD, Reidi, Repenec, Reicomp,
                                          Retaero, Recine, Residuos Solidos,
                                          Recopa, Copa do Mundo, Retid,
                                          REPNBL-Redes, Reif e Olimpiadas */
                R.INDPOLOAM    ||'|'||   /* Polo Industrial de Manaus e Amazonia Ocidental */
                R.INDZONEXP    ||'|'||   /* Zonas de Processamento de Exportacao */
                R.INDAREACOM   ||'|'||   /* Areas de Livre Comercio */
                NVL(R.IDENTMULTINACI,'N')   ||'|'|| /*IND_PAIS_A_PAIS*/
                'N'            ||'|'
           INTO V_LINHA
           FROM REG0020_ECF R, EMPRESA E
          WHERE R.CDEMPRESA = E.CDEMPRESA
            AND R.CDEMPRESA = P_CDEMPRESA;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_LINHA := NULL;
      END;
   END IF;
   V_NRORDREGARQ := V_NRORDREGARQ + 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   /* REGISTRO 0030 */
   BEGIN
      SELECT '|0030' ||'|'|| /* Nome do Registro */
             LPAD(NVL(REPLACE(CDNATUJURI, '-', ''),'0'),4,'0')             ||'|'|| /* Natureza Juridica */
             LPAD(NVL(SUBSTR(CDCNAE, 1,7), ' '), 7, ' ') ||'|'|| /* Codigo da Atividade Economica */
             E.DSENDEEMPR    ||'|'|| /* Endereco */
             '000000'        ||'|'|| /* Numero */
             E.DSCOMPENDEMP  ||'|'|| /* Complemento */
             B.NMBAIRRO      ||'|'|| /* Bairro/Distrito */
             ES.SGESTADO     ||'|'|| /* UF */
             M.CDMUNICIBGE   ||'|'|| /* Codigo do Municipio */
             REPLACE(REPLACE(REPLACE(E.NRCEPEMPR, '.', ''), ' ', ''), '-', '') ||'|'|| /* CEP */
             /*LPAD(R.NRDDDTELEREPRES1, 4, '0') ||'|'|| */ -- DDD
             R.NRTELEREPRES1 ||'|'|| /* Telefone */
             E.DSEMAILEMPRESA ||'|' /* EMAIL */
        INTO V_LINHA
        FROM EMPRESA E, ESTADO ES, MUNICIPIO M, BAIRRO B,
             REPRESLEGAL R, REPRESEMPRESA RE
       WHERE RE.CDEMPRESA = E.CDEMPRESA
         AND E.CDEMPRESA = P_CDEMPRESA
         AND E.SGESTADO = ES.SGESTADO
         AND E.CDPAIS = ES.CDPAIS
         AND E.CDMUNICIPIO = M.CDMUNICIPIO
         AND E.SGESTADO = M.SGESTADO
         AND E.CDPAIS = M.CDPAIS
         AND E.CDPAIS = B.CDPAIS
         AND E.SGESTADO = B.SGESTADO
         AND E.CDMUNICIPIO = B.CDMUNICIPIO
         AND E.CDBAIRRO = B.CDBAIRRO
         AND E.CDEMPRESA = RE.CDEMPRESA
         AND R.CDREPRES = RE.CDREPRES
         AND RE.IDATIVO = 'S';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_LINHA := NULL;
   END;

   V_NRORDREGARQ := V_NRORDREGARQ + 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   /* REGISTRO 0930 - PARTE DO REPRESENTANTE DA EMPRESA */
   BEGIN
      SELECT '|0930' || '|' ||
             R.NMREPRES || '|' || /* NOME DO SIGNATARIO */
             R.NRCPFREPRES || '|' ||  /* CPF SIGNATARIO */
             R.CDQUALIFASSINA || '|' || /* CODIGO QUALIFICACAO */
                                 '|' || /* CRC */
             R.DSEMAILREPRES || '|' || /* EMAIL DO SIGNATARIO */
             LPAD(R.NRDDDTELEREPRES1, 4, '0')||R.NRTELEREPRES1 ||'|' /* DDD + TELEFONE DO SIGNATARIO */
        INTO V_LINHA
        FROM REPRESEMPRESA RE, REPRESLEGAL R, QUALIFASSINANTE Q
       WHERE RE.IDATIVO = 'S'
         AND RE.CDEMPRESA = P_CDEMPRESA
         AND RE.CDREPRES = R.CDREPRES
         AND R.CDQUALIFASSINA = Q.CDQUALIFASSINA;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_LINHA := NULL;
   END;

   V_NRORDREGARQ := V_NRORDREGARQ + 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   /* REGISTRO 0930 - PARTE DO CONTADOR */
   BEGIN
      SELECT '|0930' || '|' ||
             C.NMCONTADOR || '|' || /* NOME DO CONTADOR */
             C.NRINSJURCONT || '|' ||  /* CPF CONTADOR */
             C.CDQUALIFASSINA || '|' || /* CODIGO QUALIFICACAO */
             C.NRCRCCONT2     || '|' || /* CRC */
             C.DSENDINTERN    || '|' || /* EMAIL DO CONTADOR */
             REPLACE(REPLACE(C.NRTELCONTATO, '-', ''), ' ', '') ||'|' /* TELEFONE DO CONTADOR */
        INTO V_LINHA
        FROM EMPRESA E, CONTADOR C, QUALIFASSINANTE Q
       WHERE E.CDEMPRESA = P_CDEMPRESA
         AND E.CDCONTADOR2 = C.CDCONTADOR2
         AND C.CDQUALIFASSINA = Q.CDQUALIFASSINA;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_LINHA := NULL;
   END;

   V_NRORDREGARQ := V_NRORDREGARQ + 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   BEGIN
      SELECT '|0990' || '|' || TO_CHAR(COUNT(*)+1) ||'|'
        INTO V_LINHA
        FROM ARQMAGNETICO
       WHERE NRSEQARQMAG = P_NRSEQARQMAG
         AND SUBSTR(DSREGARQMAG, 2, 1) = '0';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_LINHA := NULL;
   END;

   V_NRORDREGARQ := V_NRORDREGARQ + 1;
   INSERT INTO ARQMAGNETICO
      (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
      (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_LINHA, P_NRSEQARQMAG);

   P_NRORDENACAO := V_NRORDREGARQ;
END;
/