CREATE OR REPLACE FUNCTION GIA_RS_X10(
   P_CDEMPRESA      IN EMPRESA.CDEMPRESA%TYPE,
   P_CDIMPOSTO      IN IMPOSTO.CDIMPOSTO%TYPE,
   P_CDINSCESTA     IN INSCRESTAD.CDINSCESTA%TYPE,
   P_DTINIPERIODO   IN MAPAAPURAC.DTINIPERIODO%TYPE,
   P_DTFIMPERIODO   IN MAPAAPURAC.DTINIPERIODO%TYPE,
   P_VERSAO         IN IMPOSTO.CDIMPOSTO%TYPE,
   P_NRSEQUENCIAL   IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_SEQUENCIA      IN NUMBER,
   P_REG_1          IN VARCHAR2,
   P_NRSEQUMAPAPU   IN MAPAAPURAC.NRSEQUMAPAPU%TYPE )RETURN VARCHAR2
AS
   V_SEQUENCIA  NUMBER;
   V_QUANTIDADE NUMBER;
   V_REG_1      VARCHAR2(1000);
   V_DADOS      VARCHAR2(100);
   V_DADOS_1    VARCHAR2(100);
   V_DADOS_2    NUMBER;
   V_DADOS_3    NUMBER;
/***************************************ANEXO X - DISCRIMINACAO DO ICMS A RECOLHER*****************************************************/
BEGIN
   V_SEQUENCIA:= P_SEQUENCIA;
   V_REG_1:= P_REG_1;
   V_QUANTIDADE:= 0;
   BEGIN
    SELECT '****'                                                   ||
           P_VERSAO                                                 ||
           DECODE(P_VERSAO,'07','00000000','')                      ||/*VERSAO 07*/
           DECODE(P_VERSAO,'07',LPAD(' ',1,' '),'')                 ||/*VERSAO 07*/
           LTRIM(TO_CHAR(P_DTINIPERIODO,'DD'))                      ||
           LTRIM(TO_CHAR(P_DTFIMPERIODO,'DD'))                      ||
           LTRIM(TO_CHAR(P_DTFIMPERIODO,'MMYYYY'))                  ||
           LPAD(P_CDINSCESTA,10,'0') AS CABECALHO,
           'X10 '                                                   ||
           '01'                                                     ||
           TO_CHAR(DTINIPERIODO,'DD')                               ||
           TO_CHAR(DTFIMPERIODO,'DD')                               ||
           TO_CHAR(DTVENCGUIA,'DDMMYYYY')                           ||
           REPLACE(LTRIM(TO_CHAR(NVL(VRTOTAIMPOS+VRDIFALIQU,0),'00000000000.00')),'.')||
           REPLACE(LTRIM(TO_CHAR(NVL(VRIMPOSTRIB,0),'00000000000.00')),'.')||
           LPAD('0',10,'0') ||
           REPLACE(LTRIM(TO_CHAR(0,'00000000000.00')),'.') ||
           REPLACE(LTRIM(TO_CHAR(0,'00000000000.00')),'.') AS CORPO,
           VRTOTAIMPOS, VRIMPOSTRIB
      INTO V_DADOS, V_DADOS_1, V_DADOS_2, V_DADOS_3
      FROM MAPAAPURAC MP, MAPARECUP MR,
           (SELECT SUM(ROUND(VRTOTAIMPOS,2)) AS VRIMPOSTRIB
              FROM MAPAAPURAC M
             WHERE M.CDEMPRESA    = P_CDEMPRESA
               AND M.CDIMPOSTO    = '80'
               AND M.CDINSCESTA   = P_CDINSCESTA
               AND M.DTINIPERIODO = P_DTINIPERIODO
               AND M.DTFIMPERIODO = P_DTFIMPERIODO)S
     WHERE MP.NRSEQUMAPAPU = P_NRSEQUMAPAPU
       AND MR.NRSEQUMAPAPU = MP.NRSEQUMAPAPU;
     V_SEQUENCIA:= V_SEQUENCIA+1;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_DADOS:= '';
         V_DADOS_1:='';
   END;

   IF ((V_DADOS_2>0) OR (V_DADOS_3>0)) THEN
       INSERT INTO ARQMAGNETICO
         (NRORDREGARQ,DSREGARQMAG,NRSEQARQMAG)
       VALUES(LTRIM(TO_CHAR(V_SEQUENCIA,'0000000000')),V_DADOS||LTRIM(TO_CHAR(V_SEQUENCIA,'0000'))||
              V_DADOS_1,P_NRSEQUENCIAL);
       V_QUANTIDADE:=V_QUANTIDADE+1;
   END IF;

/*******CONTADOR REGISTRO ABC **************************************************************************/
   V_REG_1:=V_REG_1||LTRIM(TO_CHAR(V_QUANTIDADE,'000'));
   RETURN(V_REG_1);
END;
/