DROP TABLE TMP_REGDADOSSPED
/

CREATE GLOBAL TEMPORARY TABLE TMP_REGDADOSSPED
(
   CDREGISTRO      VARCHAR2(04)   NOT NULL,
   CDCONTREGI      NUMBER         NOT NULL,
   CDCHAVEREG      VARCHAR2(50)   NOT NULL,
   CDCAMPO1        VARCHAR2(500)  NULL,
   CDCAMPO2        VARCHAR2(50)   NULL,
   CDCAMPO3        VARCHAR2(50)   NULL,
   CDCAMPO4        VARCHAR2(50)   NULL,
   CDCAMPO5        VARCHAR2(50)   NULL,
   CONSTRAINT PK_TMP_REGDADOSSPED PRIMARY KEY(CDREGISTRO, CDCONTREGI)) ON COMMIT PRESERVE ROWS
/

CREATE OR REPLACE FUNCTION SPED_INICIO(
   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_LIVROMAG     IN LIVROMAGNETICO.CDLIVROMAG%TYPE,
   P_TIPO         IN NOTAFISCAL.IDSTATUS%TYPE,
   P_FINALIDADE   IN NOTAFISCAL.CDTIPOOPER%TYPE,
   P_INDESCRITU   IN NOTAFISCAL.IDSTATUS%TYPE,
   P_NRSEQARQMAG  IN ARQMAGNETICO.NRSEQARQMAG%TYPE,
   P_PERFIL       IN NOTAFISCAL.IDSTATUS%TYPE,
   P_ATIVIDADE    IN NOTAFISCAL.IDSTATUS%TYPE,
   P_VERSAO       IN VARCHAR2,
   P_IDCLASSIFICESTAB IN DADOSGERSPED.IDCLASSIFICESTAB%TYPE) RETURN NUMBER
AS
   V_CONTREGA        NUMBER;
   V_CODIGO          VARCHAR2(21);
   V_ORIGEM          VARCHAR2(01);
   V_NRSEQUMAPAPU    VARCHAR2(10);
   V_CDSITUCRT       VARCHAR2(01);
BEGIN

   /*VERIFICA SE A EMPRESA E DO SIMPLES NACIONAL, '3' NAO E DO SIMPLES, APENAS 1 E 2*/
   SELECT NVL(MAX(CDSITUCRT), '3') CDSITUCRT
     INTO V_CDSITUCRT
     FROM PARAMEMPRESA
    WHERE CDEMPRESA = P_CDEMPRESA;

   IF V_CDSITUCRT IN('2','3') THEN
       BEGIN
          SELECT NRSEQUMAPAPU
            INTO V_NRSEQUMAPAPU
            FROM MAPAAPURAC M
           WHERE M.CDEMPRESA = P_CDEMPRESA
             AND M.CDINSCESTA = P_CDINSCESTA
             AND M.CDIMPOSTO = P_CDIMPOSTO
             AND M.DTINIPERIODO = P_DTINICIAL
             AND M.DTFIMPERIODO = P_DTFINAL;
       EXCEPTION
          WHEN NO_DATA_FOUND THEN
             V_NRSEQUMAPAPU := NULL;
       END;
   END IF;

   IF V_CDSITUCRT = '1' THEN
       BEGIN
          SELECT NRSEQUMAPAPU
            INTO V_NRSEQUMAPAPU
            FROM MAPAAPURACSN M
           WHERE M.CDEMPRESA = P_CDEMPRESA
             AND M.DTINIPERIODO = P_DTINICIAL
             AND M.DTFIMPERIODO = P_DTFINAL;
       EXCEPTION
          WHEN NO_DATA_FOUND THEN
             V_NRSEQUMAPAPU := NULL;
       END;
   END IF;

   FOR C_REG0000 IN (SELECT ('|0000'                                                       || '|' ||
                            P_VERSAO                                                      || '|' ||
                            P_FINALIDADE                                                  || '|' ||
                            TO_CHAR(P_DTINICIAL,'ddmmyyyy')                               || '|' ||
                            TO_CHAR(P_DTFINAL,'ddmmyyyy')                                 || '|' ||
                            E.NMRAZSOCEMPR                                                || '|' ||
                            REPLACE(REPLACE(REPLACE(REPLACE(I.NRINSJURIEST,'.',''),'-',''),'/',''),' ','')  || '|' ||
                            ''                                                            || '|' ||
                            I.SGESTADO                                                    || '|' ||
                            REPLACE(REPLACE(REPLACE(REPLACE(I.CDINSCESTA,'.',''),'-',''),'/',''),' ','')  || '|' ||
                            LPAD(NVL(M.CDMUNICIBGE,'0'),7,'0')                            || '|' ||
                            E.CDINSCMUNI                                                  || '|' ||
                            ''                                                            || '|' ||
                            P_PERFIL                                                      || '|' ||
                            P_ATIVIDADE                                                   || '|'  ) AS ARQ_0000
                       FROM EMPRESA E, MUNICIPIO M, INSCRESTAD I
                      WHERE I.CDEMPRESA   = P_CDEMPRESA
                        AND I.CDINSCESTA  = P_CDINSCESTA
                        AND I.CDPAIS      = M.CDPAIS
                        AND I.SGESTADO    = M.SGESTADO
                        AND I.CDMUNICIPIO = M.CDMUNICIPIO
                        AND E.CDEMPRESA   = I.CDEMPRESA ) LOOP
      V_CONTREGA := NVL(V_CONTREGA,0) + 1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        ('00'||LPAD(RTRIM(V_CONTREGA), 8, '0'), C_REG0000.ARQ_0000, P_NRSEQARQMAG);
   END LOOP;

   V_CONTREGA := NVL(V_CONTREGA,0) + 1;
   INSERT INTO ARQMAGNETICO
     (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
     ('01'||LPAD(RTRIM(V_CONTREGA), 8, '0'), '|0001'||'|'||'0'|| '|', P_NRSEQARQMAG);

   IF P_ATIVIDADE = '0' THEN
      V_CONTREGA := NVL(V_CONTREGA,0) + 1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        ('01'||LPAD(RTRIM(V_CONTREGA), 8, '0'), '|0002'||'|'||P_IDCLASSIFICESTAB|| '|', P_NRSEQARQMAG);
   END IF;

   FOR C_REG0005 IN (SELECT ('|0005'                      || '|' ||
                            EP.NMRAZSOCEMPR               || '|' ||
                            REPLACE(REPLACE(IE.NRCEPIEST,'.',''),'-','')  || '|' ||
                            IE.DSENDEIEST                 || '|' ||
                            ''                            || '|' ||
                            IE.DSCOMPENDIES               || '|' ||
                            IE.NMBAIRIEST                 || '|' ||
                            SUBSTR(RTRIM(LTRIM(REPLACE(REPLACE(REPLACE(IE.NRTELEIEST, '(',''),')','') ,'-',''))),1,10)  || '|' ||
                            ''                            || '|' ||
                            EP.DSEMAILEMPRESA             || '|'  ) ARQ_0005
                       FROM EMPRESA EP, INSCRESTAD IE
                      WHERE IE.CDEMPRESA  = P_CDEMPRESA
                        AND IE.CDINSCESTA = P_CDINSCESTA
                        AND IE.CDEMPRESA  = EP.CDEMPRESA) LOOP
      V_CONTREGA := NVL(V_CONTREGA,0) + 1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        ('02'||LPAD(RTRIM(V_CONTREGA), 8, '0'),  C_REG0005.ARQ_0005, P_NRSEQARQMAG);
   END LOOP;

   FOR C_REG0015 IN (SELECT ('|0015'        || '|' ||
                            IE.SGESTADO     || '|' ||
                            IE.CDINSCESTAST || '|'  ) ARQ_0015
                       FROM INSCRESTADST IE
                      WHERE IE.CDEMPRESA  = P_CDEMPRESA
                        AND IE.CDINSCESTA = P_CDINSCESTA) LOOP
      V_CONTREGA := NVL(V_CONTREGA,0) + 1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        ('02'||LPAD(RTRIM(V_CONTREGA), 8, '0'),  C_REG0015.ARQ_0015, P_NRSEQARQMAG);
   END LOOP;

   FOR C_REG0100 IN (SELECT ('|0100'                                   || '|' ||
                            NMCONTADOR                                || '|' ||
                            NRCPFRESPONS                              || '|' ||
                            REPLACE(REPLACE(NRCRCCONT2,'/',''),'-','')|| '|' ||
                            ''                                        || '|' ||
                            REPLACE(REPLACE(NRCEP,'/',''),'-','')     || '|' ||
                            LTRIM(RTRIM(DSLOGRADOURO))                || '|' ||
                            ''                                        || '|' ||
                            LTRIM(RTRIM(DSCOMPLLOGRA))                || '|' ||
                            LTRIM(RTRIM(DSBAIRRO))                    || '|' ||
                            SUBSTR(RTRIM(LTRIM(REPLACE(REPLACE(REPLACE(NRTELCONTATO, '(',''),')','') ,'-',''))),1,10)  || '|' ||
                            SUBSTR(RTRIM(LTRIM(REPLACE(REPLACE(REPLACE(NRFAXCONTATO, '(',''),')','') ,'-',''))),1,10)  || '|' ||
                            DSENDINTERN                               || '|' ||
                            M.CDMUNICIBGE                             || '|'  ) ARQ_0100
                       FROM CONTADOR C, MUNICIPIO M, EMPRESA E, INSCRESTAD I
                      WHERE I.CDEMPRESA   = P_CDEMPRESA
                        AND I.CDINSCESTA  = P_CDINSCESTA
                        AND I.CDEMPRESA   = E.CDEMPRESA
                        AND I.CDCONTADOR2 = C.CDCONTADOR2
                        AND C.CDPAIS      = M.CDPAIS
                        AND C.SGESTADO    = M.SGESTADO
                        AND C.CDMUNICIPIO = M.CDMUNICIPIO) LOOP
      V_CONTREGA := NVL(V_CONTREGA,0) + 1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        ('04'||LPAD(RTRIM(V_CONTREGA), 8, '0'), C_REG0100.ARQ_0100, P_NRSEQARQMAG);
   END LOOP;
   RETURN(V_CONTREGA);
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('SPED_INICIO','0.00.000'); END;
/
