CREATE OR REPLACE PROCEDURE GRAVA_CONTCTBL_MAPA(
   P_CDEMPRESA      IN EMPRESA.CDEMPRESA%TYPE,
   P_DTINICIAL      IN MAPAAPURAC.DTINIPERIODO%TYPE,
   P_DTFINAL        IN MAPAAPURAC.DTINIPERIODO%TYPE,
   P_CDIMPOSTO      IN MAPAAPURAC.CDIMPOSTO%TYPE,
   P_NRSEQUMAPAPU   IN MAPAAPURAC.NRSEQUMAPAPU%TYPE,
   P_IDFORMAPUREMPR IN EMPRESA.IDFORMAPUREMPR%TYPE)
AS
   V_NRSEQCONTCTBLMAPA NUMBER;
   V_NRSEQRELACNFCONT  NUMBER;
   V_CDFILIAL          NOTAFISCAL.CDFILIAL%TYPE;
   V_NRLANCTONF        NOTAFISCAL.NRLANCTONF%TYPE;
   V_NFAPURADA         VARCHAR2(01);
BEGIN
   /*DELETA OS REGISTROS RELACIONADOS AO MAPA PARA O CASO DE REAPURACAO*/
   DELETE FROM CONTCTBLMAPA
    WHERE NRSEQUMAPAPU = P_NRSEQUMAPAPU;

   /*BUSCA OS VALORES DOS LANCAMENTOS NO PERIODO PARA INSERIR NA TABELA REFERENTES AOS AJUSTES*/
   FOR C_AJUSTES IN (SELECT LC.NRLANCCONT, LC.NRSEQLANC, LC.CDCONTCTBL, LC.VRLANCAMENT, P.IDPARAMAPU AS IDTPLANCAMENTO,
                            ORIGEM_LANCAMENTO(LC.CDEMPRESA, LC.NRLANCCONT) AS IDORIGEM
                       FROM PARAMAPUIRPJ P, INFCTBIRPJ I, LANCCONT LC
                      WHERE P.NRSEQPARAMAPU = I.NRSEQPARAMAPU
                        AND P.CDEMPRESA     = P_CDEMPRESA
                        AND P.IDIMPOSTO     = DECODE(P_CDIMPOSTO,'25','I','70','C')
                        AND I.IDINFCTBIRPJ  = 'C'
                        AND LC.DTLANCCONT   BETWEEN P_DTINICIAL AND P_DTFINAL
                        AND LC.CDCONTCTBL   LIKE I.CDINFCTBIRPJ||'%'
                        AND LC.CDEMPRESA    = P_CDEMPRESA
                        AND LC.IDLANCINTE   <> 'F') LOOP

      /*INSERE NA TABELA OS LANCAMENTOS RELACIONADOS AO MAPA DE APURACAO*/
      NOVO_CODIGO('CONTCTBLMAPA',V_NRSEQCONTCTBLMAPA);
      INSERT INTO CONTCTBLMAPA
         (NRSEQCONTCTBLMAPA, CDIMPOSTO, CDEMPRESA, NRLANCCONT, NRSEQLANC, CDCONTCTBL,
          VRLANCAMENT, IDFORMAPUR, IDTPLANCAMENTO, NRSEQUMAPAPU, IDORIGEM, IDFORMAPURITEM)
      VALUES
         (V_NRSEQCONTCTBLMAPA, P_CDIMPOSTO, P_CDEMPRESA, C_AJUSTES.NRLANCCONT, C_AJUSTES.NRSEQLANC, C_AJUSTES.CDCONTCTBL,
          C_AJUSTES.VRLANCAMENT, P_IDFORMAPUREMPR, C_AJUSTES.IDTPLANCAMENTO, P_NRSEQUMAPAPU, C_AJUSTES.IDORIGEM, P_IDFORMAPUREMPR);
   END LOOP;

   /*BUSCA OS VALORES DOS LANCAMENTOS NO PERIODO PARA INSERIR NA TABELA REFERENTES AS RECEITAS*/
   FOR C_RECEITA IN (SELECT LC.NRLANCCONT, LC.NRSEQLANC, LC.CDCONTCTBL, LC.VRLANCAMENT, R.IDRECDESPIRPJ AS IDTPLANCAMENTO,
                            ORIGEM_LANCAMENTO(LC.CDEMPRESA, LC.NRLANCCONT) AS IDORIGEM, I.IDFORMAPURITEM
                       FROM RECDESPIRPJ R, INFCTBIRPJ I, LANCCONT LC
                      WHERE R.NRSEQRECDESPIRPJ = I.NRSEQPARAMAPU
                        AND I.IDINFCTBIRPJ     = 'C'
                        AND LC.DTLANCCONT      BETWEEN P_DTINICIAL AND P_DTFINAL
                        AND LC.CDCONTCTBL      LIKE I.CDINFCTBIRPJ||'%'
                        AND LC.CDEMPRESA       = P_CDEMPRESA
                        AND R.CDEMPRESA        = P_CDEMPRESA
                        AND LC.IDLANCINTE      <> 'F'
                        AND NOT EXISTS(SELECT 1
                                         FROM PARAMAPUIRPJ P, INFCTBIRPJ IA
                                        WHERE P.NRSEQPARAMAPU = IA.NRSEQPARAMAPU
                                          AND P.CDEMPRESA     = P_CDEMPRESA
                                          AND P.IDIMPOSTO     = DECODE('25','25','I','70','C')
                                          AND IA.IDINFCTBIRPJ  = 'C'
                                          AND IA.CDINFCTBIRPJ  = I.CDINFCTBIRPJ)) LOOP

      /*INSERE NA TABELA OS LANCAMENTOS RELACIONADOS AO MAPA DE APURACAO*/
      NOVO_CODIGO('CONTCTBLMAPA',V_NRSEQCONTCTBLMAPA);
      INSERT INTO CONTCTBLMAPA
         (NRSEQCONTCTBLMAPA, CDIMPOSTO, CDEMPRESA, NRLANCCONT, NRSEQLANC, CDCONTCTBL,
          VRLANCAMENT, IDFORMAPUR, IDTPLANCAMENTO, NRSEQUMAPAPU, IDORIGEM, IDFORMAPURITEM)
      VALUES
         (V_NRSEQCONTCTBLMAPA, P_CDIMPOSTO, P_CDEMPRESA, C_RECEITA.NRLANCCONT, C_RECEITA.NRSEQLANC, C_RECEITA.CDCONTCTBL,
          C_RECEITA.VRLANCAMENT, P_IDFORMAPUREMPR, C_RECEITA.IDTPLANCAMENTO, P_NRSEQUMAPAPU, C_RECEITA.IDORIGEM, C_RECEITA.IDFORMAPURITEM);
    END LOOP;

   /*BUSCA AS NOTAS FISCAIS RELACIONADAS AO LANCAMENTO, QUANDO HOUVER*/
   FOR C_LANC IN (SELECT CDEMPRESA, NRLANCCONT, IDORIGEM, NRSEQCONTCTBLMAPA
                    FROM CONTCTBLMAPA
                   WHERE NRSEQUMAPAPU = P_NRSEQUMAPAPU
                     AND IDORIGEM     NOT IN ('N','MANUAL','TRANSFBANC','LANCLOTE')) LOOP
       V_NFAPURADA := 'N';
       /*VERIFICA A NF DE ACORDO COM A ORIGEM DO LANCAMENTO*/
       CASE C_LANC.IDORIGEM
          WHEN 'BAIXAPAGA'
          THEN FOR C_NF IN (SELECT DISTINCT CP.CDFILIAL, CP.NRLANCTONF
                              FROM CONTAPAGAR CP, BOLETPAGAR BO, BAIXAPAGA BX
                             WHERE BX.CDEMPRESA   = C_LANC.CDEMPRESA
                               AND BX.NRLCTBBPAG  = C_LANC.NRLANCCONT
                               AND BX.CDFILIAL    = BO.CDFILIBAIPAG
                               AND BX.NRBAIXAPAG  = BO.NRBAIXAPAG
                               AND BO.CDFILIAL    = CP.CDFILIBPAG
                               AND BO.NRLANBOLPAG = CP.NRLANBOLPAG) LOOP

                  /*NA APURACAO POR REGIME DE PAGAMENTO E NECESSARIO VERIFICAR SE A NF RELACIONADA
                    PERTENCE A OUTRO MAPA APURADO POR COMPETENCIA*/
                  IF P_IDFORMAPUREMPR = 'P' THEN
                     BEGIN
                        SELECT MAX('S')
                          INTO V_NFAPURADA
                          FROM CONTCTBLMAPA C, RELACNFCONTCTBL R
                         WHERE R.CDFILIAL   = C_NF.CDFILIAL
                           AND R.NRLANCTONF = C_NF.NRLANCTONF
                           AND R.NRSEQCONTCTBLMAPA = C.NRSEQCONTCTBLMAPA
                           AND C.IDFORMAPUR = 'C'
                           AND C.IDFORMAPURITEM = 'C'
                           AND C.CDIMPOSTO  = P_CDIMPOSTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_NFAPURADA := 'N';
                     END;
                  END IF;
                  /*SE A NF JA FOI APURADA EM OUTRO REGIME DELETA O REGISTRO DO LANCAMENTO RELACIONADO AO MAPA QUE ESTA SENDO
                    APURADO E ENCERRA A EXECUCAO DO LOOP PARA O LANCAMENTO, POIS O MESMO NAO SERA CONSIDERADO NA APURACAO*/
                  IF V_NFAPURADA = 'S' THEN
                     DELETE FROM CONTCTBLMAPA
                      WHERE NRSEQCONTCTBLMAPA = C_LANC.NRSEQCONTCTBLMAPA;
                     EXIT;
                  ELSE
                     /*INSERE NA TABELA DE NF RELACIONADA AO LANCAMENTO*/
                     NOVO_CODIGO('RELACNFCONTCTBL',V_NRSEQRELACNFCONT);
                     INSERT INTO RELACNFCONTCTBL
                        (NRSEQRELACNFCONT, NRSEQCONTCTBLMAPA, CDFILIAL, NRLANCTONF)
                     VALUES
                        (V_NRSEQRELACNFCONT, C_LANC.NRSEQCONTCTBLMAPA, C_NF.CDFILIAL, C_NF.NRLANCTONF);
                  END IF;
               END LOOP;
          WHEN 'BAIXARECEBIDA'
          THEN FOR C_NF IN (SELECT DISTINCT CR.CDFILIAL, CR.NRLANCTONF
                              FROM CONTARECEBER CR, BOLETRECEBER BO, BAIXARECEBIDA BX
                             WHERE BX.CDEMPRESA   = C_LANC.CDEMPRESA
                               AND BX.NRLCTBBREC  = C_LANC.NRLANCCONT
                               AND BX.CDFILIAL    = BO.CDFILIBAIREC
                               AND BX.NRBAIXAREC  = BO.NRBAIXAREC
                               AND BO.CDFILIAL    = CR.CDFILIBOLREC
                               AND BO.NRLANBOLREC = CR.NRLANBOLREC) LOOP

                  /*NA APURACAO POR REGIME DE PAGAMENTO E NECESSARIO VERIFICAR SE A NF RELACIONADA
                    PERTENCE A OUTRO MAPA APURADO POR COMPETENCIA*/
                  IF P_IDFORMAPUREMPR = 'P' THEN
                     BEGIN
                        SELECT MAX('S')
                          INTO V_NFAPURADA
                          FROM CONTCTBLMAPA C, RELACNFCONTCTBL R
                         WHERE R.CDFILIAL   = C_NF.CDFILIAL
                           AND R.NRLANCTONF = C_NF.NRLANCTONF
                           AND R.NRSEQCONTCTBLMAPA = C.NRSEQCONTCTBLMAPA
                           AND C.IDFORMAPUR = 'C'
                           AND C.IDFORMAPURITEM = 'C'
                           AND C.CDIMPOSTO  = P_CDIMPOSTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_NFAPURADA := 'N';
                     END;
                  END IF;
                  /*SE A NF JA FOI APURADA EM OUTRO REGIME DELETA O REGISTRO DO LANCAMENTO RELACIONADO AO MAPA QUE ESTA SENDO
                    APURADO E ENCERRA A EXECUCAO DO LOOP PARA O LANCAMENTO, POIS O MESMO NAO SERA CONSIDERADO NA APURACAO*/
                  IF V_NFAPURADA = 'S' THEN
                     DELETE FROM CONTCTBLMAPA
                      WHERE NRSEQCONTCTBLMAPA = C_LANC.NRSEQCONTCTBLMAPA;
                     EXIT;
                  ELSE
                     /*INSERE NA TABELA DE NF RELACIONADA AO LANCAMENTO*/
                     NOVO_CODIGO('RELACNFCONTCTBL',V_NRSEQRELACNFCONT);
                     INSERT INTO RELACNFCONTCTBL
                        (NRSEQRELACNFCONT, NRSEQCONTCTBLMAPA, CDFILIAL, NRLANCTONF)
                     VALUES
                        (V_NRSEQRELACNFCONT, C_LANC.NRSEQCONTCTBLMAPA, C_NF.CDFILIAL, C_NF.NRLANCTONF);
                  END IF;
               END LOOP;
          WHEN 'NOTAFISCAL'
          THEN FOR C_NF IN (SELECT DISTINCT NF.CDFILIAL, NF.NRLANCTONF
                              FROM NOTAFISCAL NF
                             WHERE NF.CDEMPRESA   = C_LANC.CDEMPRESA
                               AND NF.NRLANCTBDOC = C_LANC.NRLANCCONT) LOOP

                  /*NA APURACAO POR REGIME DE PAGAMENTO E NECESSARIO VERIFICAR SE A NF RELACIONADA
                    PERTENCE A OUTRO MAPA APURADO POR COMPETENCIA*/
                  IF P_IDFORMAPUREMPR = 'P' THEN
                     BEGIN
                        SELECT MAX('S')
                          INTO V_NFAPURADA
                          FROM CONTCTBLMAPA C, RELACNFCONTCTBL R
                         WHERE R.CDFILIAL   = C_NF.CDFILIAL
                           AND R.NRLANCTONF = C_NF.NRLANCTONF
                           AND R.NRSEQCONTCTBLMAPA = C.NRSEQCONTCTBLMAPA
                           AND C.IDFORMAPUR = 'C'
                           AND C.IDFORMAPURITEM = 'C'
                           AND C.CDIMPOSTO  = P_CDIMPOSTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_NFAPURADA := 'N';
                     END;
                  END IF;
                  /*SE A NF JA FOI APURADA EM OUTRO REGIME DELETA O REGISTRO DO LANCAMENTO RELACIONADO AO MAPA QUE ESTA SENDO
                    APURADO E ENCERRA A EXECUCAO DO LOOP PARA O LANCAMENTO, POIS O MESMO NAO SERA CONSIDERADO NA APURACAO*/
                  IF V_NFAPURADA = 'S' THEN
                     DELETE FROM CONTCTBLMAPA
                      WHERE NRSEQCONTCTBLMAPA = C_LANC.NRSEQCONTCTBLMAPA;
                     EXIT;
                  ELSE
                     /*INSERE NA TABELA DE NF RELACIONADA AO LANCAMENTO*/
                     NOVO_CODIGO('RELACNFCONTCTBL',V_NRSEQRELACNFCONT);
                     INSERT INTO RELACNFCONTCTBL
                        (NRSEQRELACNFCONT, NRSEQCONTCTBLMAPA, CDFILIAL, NRLANCTONF)
                     VALUES
                        (V_NRSEQRELACNFCONT, C_LANC.NRSEQCONTCTBLMAPA, C_NF.CDFILIAL, C_NF.NRLANCTONF);
                  END IF;
               END LOOP;
          WHEN 'MOVCREDBANC'
          THEN FOR C_NF IN (SELECT DISTINCT DV.CDFILIAL, DV.NRLANCTONF
                              FROM DEVOLUCAOPAG DV, MOVCREDBANC MV
                             WHERE NVL(MV.CDEMPRESA, MV.CDECTBMCRED) = C_LANC.CDEMPRESA
                               AND MV.NRLCTBMCRED = C_LANC.NRLANCCONT
                               AND MV.CDREDUCONT  = DV.CDREDUCONT
                               AND MV.NRMOVICRED  = DV.NRMOVICRED) LOOP

                  /*NA APURACAO POR REGIME DE PAGAMENTO E NECESSARIO VERIFICAR SE A NF RELACIONADA
                    PERTENCE A OUTRO MAPA APURADO POR COMPETENCIA*/
                  IF P_IDFORMAPUREMPR = 'P' THEN
                     BEGIN
                        SELECT MAX('S')
                          INTO V_NFAPURADA
                          FROM CONTCTBLMAPA C, RELACNFCONTCTBL R
                         WHERE R.CDFILIAL   = C_NF.CDFILIAL
                           AND R.NRLANCTONF = C_NF.NRLANCTONF
                           AND R.NRSEQCONTCTBLMAPA = C.NRSEQCONTCTBLMAPA
                           AND C.IDFORMAPUR = 'C'
                           AND C.IDFORMAPURITEM = 'C'
                           AND C.CDIMPOSTO  = P_CDIMPOSTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_NFAPURADA := 'N';
                     END;
                  END IF;
                  /*SE A NF JA FOI APURADA EM OUTRO REGIME DELETA O REGISTRO DO LANCAMENTO RELACIONADO AO MAPA QUE ESTA SENDO
                    APURADO E ENCERRA A EXECUCAO DO LOOP PARA O LANCAMENTO, POIS O MESMO NAO SERA CONSIDERADO NA APURACAO*/
                  IF V_NFAPURADA = 'S' THEN
                     DELETE FROM CONTCTBLMAPA
                      WHERE NRSEQCONTCTBLMAPA = C_LANC.NRSEQCONTCTBLMAPA;
                     EXIT;
                  ELSE
                     /*INSERE NA TABELA DE NF RELACIONADA AO LANCAMENTO*/
                     NOVO_CODIGO('RELACNFCONTCTBL',V_NRSEQRELACNFCONT);
                     INSERT INTO RELACNFCONTCTBL
                        (NRSEQRELACNFCONT, NRSEQCONTCTBLMAPA, CDFILIAL, NRLANCTONF)
                     VALUES
                        (V_NRSEQRELACNFCONT, C_LANC.NRSEQCONTCTBLMAPA, C_NF.CDFILIAL, C_NF.NRLANCTONF);
                  END IF;
               END LOOP;
          WHEN 'MOVDEBBANC'
          THEN FOR C_NF IN (SELECT DISTINCT DV.CDFILIAL, DV.NRLANCTONF
                              FROM DEVOLUCAOREC DV, MOVDEBBANC MV
                             WHERE NVL(MV.CDEMPRESA, MV.CDECTBMDEB) = C_LANC.CDEMPRESA
                               AND MV.NRLCTBMDEB = C_LANC.NRLANCCONT
                               AND MV.CDREDUCONT = DV.CDREDUCONT
                               AND MV.NRMOVIDEBI = DV.NRMOVIDEBI) LOOP

                  /*NA APURACAO POR REGIME DE PAGAMENTO E NECESSARIO VERIFICAR SE A NF RELACIONADA
                    PERTENCE A OUTRO MAPA APURADO POR COMPETENCIA*/
                  IF P_IDFORMAPUREMPR = 'P' THEN
                     BEGIN
                        SELECT MAX('S')
                          INTO V_NFAPURADA
                          FROM CONTCTBLMAPA C, RELACNFCONTCTBL R
                         WHERE R.CDFILIAL   = C_NF.CDFILIAL
                           AND R.NRLANCTONF = C_NF.NRLANCTONF
                           AND R.NRSEQCONTCTBLMAPA = C.NRSEQCONTCTBLMAPA
                           AND C.IDFORMAPUR = 'C'
                           AND C.IDFORMAPURITEM = 'C'
                           AND C.CDIMPOSTO  = P_CDIMPOSTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_NFAPURADA := 'N';
                     END;
                  END IF;
                  /*SE A NF JA FOI APURADA EM OUTRO REGIME DELETA O REGISTRO DO LANCAMENTO RELACIONADO AO MAPA QUE ESTA SENDO
                    APURADO E ENCERRA A EXECUCAO DO LOOP PARA O LANCAMENTO, POIS O MESMO NAO SERA CONSIDERADO NA APURACAO*/
                  IF V_NFAPURADA = 'S' THEN
                     DELETE FROM CONTCTBLMAPA
                      WHERE NRSEQCONTCTBLMAPA = C_LANC.NRSEQCONTCTBLMAPA;
                     EXIT;
                  ELSE
                     /*INSERE NA TABELA DE NF RELACIONADA AO LANCAMENTO*/
                     NOVO_CODIGO('RELACNFCONTCTBL',V_NRSEQRELACNFCONT);
                     INSERT INTO RELACNFCONTCTBL
                        (NRSEQRELACNFCONT, NRSEQCONTCTBLMAPA, CDFILIAL, NRLANCTONF)
                     VALUES
                        (V_NRSEQRELACNFCONT, C_LANC.NRSEQCONTCTBLMAPA, C_NF.CDFILIAL, C_NF.NRLANCTONF);
                  END IF;
               END LOOP;
          WHEN 'AJCTPAGAR'
          THEN FOR C_NF IN (SELECT DISTINCT A.CDFILIAL, A.NRLANCTONF
                              FROM AJCTPAGAR A
                             WHERE NVL(A.CDECTBAJPAG, A.CDEMMFAJCNTP) = C_LANC.CDEMPRESA
                               AND A.NRLCTBAJPAG = C_LANC.NRLANCCONT) LOOP

                  /*NA APURACAO POR REGIME DE PAGAMENTO E NECESSARIO VERIFICAR SE A NF RELACIONADA
                    PERTENCE A OUTRO MAPA APURADO POR COMPETENCIA*/
                  IF P_IDFORMAPUREMPR = 'P' THEN
                     BEGIN
                        SELECT MAX('S')
                          INTO V_NFAPURADA
                          FROM CONTCTBLMAPA C, RELACNFCONTCTBL R
                         WHERE R.CDFILIAL   = C_NF.CDFILIAL
                           AND R.NRLANCTONF = C_NF.NRLANCTONF
                           AND R.NRSEQCONTCTBLMAPA = C.NRSEQCONTCTBLMAPA
                           AND C.IDFORMAPUR = 'C'
                           AND C.IDFORMAPURITEM = 'C'
                           AND C.CDIMPOSTO  = P_CDIMPOSTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_NFAPURADA := 'N';
                     END;
                  END IF;
                  /*SE A NF JA FOI APURADA EM OUTRO REGIME DELETA O REGISTRO DO LANCAMENTO RELACIONADO AO MAPA QUE ESTA SENDO
                    APURADO E ENCERRA A EXECUCAO DO LOOP PARA O LANCAMENTO, POIS O MESMO NAO SERA CONSIDERADO NA APURACAO*/
                  IF V_NFAPURADA = 'S' THEN
                     DELETE FROM CONTCTBLMAPA
                      WHERE NRSEQCONTCTBLMAPA = C_LANC.NRSEQCONTCTBLMAPA;
                     EXIT;
                  ELSE
                     /*INSERE NA TABELA DE NF RELACIONADA AO LANCAMENTO*/
                     NOVO_CODIGO('RELACNFCONTCTBL',V_NRSEQRELACNFCONT);
                     INSERT INTO RELACNFCONTCTBL
                        (NRSEQRELACNFCONT, NRSEQCONTCTBLMAPA, CDFILIAL, NRLANCTONF)
                     VALUES
                        (V_NRSEQRELACNFCONT, C_LANC.NRSEQCONTCTBLMAPA, C_NF.CDFILIAL, C_NF.NRLANCTONF);
                  END IF;
               END LOOP;
          WHEN 'AJCTRECEBER'
          THEN FOR C_NF IN (SELECT DISTINCT A.CDFILIAL, A.NRLANCTONF
                              FROM AJCTRECEBER A
                             WHERE NVL(A.CDECTBAJREC, A.CDEMMFAJCNTR) = C_LANC.CDEMPRESA
                               AND A.NRLCTBAJREC = C_LANC.NRLANCCONT) LOOP

                  /*NA APURACAO POR REGIME DE PAGAMENTO E NECESSARIO VERIFICAR SE A NF RELACIONADA
                    PERTENCE A OUTRO MAPA APURADO POR COMPETENCIA*/
                  IF P_IDFORMAPUREMPR = 'P' THEN
                     BEGIN
                        SELECT MAX('S')
                          INTO V_NFAPURADA
                          FROM CONTCTBLMAPA C, RELACNFCONTCTBL R
                         WHERE R.CDFILIAL   = C_NF.CDFILIAL
                           AND R.NRLANCTONF = C_NF.NRLANCTONF
                           AND R.NRSEQCONTCTBLMAPA = C.NRSEQCONTCTBLMAPA
                           AND C.IDFORMAPUR = 'C'
                           AND C.IDFORMAPURITEM = 'C'
                           AND C.CDIMPOSTO  = P_CDIMPOSTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_NFAPURADA := 'N';
                     END;
                  END IF;
                  /*SE A NF JA FOI APURADA EM OUTRO REGIME DELETA O REGISTRO DO LANCAMENTO RELACIONADO AO MAPA QUE ESTA SENDO
                    APURADO E ENCERRA A EXECUCAO DO LOOP PARA O LANCAMENTO, POIS O MESMO NAO SERA CONSIDERADO NA APURACAO*/
                  IF V_NFAPURADA = 'S' THEN
                     DELETE FROM CONTCTBLMAPA
                      WHERE NRSEQCONTCTBLMAPA = C_LANC.NRSEQCONTCTBLMAPA;
                     EXIT;
                  ELSE
                     /*INSERE NA TABELA DE NF RELACIONADA AO LANCAMENTO*/
                     NOVO_CODIGO('RELACNFCONTCTBL',V_NRSEQRELACNFCONT);
                     INSERT INTO RELACNFCONTCTBL
                        (NRSEQRELACNFCONT, NRSEQCONTCTBLMAPA, CDFILIAL, NRLANCTONF)
                     VALUES
                        (V_NRSEQRELACNFCONT, C_LANC.NRSEQCONTCTBLMAPA, C_NF.CDFILIAL, C_NF.NRLANCTONF);
                  END IF;
               END LOOP;
       END CASE;
   END LOOP;
END;
/