CREATE OR REPLACE FUNCTION ARQUIVO_DIC_75(
   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_NRSEQUENCIAL IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_CONTADOR     IN NUMBER,
   P_GRUPOPRD     IN VARCHAR2,
   P_CONTTOTAL    IN VARCHAR2) RETURN VARCHAR2
AS
   V_CONTGERAL      NUMBER;
   V_CONTREG        NUMBER;
   V_STTOTAL        VARCHAR2(4000);
   V_CDPRODUTO      VARCHAR2(20);
   V_SEQUENCIAL     VARCHAR2(03);
   V_REGISTRO75     VARCHAR2(4000);
   V_CONTADOR       NUMBER;
   V_CDSUBGRPROD    VARCHAR2(07);

BEGIN
   V_CONTADOR := P_CONTADOR;
   V_CONTREG := 0;
   FOR C_REGISTRO75 IN (SELECT '75'||
                               TO_CHAR(DTINICIAL, 'YYYYMMDD')||
                               TO_CHAR(DTFINAL  , 'YYYYMMDD')||
                               RPAD(CDARVPROD, 14, ' ') ||
                               RPAD(NVL(CDCLASFISC,' '), 8, ' ')  ||
                               RPAD(TRIM(NMPRODUTO), 53, ' ') ||
                               RPAD(NVL(SGUNIDADE, ' '), 6, ' ')  ||
--                               RPAD(NVL(CDSITUTRIBPR,' '),3, ' ') ||
                               LTRIM(REPLACE(TO_CHAR(VRALIQIPI, '000.00'),'.',''))||
                               LTRIM(REPLACE(TO_CHAR(VRALIQICMS, '00.00'),'.',''))||
                               LTRIM(REPLACE(TO_CHAR(VRPERREDBCIT, '000.00'),'.',''))||
                               LTRIM(REPLACE(TO_CHAR(VRBASESUBST ,'00000000000.00'),'.',''))||
                               RPAD(' ', 14, ' ') AS DSINICIO, CDARVPROD
                        FROM TMP_REGISTRO_PRODUTO
                        ORDER BY CDARVPROD) LOOP

      BEGIN
         SELECT MAX(CDPRODUTO)
         INTO V_CDPRODUTO
         FROM PRODUTO
         WHERE CDARVPROD = C_REGISTRO75.CDARVPROD;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_CDPRODUTO := NULL;
      END;

      IF V_CDPRODUTO IS NOT NULL THEN
         BEGIN
            SELECT RPAD(SUBSTR(NVL(CDSUBGRPROD,'0'),4,10), 7, '0')
            INTO V_CDSUBGRPROD
            FROM PRSUBGRPROD
            WHERE CDGRUPPROD   = P_GRUPOPRD
               AND CDPRODUTO   = V_CDPRODUTO
               AND CDFILISUBGR = 'P';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CDSUBGRPROD := NULL;
         END;

         V_REGISTRO75 := C_REGISTRO75.DSINICIO||NVL(V_CDSUBGRPROD,'0000000')||RPAD(' ',37,' ');

      END IF;

      V_CONTADOR  := NVL(V_CONTADOR,0)+1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        (LPAD(V_CONTADOR, 10, '0'), V_REGISTRO75, P_NRSEQUENCIAL);

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

   IF V_CONTREG > 0 THEN
      V_STTOTAL := P_CONTTOTAL||'75'||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);
   END IF;

   IF V_CONTREG = 0 THEN
      RETURN('0');
   END IF;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('ARQUIVO_DIC_75','5.05.011'); END;
/

