CREATE OR REPLACE FUNCTION ARQUIVO_74_DIEF_MA (
   P_CDEMPRESA    IN EMPRESA.CDEMPRESA%TYPE,
   P_CDINSCESTA   IN EMPRESA.CDINSCESTA%TYPE,
   P_DTPOSICAO    IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTINICIAL    IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINAL      IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_SEQMAGNET    IN VARCHAR,
   P_CONTADOR     IN NUMBER) RETURN VARCHAR
AS
   V_CONTADOR     NUMBER;
   V_CONTREG      NUMBER;
   V_CONTGERAL    NUMBER;
   V_CDARVPROD    VARCHAR2(20);
BEGIN
   V_CONTREG  := 0;
   V_CONTADOR := P_CONTADOR;
      FOR C_REGISTRO74 IN (SELECT SUBSTR(
                                  '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(' ', 45, ' '), 1, 126) AS DSARQMAG,
                                  CDARVPROD, NVL(CDCLASFISC, ' ') AS CDCLASFISC, NMPRODUTO, SGUNIDADE, DTINVEFISCAL
                             FROM (SELECT SUM(I.VRTOTINVFISC) AS VRTOTINVFISC, SUM(I.QTESTINVFISC) AS 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 = (SELECT MAX(I.DTINVEFISCAL)
                                                              FROM INVENTFISC I
                                                             WHERE I.CDEMPRESA    = P_CDEMPRESA
                                                               AND I.CDINSCESTA   = P_CDINSCESTA
                                                               AND I.DTINVEFISCAL <= P_DTPOSICAO)
                                      AND I.CDPRODUTO    = P.CDPRODUTO
                                      AND P.CDPRODUTO    = P.CDPRODESTO
                                    GROUP BY I.DTINVEFISCAL, P.CDARVPROD, NVL(I.CDCLASFISC,P.CDCLASFISC), P.NMPRODUTO, P.SGUNIDADE)
                            WHERE QTESTINVFISC <> 0
                              AND VRTOTINVFISC <> 0
                            ORDER BY TO_CHAR(DTINVEFISCAL,'yyyymmdd'), CDARVPROD) LOOP
         V_CONTADOR  := NVL(V_CONTADOR,0)+1;
         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES 
           (LPAD(V_CONTADOR, 8, '0'), C_REGISTRO74.DSARQMAG, P_SEQMAGNET); 
         V_CONTREG   := V_CONTREG + 1; 
         V_CONTGERAL := NVL(V_CONTGERAL,0) + 1; 
         SELECT MAX(CDARVPROD) 
         INTO V_CDARVPROD 
         FROM TMP_REGISTRO_PRODUTO 
         WHERE CDARVPROD = C_REGISTRO74.CDARVPROD; 
         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 
         RETURN(TO_CHAR(LPAD(V_CONTGERAL,10,0))||TO_CHAR(LPAD(V_CONTADOR,10,0))); 
      END IF; 
      IF  V_CONTREG = 0 THEN 
         RETURN('0'); 
      END IF; 
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('ARQUIVO_74_DIEF_MA','5.11.026'); END;
/
