CREATE OR REPLACE FUNCTION ARQUIVO_75_DIEF_MA (
   P_VERSAO       IN NOTAFISCAL.IDSTATUS%TYPE,
   P_SEQMAGNET    IN VARCHAR,
   P_CONTADOR     IN NUMBER) RETURN VARCHAR
AS
   V_CONTGERAL      NUMBER;
   V_CONTREG        NUMBER;
   V_CONTADOR       NUMBER;
BEGIN 
   V_CONTREG  := 0; 
   V_CONTADOR := P_CONTADOR; 
      IF P_VERSAO = '3' THEN 
         FOR C_REGISTRO75 IN (SELECT SUBSTR(CDTIPOREG || 
                                            TO_CHAR(DTINICIAL, 'YYYYMMDD')|| 
                                            TO_CHAR(DTFINAL  , 'YYYYMMDD')|| 
                                            RPAD(CDARVPROD, 14, ' ')      || 
                                            RPAD(CDCLASFISC, 8, ' ')  || 
                                            RPAD(TRIM(NMPRODUTO), 53, ' ')      || 
                                            RPAD(SGUNIDADE, 6, ' ')       || 
                                            LTRIM(REPLACE(TO_CHAR(VRALIQIPI, '000.00'),'.',''))|| 
                                            LTRIM(REPLACE(TO_CHAR(VRALIQICMS, '00.00'),'.',''))|| 
                                            LTRIM(REPLACE(TO_CHAR(VRPERREDBCIT, '000.00'),'.',''))|| 
                                            '0000000000000', 1, 126) AS DSARQMAG 
                              FROM TMP_REGISTRO_PRODUTO 
                              ORDER BY CDARVPROD) LOOP 
            V_CONTADOR := NVL(V_CONTADOR,0)+1; 
            INSERT INTO ARQMAGNETICO 
              (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG) 
            VALUES 
              (LPAD(V_CONTADOR, 8, '0'), C_REGISTRO75.DSARQMAG, P_SEQMAGNET); 
            V_CONTREG   := V_CONTREG + 1; 
            V_CONTGERAL := NVL(V_CONTGERAL,0) + 1; 
         END LOOP; 
      ELSE 
         FOR C_REGISTRO75 IN (SELECT SUBSTR(CDTIPOREG || 
                                            TO_CHAR(DTINICIAL, 'YYYYMMDD')|| 
                                            TO_CHAR(DTFINAL  , 'YYYYMMDD')|| 
                                            RPAD(CDARVPROD, 14, ' ') || 
                                            RPAD(CDCLASFISC, 8, ' ')  || 
                                            RPAD(TRIM(NMPRODUTO), 53, ' ') || 
                                            RPAD(SGUNIDADE, 6, ' ')  || 
                                            RPAD(CDSITUTRIBPR,3, ' ') || 
                                            LTRIM(REPLACE(TO_CHAR(VRALIQIPI, '00.00'),'.',''))|| 
                                            LTRIM(REPLACE(TO_CHAR(VRALIQICMS, '00.00'),'.',''))|| 
                                            LTRIM(REPLACE(TO_CHAR(VRPERREDBCIT, '00.00'),'.',''))|| 
                                            '0000000000000', 1, 126) AS DSARQMAG 
                              FROM TMP_REGISTRO_PRODUTO 
                              ORDER BY CDARVPROD) LOOP 
            V_CONTADOR := NVL(V_CONTADOR,0)+1; 
            INSERT INTO ARQMAGNETICO 
              (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG) 
            VALUES 
              (LPAD(V_CONTADOR, 8, '0'), C_REGISTRO75.DSARQMAG, P_SEQMAGNET); 
            V_CONTREG   := V_CONTREG + 1; 
            V_CONTGERAL := NVL(V_CONTGERAL,0) + 1; 
         END LOOP; 
      END IF; 
      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_75_DIEF_MA','5.11.026'); END;
/
