CREATE OR REPLACE PROCEDURE GIA_RS(
   P_SUBTRIB        IN NOTAFISCAL.IDDOCFISCAL%TYPE,
   P_CDEMPRESA      IN EMPRESA.CDEMPRESA%TYPE,
   P_CDIMPOSTO      IN IMPOSTO.CDIMPOSTO%TYPE,
   P_CDINSCESTA     IN INSCRESTAD.CDINSCESTA%TYPE,
   P_CDLIVROMAG     IN LIVROMAGNETICO.CDLIVROMAG%TYPE,
   P_DTINIPERIODO   IN MAPAAPURAC.DTINIPERIODO%TYPE,
   P_DTFIMPERIODO   IN MAPAAPURAC.DTINIPERIODO%TYPE,
   P_CODCRED        IN VARCHAR2,
   P_CODDEBI        IN VARCHAR2,
   P_ATODECLARAT    IN VARCHAR2,
   P_EMPREGADOS     IN NOTAFISCAL.CDROTATRANS%TYPE,
   P_FOLHA          IN IMPOSTONF.VRIMPOSTONF%TYPE,
   P_ENERGIA        IN NOTAFISCAL.NRNOTAFISCALELE%TYPE,
   P_RETIFICADORA   IN NOTAFISCAL.IDDOCFISCAL%TYPE,
   P_VERSAO         IN IMPOSTO.CDIMPOSTO%TYPE,
   P_IDREG          IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_ENTCOMPLE      IN NOTAFISCAL.IDDOCFISCAL%TYPE,
   P_NRSEQUENCIAL   IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_CODENTREGA     IN NOTAFISCAL.DSQTDEVOLU%TYPE )
AS
   V_IMPPAGMES    NUMBER;
   V_DATAVENC     DATE;
   V_DAINIPER     DATE;
   V_DATAFIMPER   DATE;
   V_REG_1        VARCHAR2(10000);
   V_SEQUENCIA    NUMBER;
   V_QUANTIDADE   NUMBER;
   V_NRSEQUMAPAPU VARCHAR2(10);
   V_EMPRE        VARCHAR2(1);
   V_CONT_REG     NUMBER;

BEGIN
/***************************BUSCA O MAPA ***************************************************************************/
   BEGIN
      SELECT NRSEQUMAPAPU
        INTO V_NRSEQUMAPAPU
        FROM MAPAAPURAC
       WHERE CDEMPRESA    = P_CDEMPRESA
         AND CDINSCESTA   = P_CDINSCESTA
         AND DTINIPERIODO = P_DTINIPERIODO
         AND DTFIMPERIODO = P_DTFIMPERIODO
         AND CDIMPOSTO    = P_CDIMPOSTO;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_NRSEQUMAPAPU := '';
   END;
/****************BUSCA ICMS PAGOS NO PERIODO DA DECLARACAO**********************************/
   BEGIN
    SELECT CP.VRATUAPAG     AS  VRIMPOS,
           CP.DTATUAVENPAG  AS  DATAVENC,
           M.DTINIPERIODO   AS  DATAINIPER,
           M.DTFIMPERIODO   AS  DATAFIMPER
      INTO V_IMPPAGMES, V_DATAVENC, V_DAINIPER, V_DATAFIMPER
      FROM MAPAAPURAC M, NOTAFISCAL N, CONTAPAGAR CP
     WHERE M.CDEMPRESA      = P_CDEMPRESA
       AND M.CDINSCESTA     = P_CDINSCESTA
       AND M.CDIMPOSTO      = P_CDIMPOSTO
       AND M.DTINIPERIODO   = P_DTINIPERIODO
       AND M.DTFIMPERIODO   = P_DTFIMPERIODO
       AND M.CDEMPRESA      = N.CDEMPRESA
       AND M.CDINSCESTA     = N.CDINSCESTA
       AND M.CDFILIAL       = N.CDFILIAL
       AND M.NRLANCTONF     = N.NRLANCTONF
       AND N.CDEMPRESA      = CP.CDEMPRESA
       AND N.CDFILIAL       = CP.CDFILIAL
       AND N.NRLANCTONF     = CP.NRLANCTONF
       AND CP.DTATUAVENPAG >= P_DTINIPERIODO
       AND CP.DTATUAVENPAG <= P_DTFIMPERIODO;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
      V_IMPPAGMES := '';
      V_DATAVENC := '';
      V_DAINIPER := '';
      V_DATAFIMPER  := '';
   END;

/***************************************REGISTRO 1 - QUADRO ABCE*******************************************************/
   V_SEQUENCIA:=1;
   V_REG_1:= GIA_RS_ABC(P_SUBTRIB,P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,P_CDLIVROMAG,
                        P_EMPREGADOS,P_FOLHA,P_ENERGIA,P_RETIFICADORA,P_VERSAO,P_IDREG,
                        P_NRSEQUENCIAL,P_CODENTREGA,NVL(V_IMPPAGMES,0),V_NRSEQUMAPAPU,V_SEQUENCIA);

/**************************************REGISTRO OBSERVACOES***********************************************************/
   V_CONT_REG:= GIA_RS_OBS(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,P_CDLIVROMAG,
                           P_VERSAO,P_NRSEQUENCIAL,V_NRSEQUMAPAPU,V_SEQUENCIA);
   V_SEQUENCIA:=V_CONT_REG;

/************************************REGISTRO XDC DADOS DA EMPRESA****************************************************/
   V_CONT_REG:= GIA_RS_XDC(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                           P_VERSAO,P_NRSEQUENCIAL,P_ENTCOMPLE,V_SEQUENCIA,P_CODENTREGA);
   V_SEQUENCIA:=V_CONT_REG;

/********************************DISCRIMINACAO DAS ENTRADAS - ANEXO I************************************************/
   V_REG_1:=GIA_RS_X01(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,P_CDLIVROMAG,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/********************************IMPORTANCIAS EXCLUIDAS- DETALHAMENTO (ENTRADAS) - ANEXO I.C*************************/
   V_REG_1:=GIA_RS_X01C(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,P_CDLIVROMAG,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/********************ANEXO II - Discriminacao dos Creditos Recebidos por Transferencias******************************/
   V_REG_1:=GIA_RS_X02(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                       P_CODCRED,P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/****************************************ANEXO III - DISCRIMINACAO DO CREDITO PRESUMIDO********************************/
   V_REG_1:=GIA_RS_X03(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/*********************************ANEXO III.A - NAO SERA GERADO*********************************************************/
  /* V_REG_1:=V_REG_1||'000'; */

/********************ANEXO IV - NAO SERA GERADO*************************************************************************/
   V_REG_1:=V_REG_1||'000';

/**********************************ANEXO V - DISCRIMINACAO DAS SAIDAS***************************************************/
   V_REG_1:=GIA_RS_X05(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,P_CDLIVROMAG,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/********************************ANEXO V.A - DETALHAMENTO SAIDAS ISENTAS*************************************************/
   V_REG_1:=GIA_RS_X05A(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                        P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/*************************************ANEXO V.B - DETALHAMENTO SAIDAS OUTRAS*********************************************/
   V_REG_1:=GIA_RS_X05B(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_CDLIVROMAG,P_DTINIPERIODO,P_DTFIMPERIODO,
                        P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/**********************************ANEXO V.C - IMPORTANCIA EXCLUIDAS - DETALHAMENTO DAS SAIDAS***************************/
   V_REG_1:=GIA_RS_X05C(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,P_CDLIVROMAG,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

   /*******************************ANEXO VI - Discriminacao dos Creditos Transferidos*************************************/
   V_REG_1:=GIA_RS_X06(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                       P_CODDEBI,P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/*******************************************ANEXO VII  - OUTRAS SAIDAS ST- DETALHAMENTO********************************/
   IF P_SUBTRIB = 'S' THEN
      V_REG_1:=GIA_RS_X07(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                          P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
      V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
      V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/*********************************************ANEXO VII.A - ENTRADAS COM ST********************************************/
      V_REG_1:=GIA_RS_X07A(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                           P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
      V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
      V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/************************************************ANEXO VII.B - SAIDAS COM ST********************************************/
      V_REG_1:=GIA_RS_X07B(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                           P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
      V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
      V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;
   ELSE
      V_REG_1:=V_REG_1||'000'||'000'||'000';
   END IF;

/*****************************************************ANEXO VIII PAGAMENTOS ICMS NO MES*********************************/
   V_REG_1:=GIA_RS_X08(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_DAINIPER,V_DATAFIMPER,
                       V_IMPPAGMES,V_DATAVENC);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/****************************************ANEXO IX - NAO SERA GERADO****************************************************/
   V_REG_1:=V_REG_1||'000';

/***************************************ANEXO X - DISCRIMINACAO DO ICMS A RECOLHER*************************************/
   V_REG_1:=GIA_RS_X10(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/***************************************ANEXO XI - OPERACOES INTERESTADUAIS - DETALHAMENTO POR UF**********************/
   IF P_VERSAO = '07' THEN
      V_REG_1:=GIA_RS_X11(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                          P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
      V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
      V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;
   END IF;

/****************************************ANEXO XII - NAO SERA PREENCHIDO********************************************/
   IF P_VERSAO = '07' THEN
      V_REG_1:=V_REG_1||'000';
   END IF;

/**************************************ANEXO XIV - OUTROS CREDITOS - DETALHAMENTO************************************/
   V_REG_1:=GIA_RS_X14(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                       P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/************************************ANEXO XV - OUTROS DEBITOS DETALHAMENTO*****************************************/
   V_REG_1:= GIA_RS_X15(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,
                        P_VERSAO,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   V_QUANTIDADE:=TO_NUMBER(SUBSTR(V_REG_1,LENGTH(V_REG_1)-2,3));
   V_SEQUENCIA:= V_SEQUENCIA+V_QUANTIDADE;

/****************************************ANEXO XVI - OPERACOES INTERMUNICIPAIS****************************************/
   IF P_VERSAO = '08' THEN
      V_REG_1:=GIA_RS_X16(P_CDEMPRESA,P_CDIMPOSTO,P_CDINSCESTA,P_DTINIPERIODO,P_DTFIMPERIODO,P_CDLIVROMAG,
                          P_VERSAO,P_ATODECLARAT,P_NRSEQUENCIAL,V_SEQUENCIA,V_REG_1,V_NRSEQUMAPAPU);
   END IF;

/********************************************INSERE O REGISTRO 1 - QUADRO ABC*****************************************/
   INSERT INTO ARQMAGNETICO
     (NRORDREGARQ,DSREGARQMAG,NRSEQARQMAG)
   VALUES
     (LTRIM(TO_CHAR(1,'0000000000')),V_REG_1||'SNNN'||'000000000000000'||'000000000000000'||'000000000000000',P_NRSEQUENCIAL);

END;
/