CREATE OR REPLACE FUNCTION ARQUIVO_DIC_74(
   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_SEQUENCIAL   IN ARQMAGNETICO.NRSEQARQMAG%TYPE,
   P_DTPOSICAO    IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_CONTADOR     IN NUMBER,
   P_CONTTOTAL    IN VARCHAR2) RETURN VARCHAR2
AS
   V_IPI            VARCHAR2(02);
   V_STTOTAL        VARCHAR2(160);
   V_CDARVPROD      VARCHAR2(20);
   V_CONTGERAL      NUMBER;
   V_CONTREG        NUMBER;
   V_CONTADOR       NUMBER;
BEGIN
   V_CONTADOR := P_CONTADOR;
   FOR C_REGISTRO74 IN (SELECT '74'||
                               TO_CHAR(DTINVEFISCAL,'yyyymmdd')||
                               RPAD(CDARVPROD,14, ' ')||
                               LTRIM(REPLACE(TO_CHAR(QTESTINVFISC,'00000000000.00'),'.',''))||
                               LTRIM(REPLACE(TO_CHAR(VRTOTINVFISC,'00000000000.00'),'.',''))||
                               '1'||
                               RPAD('0', 14, '0')||
                               RPAD(' ', 14, ' ')||
                               RPAD(' ',  2, ' ')||
                               RPAD(' ', 103, ' ') AS DSARQMAG,
                               CDARVPROD, NVL(CDCLASFISC, ' ') AS CDCLASFISC, NMPRODUTO, SGUNIDADE, DTINVEFISCAL
                        FROM (SELECT I.VRTOTINVFISC ,I.QTESTINVFISC ,I.DTINVEFISCAL, P.CDARVPROD,
                                     NVL(I.CDCLASFISC,P.CDCLASFISC) AS CDCLASFISC, P.NMPRODUTO, P.SGUNIDADE
                                FROM INVENTFISC I, PRODUTO P
                               WHERE I.CDEMPRESA    = P_CDEMPRESA
                                 AND I.CDINSCESTA   = P_CDINSCESTA
                                 AND I.DTINVEFISCAL BETWEEN  P_DTINICIAL AND P_DTFINAL
                                 AND I.CDPRODUTO    = P.CDPRODUTO
                                 AND I.QTESTINVFISC <> 0)) LOOP

      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        (LPAD(V_CONTADOR, 10, '0'), C_REGISTRO74.DSARQMAG, P_SEQUENCIAL);

      V_CONTADOR  := NVL(V_CONTADOR,0)+1;
      V_CONTREG   := NVL(V_CONTREG,0) + 1;
      V_CONTGERAL := NVL(V_CONTGERAL,0) + 1;

      BEGIN
         SELECT MAX(CDARVPROD)
           INTO V_CDARVPROD
           FROM TMP_REGISTRO_PRODUTO
          WHERE CDARVPROD = C_REGISTRO74.CDARVPROD;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_CDARVPROD := NULL;
      END;

      IF V_CDARVPROD IS NULL THEN
         INSERT INTO TMP_REGISTRO_PRODUTO(CDTIPOREG, CDARVPROD, DTINICIAL, DTFINAL, CDCLASFISC, NMPRODUTO,
                                          SGUNIDADE, CDSITUTRIBPR, VRALIQIPI, VRALIQICMS, VRPERREDBCIT, VRBASESUBST)

         VALUES('75', C_REGISTRO74.CDARVPROD, P_DTINICIAL, P_DTFINAL, C_REGISTRO74.CDCLASFISC, C_REGISTRO74.NMPRODUTO,
                C_REGISTRO74.SGUNIDADE, '040', 0.00, 0.00, 0.00, 0);
      END IF;
   END LOOP;

   IF V_CONTREG > 0 THEN
      V_STTOTAL := P_CONTTOTAL||'74'||LPAD(RTRIM(TO_CHAR(V_CONTREG)),8,'0');
      RETURN(TO_CHAR(LPAD(V_CONTGERAL,10,0))||TO_CHAR(LPAD(V_CONTADOR,10,0))||V_STTOTAL);
   ELSE
      RETURN('0');
   END IF;
END;
/

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

