CREATE OR REPLACE PROCEDURE SPED_CONTABIL_CABECALHO (
   P_NRSEQARQMAG  IN ARQMAGNETICO.NRSEQARQMAG%TYPE,
   P_CDEMPRESA    IN EMPRESA.CDEMPRESA%TYPE,
   P_DTINICIAL    IN DATE,
   P_DTFINAL      IN DATE,
   P_IDSPED       IN VARCHAR2, /* PARAMETRO QUE DEFINE SE SERA GERADO SPED OU FCONT */
   P_PORTE IN VARCHAR2,
   P_FINALIDADE IN VARCHAR2,
   P_MUDPLANCTB IN VARCHAR2,
   P_CODPLANCTB IN VARCHAR2,
   P_NRORDREGARQ  OUT INTEGER)

IS
   V_NRORDREGARQ INTEGER;
   V_AUXILIAR    VARCHAR2(200);
   V_ANO NUMBER;

BEGIN
   IF (P_IDSPED = 'S') THEN
      BEGIN
         V_NRORDREGARQ := 0;
         V_ANO := TO_NUMBER(TO_CHAR(P_DTFINAL, 'YYYY'));
         /* LEIAUTE DE 2013 ERA O 2.0 */
         IF V_ANO = 2013 THEN
            SELECT '|0000|' || /* Texto Fixo */
                    'LECD|' || /* Texto fixo */
                   TO_CHAR(P_DTINICIAL,'DDMMYYYY')||              '|'|| /* Data Inicial das informacoes do arquivo */
                   TO_CHAR(P_DTFINAL,'DDMMYYYY')||                '|'|| /* Data Final das informacoes do arquivo */
                   E.NMRAZSOCEMPR||                               '|'|| /* Nome da Empresa */
                   E.NRINSJUREMPR||                               '|'|| /* CNPJ da Empresa */
                   E.SGESTADO||                                   '|'|| /* Estado da Empresa */
                   NVL(E.NRINSCESTA,'')||                         '|'|| /* Numero da Insc. Estadual da Empresa */
                   LPAD(NVL(M.CDMUNICIBGE,'0'),7,'0')||           '|'|| /* Numero do codigo do Municipio */
                   NVL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(NVL(E.CDINSCMUNI,''), ' ', ''),'.',''),',',''),'-',''),'/',''),'')|| '|' || /* Insc. Municipal da Empresa */
                   '|'  || /* Indicador de situacao especial, pode ser nulo.
                              0 - Abertura;
                              1 - Cisao;
                              2 - Fusao;
                              3 - Incorporacao;
                              4 - Extincao. */

                   /* Mudancas a partir da versao 3.1.4 do PVA. "Leiaute 2.0" */
                   '0|' || /* Codigo Descricao
                              0 Normal (Inicio no primeiro dia do ano)
                              1 Abertura
                              2 Resultante de cisao/fusao ou remanescente de cisao, ou realizou incorporacao
                              3 Inicio de obrigatoriedade da entrega da ECD no curso do ano calendario*/
                   '1|' || /* Verifica se a empresa possui a NIRE. Cadastro na junta comercial.
                              0 - Para nao tem; 1 - Para contem. */

                   P_FINALIDADE|| '|' || /* Indicador de Finalidade da Escrituracao.
                                          0 - Original;
                                          1 - Substituta com NIRE;
                                          2 - Substituta sem NIRE;
                                          3 - Substituta com troca de NIRE.*/
                   '|'  || /* Codigo HASH da escrituracao substituida. Pode ser nulo */
                   '|'  || /* NIRE da Escrituracao substituida.  Pode ser nulo */
                   P_PORTE ||'|'    /* Identificador de empresa de grande porte
                              0 - Nao Grande Porte;
                              1 - Grande Porte */

                    AS DSLINHA
            INTO V_AUXILIAR
            FROM EMPRESA E, MUNICIPIO M
            WHERE E.CDPAIS = M.CDPAIS
              AND E.SGESTADO = M.SGESTADO
              AND E.CDMUNICIPIO = M.CDMUNICIPIO
              AND E.CDEMPRESA = P_CDEMPRESA;
         ELSIF V_ANO = 2014 THEN /* Leiaute 3.0 */
            SELECT '|0000|' || /* Texto Fixo */
                    'LECD|' || /* Texto fixo */
                   TO_CHAR(P_DTINICIAL,'DDMMYYYY')||              '|'|| /* Data Inicial das informacoes do arquivo */
                   TO_CHAR(P_DTFINAL,'DDMMYYYY')||                '|'|| /* Data Final das informacoes do arquivo */
                   E.NMRAZSOCEMPR||                               '|'|| /* Nome da Empresa */
                   E.NRINSJUREMPR||                               '|'|| /* CNPJ da Empresa */
                   E.SGESTADO||                                   '|'|| /* Estado da Empresa */
                   NVL(E.NRINSCESTA,'')||                         '|'|| /* Numero da Insc. Estadual da Empresa */
                   LPAD(NVL(M.CDMUNICIBGE,'0'),7,'0')||           '|'|| /* Numero do codigo do Municipio */
                   NVL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(NVL(E.CDINSCMUNI,''), ' ', ''),'.',''),',',''),'-',''),'/',''),'')|| '|' || /* Insc. Municipal da Empresa */
                   '|'  || /* Indicador de situacao especial, pode ser nulo.
                              0 - Abertura;
                              1 - Cisao;
                              2 - Fusao;
                              3 - Incorporacao;
                              4 - Extincao. */

                   /* Mudancas a partir da versao 3.1.4 do PVA. "Leiaute 2.0" */
                   '0|' || /* Codigo Descricao
                              0 Normal (Inicio no primeiro dia do ano)
                              1 Abertura
                              2 Resultante de cisao/fusao ou remanescente de cisao, ou realizou incorporacao
                              3 Inicio de obrigatoriedade da entrega da ECD no curso do ano calendario*/
                   '1|' || /* Verifica se a empresa possui a NIRE. Cadastro na junta comercial.
                              0 - Para nao tem; 1 - Para contem. */

                   P_FINALIDADE|| '|' || /* Indicador de Finalidade da Escrituracao.
                                          0 - Original;
                                          1 - Substituta com NIRE;
                                          2 - Substituta sem NIRE;
                                          3 - Substituta com troca de NIRE.*/
                   '|'  || /* Codigo HASH da escrituracao substituida. Pode ser nulo */
                   '|'  || /* NIRE da Escrituracao substituida.  Pode ser nulo */
                   P_PORTE||'|'||  /* Identificador de empresa de grande porte
                                        0 - Nao Grande Porte;
                                        1 - Grande Porte */
                   '0|' ||   /* Identificador de tipo da ECD
                              0  ECD de empresa nao participante de SCP como socio ostensivo.
                              1  ECD de empresa participante de SCP como socio ostensivo.
                              2  ECD da SCP.*/
                   '|'    /* Identificacao da SCP (CNPJ  art. 52 da Instrucao
                             Normativa RFB no 1.470, de 30 de maio de 2014).
                             So deve ser preenchido pela propria SCP com o CNPJ/Codigo
                             da SCP (nao e preenchido pelo socio ostensivo)..*/

                    AS DSLINHA
            INTO V_AUXILIAR
            FROM EMPRESA E, MUNICIPIO M
            WHERE E.CDPAIS = M.CDPAIS
              AND E.SGESTADO = M.SGESTADO
              AND E.CDMUNICIPIO = M.CDMUNICIPIO
              AND E.CDEMPRESA = P_CDEMPRESA;
         ELSIF V_ANO = 2015 THEN /* Leiaute 4.0 */
            SELECT '|0000|' || /* Texto Fixo */
                    'LECD|' || /* Texto fixo */
                   TO_CHAR(P_DTINICIAL,'DDMMYYYY')||              '|'|| /* Data Inicial das informacoes do arquivo */
                   TO_CHAR(P_DTFINAL,'DDMMYYYY')||                '|'|| /* Data Final das informacoes do arquivo */
                   E.NMRAZSOCEMPR||                               '|'|| /* Nome da Empresa */
                   E.NRINSJUREMPR||                               '|'|| /* CNPJ da Empresa */
                   E.SGESTADO||                                   '|'|| /* Estado da Empresa */
                   NVL(E.NRINSCESTA,'')||                         '|'|| /* Numero da Insc. Estadual da Empresa */
                   LPAD(NVL(M.CDMUNICIBGE,'0'),7,'0')||           '|'|| /* Numero do codigo do Municipio */
                   NVL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(NVL(E.CDINSCMUNI,''), ' ', ''),'.',''),',',''),'-',''),'/',''),'')|| '|' || /* Insc. Municipal da Empresa */
                   '|'  || /* Indicador de situacao especial, pode ser nulo.
                              0 - Abertura;
                              1 - Cisao;
                              2 - Fusao;
                              3 - Incorporacao;
                              4 - Extincao. */

                   /* Mudancas a partir da versao 3.1.4 do PVA. "Leiaute 2.0" */
                   '0|' || /* Codigo Descricao
                              0 Normal (Inicio no primeiro dia do ano)
                              1 Abertura
                              2 Resultante de cisao/fusao ou remanescente de cisao, ou realizou incorporacao
                              3 Inicio de obrigatoriedade da entrega da ECD no curso do ano calendario*/
                   '1|' || /* Verifica se a empresa possui a NIRE. Cadastro na junta comercial.
                              0 - Para nao tem; 1 - Para contem. */

                   P_FINALIDADE|| '|' || /* Indicador de Finalidade da Escrituracao.
                                          0 - Original;
                                          1 - Substituta com NIRE;
                                          2 - Substituta sem NIRE;
                                          3 - Substituta com troca de NIRE.*/
                   '|'  || /* Codigo HASH da escrituracao substituida. Pode ser nulo */
                   '|'  || /* NIRE da Escrituracao substituida.  Pode ser nulo */
                   P_PORTE||'|'||  /* Identificador de empresa de grande porte
                                        0 - Nao Grande Porte;
                                        1 - Grande Porte */
                   '0|' ||   /* Identificador de tipo da ECD
                              0  ECD de empresa nao participante de SCP como socio ostensivo.
                              1  ECD de empresa participante de SCP como socio ostensivo.
                              2  ECD da SCP.*/
                   '|'  ||  /* Identificacao da SCP (CNPJ  art. 52 da Instrucao
                             Normativa RFB no 1.470, de 30 de maio de 2014).
                             So deve ser preenchido pela propria SCP com o CNPJ/Codigo
                             da SCP (nao e preenchido pelo socio ostensivo)..*/
                   'N|'     /* Identiicador de moeda funcional
                              S - Sim
                              N - Nao _VERIFICAR */

                    AS DSLINHA
            INTO V_AUXILIAR
            FROM EMPRESA E, MUNICIPIO M
            WHERE E.CDPAIS = M.CDPAIS
              AND E.SGESTADO = M.SGESTADO
              AND E.CDMUNICIPIO = M.CDMUNICIPIO
              AND E.CDEMPRESA = P_CDEMPRESA;
         ELSIF V_ANO IN (2016,2017,2018) THEN /* Leiaute 5.0 */
            SELECT '|0000|' || /* Texto Fixo */
                    'LECD|' || /* Texto fixo */
                   TO_CHAR(P_DTINICIAL,'DDMMYYYY')||              '|'|| /* Data Inicial das informacoes do arquivo */
                   TO_CHAR(P_DTFINAL,'DDMMYYYY')||                '|'|| /* Data Final das informacoes do arquivo */
                   E.NMRAZSOCEMPR||                               '|'|| /* Nome da Empresa */
                   E.NRINSJUREMPR||                               '|'|| /* CNPJ da Empresa */
                   E.SGESTADO||                                   '|'|| /* Estado da Empresa */
                   NVL(E.NRINSCESTA,'')||                         '|'|| /* Numero da Insc. Estadual da Empresa */
                   LPAD(NVL(M.CDMUNICIBGE,'0'),7,'0')||           '|'|| /* Numero do codigo do Municipio */
                   NVL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(NVL(E.CDINSCMUNI,''), ' ', ''),'.',''),',',''),'-',''),'/',''),'')|| '|' || /* Insc. Municipal da Empresa */
                   '|'  || /* Indicador de situacao especial, pode ser nulo.
                              0 - Abertura;
                              1 - Cisao;
                              2 - Fusao;
                              3 - Incorporacao;
                              4 - Extincao. */

                   /* Mudancas a partir da versao 3.1.4 do PVA. "Leiaute 2.0" */
                   '0|' || /* Codigo Descricao
                              0 Normal (Inicio no primeiro dia do ano)
                              1 Abertura
                              2 Resultante de cisao/fusao ou remanescente de cisao, ou realizou incorporacao
                              3 Inicio de obrigatoriedade da entrega da ECD no curso do ano calendario*/
                   '1|' || /* Verifica se a empresa possui a NIRE. Cadastro na junta comercial.
                              0 - Para nao tem; 1 - Para contem. */

                   P_FINALIDADE|| '|' || /* Indicador de Finalidade da Escrituracao.
                                          0 - Original;
                                          1 - Substituta*/
                   '|'  || /* Codigo HASH da escrituracao substituida. Pode ser nulo */
--                   '|'  || /* NIRE da Escrituracao substituida.  Pode ser nulo Retirado na versao 5.0 */
                   P_PORTE||'|'||  /* Identificador de empresa de grande porte
                                        0 - Nao Grande Porte;
                                        1 - Grande Porte */
                   '0|' ||   /* Identificador de tipo da ECD
                              0  ECD de empresa nao participante de SCP como socio ostensivo.
                              1  ECD de empresa participante de SCP como socio ostensivo.
                              2  ECD da SCP.*/
                   '|'  ||  /* Identificacao da SCP (CNPJ  art. 52 da Instrucao
                             Normativa RFB no 1.470, de 30 de maio de 2014).
                             So deve ser preenchido pela propria SCP com o CNPJ/Codigo
                             da SCP (nao e preenchido pelo socio ostensivo)..*/
                   'N|' ||   /* Identiicador de moeda funcional
                              S - Sim
                              N - Nao _VERIFICAR */
                   'N|'     /*Escrituracoes Contabeis Consolidadas:
                              Deve ser preenchido pela empresa controladora obrigada,
                              nos termos da lei, a informacoes demonstracoes contabeis consolidadas
                              S  Sim
                              N  Nao*/

                    AS DSLINHA
            INTO V_AUXILIAR
            FROM EMPRESA E, MUNICIPIO M
            WHERE E.CDPAIS = M.CDPAIS
              AND E.SGESTADO = M.SGESTADO
              AND E.CDMUNICIPIO = M.CDMUNICIPIO
              AND E.CDEMPRESA = P_CDEMPRESA;

         ELSIF V_ANO >= 2019 THEN /* Leiaute 8.0 */
            SELECT '|0000|' || /* Texto Fixo */
                    'LECD|' || /* Texto fixo */
                   TO_CHAR(P_DTINICIAL,'DDMMYYYY')||              '|'|| /* Data Inicial das informacoes do arquivo */
                   TO_CHAR(P_DTFINAL,'DDMMYYYY')||                '|'|| /* Data Final das informacoes do arquivo */
                   E.NMRAZSOCEMPR||                               '|'|| /* Nome da Empresa */
                   E.NRINSJUREMPR||                               '|'|| /* CNPJ da Empresa */
                   E.SGESTADO||                                   '|'|| /* Estado da Empresa */
                   NVL(E.NRINSCESTA,'')||                         '|'|| /* Numero da Insc. Estadual da Empresa */
                   LPAD(NVL(M.CDMUNICIBGE,'0'),7,'0')||           '|'|| /* Numero do codigo do Municipio */
                   NVL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(NVL(E.CDINSCMUNI,''), ' ', ''),'.',''),',',''),'-',''),'/',''),'')|| '|' || /* Insc. Municipal da Empresa */
                   '|'  || /* Indicador de situacao especial, pode ser nulo.
                              0 - Abertura;
                              1 - Cisao;
                              2 - Fusao;
                              3 - Incorporacao;
                              4 - Extincao. */

                   /* Mudancas a partir da versao 3.1.4 do PVA. "Leiaute 2.0" */
                   '0|' || /* Codigo Descricao
                              0 Normal (Inicio no primeiro dia do ano)
                              1 Abertura
                              2 Resultante de cisao/fusao ou remanescente de cisao, ou realizou incorporacao
                              3 Inicio de obrigatoriedade da entrega da ECD no curso do ano calendario*/
                   '1|' || /* Verifica se a empresa possui a NIRE. Cadastro na junta comercial.
                              0 - Para nao tem; 1 - Para contem. */

                   P_FINALIDADE|| '|' || /* Indicador de Finalidade da Escrituracao.
                                          0 - Original;
                                          1 - Substituta*/
                   '|'  || /* Codigo HASH da escrituracao substituida. Pode ser nulo */
--                   '|'  || /* NIRE da Escrituracao substituida.  Pode ser nulo Retirado na versao 5.0 */
                   P_PORTE||'|'||  /* Identificador de empresa de grande porte
                                        0 - Nao Grande Porte;
                                        1 - Grande Porte */
                   '0|' ||   /* Identificador de tipo da ECD
                              0  ECD de empresa nao participante de SCP como socio ostensivo.
                              1  ECD de empresa participante de SCP como socio ostensivo.
                              2  ECD da SCP.*/
                   '|'  ||  /* Identificacao da SCP (CNPJ  art. 52 da Instrucao
                             Normativa RFB no 1.470, de 30 de maio de 2014).
                             So deve ser preenchido pela propria SCP com o CNPJ/Codigo
                             da SCP (nao e preenchido pelo socio ostensivo)..*/
                   'N|' ||   /* Identiicador de moeda funcional
                              S - Sim
                              N - Nao _VERIFICAR */
                   'N|' ||    /*Escrituracoes Contabeis Consolidadas:
                              Deve ser preenchido pela empresa controladora obrigada,
                              nos termos da lei, a informacoes demonstracoes contabeis consolidadas
                              S  Sim
                              N  Nao*/
                   '0|'||/*Indicador da modalidade de escrituracao centralizada */
                    P_MUDPLANCTB||'|'|| /*IND_MUDANC_PC - Indicador de mudanca no plano de contas 0- Nao houve 1 - Houve*/
                    P_CODPLANCTB||'|'    /*COD_PLAN_REF*  - Codigo do plano de contas referencial valores de 1 a 10*/

                    AS DSLINHA
            INTO V_AUXILIAR
            FROM EMPRESA E, MUNICIPIO M
            WHERE E.CDPAIS = M.CDPAIS
              AND E.SGESTADO = M.SGESTADO
              AND E.CDMUNICIPIO = M.CDMUNICIPIO
              AND E.CDEMPRESA = P_CDEMPRESA;
         END IF;

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

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

         FOR C_0007 IN (
         SELECT '|0007|'||
                I.SGESTADO||'|'||
                I.CDINSCESTA||'|' AS DSLINHA
         FROM INSCRESTAD I
         WHERE I.CDEMPRESA = P_CDEMPRESA
         ORDER BY I.SGESTADO, I.CDINSCESTA) LOOP

            V_NRORDREGARQ := V_NRORDREGARQ + 1;
            INSERT INTO ARQMAGNETICO
              (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
            VALUES
              (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), C_0007.DSLINHA, P_NRSEQARQMAG);
         END LOOP;

		 FOR C_REG0150_REG0180 IN (
         SELECT '|0150'                                                                         ||'|'||                          --CAMPO 01
                'F' || A.CDFORNECED                                                             ||'|'||                          --CAMPO 02
                TRIM(F.NMRAZSOCFORN)                                                            ||'|'||                          --CAMPO 03
                LPAD(P.CDPAISBACEN, 5, '0')                                                     ||'|'||                          --CAMPO 04
                CASE WHEN IDTPIJURFORN = 'J' THEN
                  REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSJURFORN, '.'), '/'), '-'), '') || '|'                                   --CAMPO 05 E 06
                ELSE
                  '|' || REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSJURFORN, '.'), '/'), '-'), '')                                   --CAMPO 05 E 06
                END                                                                             ||'|'||
                ''                                                                              ||'|'||                          --CAMPO 07
                E.SGESTADO                                                                      ||'|'||                          --CAMPO 08
                REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSESTFORN, '.'), '/'), '-'), '')           ||'|'||                          --CAMPO 09
                ''                                                                              ||'|'||                          --CAMPO 10
                M.CDMUNICIBGE                                                                   ||'|'||                          --CAMPO 11
                REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSMUNFORN, '.'), '/'), '-'), '')           ||'|'||                          --CAMPO 12
                REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSCSUFRAMAFO, '.'), '/'), '-'), '')        ||'|' AS DSLINHA_0150,           --CAMPO 13
                '|0180'                                                                         ||'|'||                          --CAMPO 01
                A.IDCODRELAC                                                                    ||'|'||                          --CAMPO 02
                REPLACE(A.DTINICIAL, '/', '')                                                   ||'|'||                          --CAMPO 03
                REPLACE(A.DTFINAL, '/', '')                                                     ||'|' AS DSLINHA_0180            --CAMPO 04
           FROM PARAMABEECD A
           JOIN FORNECEDOR  F ON (F.CDFORNECED = A.CDFORNECED AND A.IDTPPARTECD = 'F')
           JOIN ENDEFORN    E ON (E.CDFORNECED = F.CDFORNECED AND E.IDTPENDEFORN = F.IDENDEMISFOR)
           JOIN ESTADO      T ON (T.CDPAIS = E.CDPAIS AND  T.SGESTADO = E.SGESTADO)
           JOIN MUNICIPIO   M ON (M.CDMUNICIPIO = E.CDMUNICIPIO AND M.SGESTADO = E.SGESTADO)
           JOIN PAIS        P ON (P.CDPAIS = E.CDPAIS)
          UNION ALL
         SELECT '|0150'                                                                         ||'|'||                          --CAMPO 01
                'C' || A.CDCLIENTE                                                              ||'|'||                          --CAMPO 02
                TRIM(C.NMRAZSOCCLIE)                                                            ||'|'||                          --CAMPO 03
                LPAD(P.CDPAISBACEN, 5, '0')                                                     ||'|'||                          --CAMPO 04
                CASE WHEN IDTPIJURCLIE = 'J' THEN
                  REPLACE(REPLACE(REPLACE(REPLACE(C.NRINSJURCLIE, '.'), '/'), '-'), '') || '|'                                   --CAMPO 05 E 06
                ELSE
                  '|' || REPLACE(REPLACE(REPLACE(REPLACE(C.NRINSJURCLIE, '.'), '/'), '-'), '')                                   --CAMPO 05 E 06
                END                                                                             ||'|'||
                ''                                                                              ||'|'||                          --CAMPO 07
                E.SGESTADO                                                                      ||'|'||                          --CAMPO 08
                REPLACE(REPLACE(REPLACE(REPLACE(C.NRINSESTCLIE, '.'), '/'), '-'), '')           ||'|'||                          --CAMPO 09
                ''                                                                              ||'|'||                          --CAMPO 10
                M.CDMUNICIBGE                                                                   ||'|'||                          --CAMPO 11
                REPLACE(REPLACE(REPLACE(REPLACE(C.NRINSMUNICLIE, '.'), '/'), '-'), '')          ||'|'||                          --CAMPO 12
                REPLACE(REPLACE(REPLACE(REPLACE(C.NRINSCSUFRAMACL, '.'), '/'), '-'), '')        ||'|' AS DSLINHA_0150,           --CAMPO 13
                '|0180'                                                                         ||'|'||                          --CAMPO 01
                A.IDCODRELAC                                                                    ||'|'||                          --CAMPO 02
                REPLACE(A.DTINICIAL, '/', '')                                                   ||'|'||                          --CAMPO 03
                REPLACE(A.DTFINAL, '/', '')                                                     ||'|' AS DSLINHA_0180            --CAMPO 04
           FROM PARAMABEECD A
           JOIN CLIENTE     C ON (C.CDCLIENTE = A.CDCLIENTE AND A.IDTPPARTECD = 'C')
           JOIN ENDECLIE    E ON (E.CDCLIENTE = C.CDCLIENTE AND E.IDTPENDECLIE = C.IDENDEMISCLI)
           JOIN ESTADO      T ON (T.CDPAIS = E.CDPAIS AND  T.SGESTADO = E.SGESTADO)
           JOIN MUNICIPIO   M ON (M.CDMUNICIPIO = E.CDMUNICIPIO AND M.SGESTADO = E.SGESTADO)
           JOIN PAIS        P ON (P.CDPAIS = E.CDPAIS)
          UNION ALL
         SELECT '|0150'                                                                         ||'|'||                          --CAMPO 01
                'L' || A.CDFILIAL                                                               ||'|'||                          --CAMPO 02
                TRIM(F.NMRAZSOCFILI)                                                            ||'|'||                          --CAMPO 03
                LPAD(P.CDPAISBACEN, 5, '0')                                                     ||'|'||                          --CAMPO 04
                CASE WHEN IDTPIJURFILI = 'J' THEN
                  REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSJURFILI, '.'), '/'), '-'), '') || '|'                                   --CAMPO 05 E 06
                ELSE
                  '|' || REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSJURFILI, '.'), '/'), '-'), '')                                   --CAMPO 05 E 06
                END                                                                             ||'|'||
                ''                                                                              ||'|'||                          --CAMPO 07
                E.SGESTADO                                                                      ||'|'||                          --CAMPO 08
                REPLACE(REPLACE(REPLACE(REPLACE(F.CDINSCESTA, '.'), '/'), '-'), '')             ||'|'||                          --CAMPO 09
                ''                                                                              ||'|'||                          --CAMPO 10
                M.CDMUNICIBGE                                                                   ||'|'||                          --CAMPO 11
                REPLACE(REPLACE(REPLACE(REPLACE(F.CDINSCMUNI, '.'), '/'), '-'), '')             ||'|'||                          --CAMPO 12
                REPLACE(REPLACE(REPLACE(REPLACE(F.NRINSCSUFRAMAFI, '.'), '/'), '-'), '')        ||'|' AS DSLINHA_0150,           --CAMPO 13
                '|0180'                                                                         ||'|'||                          --CAMPO 01
                A.IDCODRELAC                                                                    ||'|'||                          --CAMPO 02
                REPLACE(A.DTINICIAL, '/', '')                                                   ||'|'||                          --CAMPO 03
                REPLACE(A.DTFINAL, '/', '')                                                     ||'|' AS DSLINHA_0180            --CAMPO 04
           FROM PARAMABEECD A
           JOIN FILIAL      F ON (F.CDFILIAL = A.CDFILIAL AND A.IDTPPARTECD = 'L')
           JOIN ENDEFILI    E ON (E.CDFILIAL = F.CDFILIAL AND E.IDTPENDEFILI = F.IDENDEMISFIL)
           JOIN ESTADO      T ON (T.CDPAIS = E.CDPAIS AND  T.SGESTADO = E.SGESTADO)
           JOIN MUNICIPIO   M ON (M.CDMUNICIPIO = E.CDMUNICIPIO AND M.SGESTADO = E.SGESTADO)
           JOIN PAIS        P ON (P.CDPAIS = E.CDPAIS)) LOOP
         V_NRORDREGARQ := V_NRORDREGARQ + 1;
         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
           (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), C_REG0150_REG0180.DSLINHA_0150, P_NRSEQARQMAG);

         V_NRORDREGARQ := V_NRORDREGARQ + 1;
         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
           (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), C_REG0150_REG0180.DSLINHA_0180, P_NRSEQARQMAG);
         END LOOP;

         V_NRORDREGARQ := V_NRORDREGARQ + 1;
         SELECT '|0990|'||
                TO_CHAR(COUNT(NRSEQARQMAG) + 1)||'|'  AS DSLINHA
         INTO V_AUXILIAR
         FROM ARQMAGNETICO
         WHERE NRSEQARQMAG = P_NRSEQARQMAG;

         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
           (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_AUXILIAR, P_NRSEQARQMAG);
         P_NRORDREGARQ := V_NRORDREGARQ;
      END;
   ELSIF (P_IDSPED = 'F') THEN
      BEGIN
         V_NRORDREGARQ := 0;

         SELECT '|0000|'||
                'LALU|'||
                TO_CHAR(P_DTINICIAL,'DDMMYYYY')||'|'|| /* Data Inicial das informacoes do arquivo */
                TO_CHAR(P_DTFINAL,'DDMMYYYY')||'|'|| /* Data Final das informacoes do arquivo */
                E.NMRAZSOCEMPR||'|'||
                E.NRINSJUREMPR||'|'||
                E.SGESTADO||'|'||
                NVL(E.NRINSCESTA,'')||'|'||
                LPAD(NVL(M.CDMUNICIBGE,'0'),7,'0')||'|'||
                NVL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(NVL(E.CDINSCMUNI,''), ' ', ''),'.',''),',',''),'-',''),'/',''),'')||'||0|' AS DSLINHA
         INTO V_AUXILIAR
         FROM EMPRESA E, MUNICIPIO M
         WHERE E.CDPAIS = M.CDPAIS
           AND E.SGESTADO = M.SGESTADO
           AND E.CDMUNICIPIO = M.CDMUNICIPIO
           AND E.CDEMPRESA = P_CDEMPRESA;

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

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

         FOR C_0007 IN (
         SELECT '|0007|'||
                I.SGESTADO||'|'||
                I.CDINSCESTA||'|' AS DSLINHA
         FROM INSCRESTAD I
         WHERE I.CDEMPRESA = P_CDEMPRESA
         ORDER BY I.SGESTADO, I.CDINSCESTA) LOOP

            V_NRORDREGARQ := V_NRORDREGARQ + 1;
            INSERT INTO ARQMAGNETICO
              (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
            VALUES
              (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), C_0007.DSLINHA, P_NRSEQARQMAG);
         END LOOP;

         V_NRORDREGARQ := V_NRORDREGARQ + 1;
         SELECT '|0990|'||
                TO_CHAR(COUNT(NRSEQARQMAG) + 1)||'|'  AS DSLINHA
         INTO V_AUXILIAR
         FROM ARQMAGNETICO
         WHERE NRSEQARQMAG = P_NRSEQARQMAG;

         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
           (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), V_AUXILIAR, P_NRSEQARQMAG);

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

         /* I010 - Registro que identifica a forma de escrituracao.
           Neste caso o G, de diario geral. Somente o SPED contabil teve seu leiaute alterado.
           Sendo assim, o FCont continua com a versao 1.00*/
         V_NRORDREGARQ := V_NRORDREGARQ + 1;
         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
           (LPAD(TO_CHAR(V_NRORDREGARQ),10,'0'), '|I010|G|1.00|', P_NRSEQARQMAG);

         P_NRORDREGARQ := V_NRORDREGARQ;
      END;
   END IF;
END;
/