create or replace PROCEDURE GERA_NF_MYORDER (
      P_NRORG       IN NUMBER,
      P_LISTAPEDIDO IN LISTA.NRLISTA%TYPE,
      P_OPERACAO    IN VARCHAR2,
      P_RETORNO     OUT VARCHAR2,
      P_CDTIPOOPER  IN TIPOOPERAC.CDTIPOOPER%TYPE DEFAULT NULL,
      P_DTSAIDANF IN DATE DEFAULT NULL
) AS
   
   
   /* VARIAVEIS PARA CONTROLE DE APURACAO */
   V_NRAPURACFAT VARCHAR2(10);
   V_IDSTATDOC        NUMBER;
   V_NRLANCTODUP      VARCHAR2(10);
   /* VARIAVEIS PARA CONTROLE DE GRAVACAO DA NOTA FISCAL */
   V_CHAVECST     VARCHAR2(14);

   V_CDSERIE      SERIENF.CDSERIE%TYPE;
   V_IDSERIEAUTO  VARCHAR2(01);
   V_NRLANCTONF   VARCHAR2(20);
   V_CDEMPRESA    FILIAL.CDEMPRESA%TYPE;
   V_CDINSCMUNI   FILIAL.CDINSCMUNI%TYPE;
   V_CDINSCESTA   FILIAL.CDINSCESTA%TYPE;
   V_IDTPIJURCLIE CLIENTE.IDTPIJURCLIE%TYPE;
   V_NRINSJURCLIE CLIENTE.NRINSJURCLIE%TYPE;
   v_NRINSJURTRAN CLIENTE.NRINSJURTRAN%TYPE;
   V_IDTPIJURTRAN CLIENTE.IDTPIJURTRAN%TYPE;
   V_IDPGTOFRETE  CLIENTE.IDPGFRETTRANCLI%TYPE;
   V_NRPLACAVEIC  VIATURA.NRPLACA%TYPE;
   V_SGUFVEICULO  VIATURA.SGUFVEICULO%TYPE;
   V_PRXLANCESTQ  VARCHAR2(10);
   V_VRCREDIDEBI  NOTAFISCAL.VRNOTAFISC%TYPE;

   V_DSAJUCTREC      AJCTRECEBER.DSAJUSTEREC%TYPE;
   V_ENCARGO         ENCARGO.CDENCARGO%TYPE;

   V_CDGRUPOFISC  VARCHAR2(03);
   V_DESCDOTACAO  VARCHAR2(01);
   V_CDAJUSTPADR  VARCHAR2(02);
   V_CDENCREDITO  VARCHAR2(02);
   V_CDENCDEBITO  VARCHAR2(02);
   V_IDENDCFOP      VARCHAR2(01);
   V_PAISORIG       VARCHAR2(04);
   V_ESTAORIG       VARCHAR2(02);
   V_MUNIORIG       VARCHAR2(04);
   V_ORIGDESTOP     VARCHAR2(01);
   V_CDORIGDESTNF   VARCHAR2(21);
   V_IDENDEMIS      VARCHAR2(01);
   V_PAISDEST       VARCHAR2(04);
   V_ESTADEST       VARCHAR2(02);
   V_MUNIDEST       VARCHAR2(04);
   V_CDEMPRESADEST  VARCHAR2(02);
   V_CDINSCESTADEST VARCHAR2(16);
   V_IDINTEREST     VARCHAR2(01);
   V_IDINTERNA      VARCHAR2(01);

   /* VARIAVEL DO TIPO DE OPERACAO */
   V_CDTIPOOPER   VARCHAR2(02);

BEGIN
   /*GERAR NOTAS FISCAIS*/
   IF P_OPERACAO = 'G' THEN
   
      /*TIPO DE OPERACAO PARA O LANCAMENTO*/
      IF ((P_CDTIPOOPER IS NULL) OR (P_CDTIPOOPER = '') OR (P_CDTIPOOPER = ' ')) THEN
         V_CDTIPOOPER := '01';
      ELSE
         V_CDTIPOOPER := P_CDTIPOOPER;
      END IF;
   
      V_VRCREDIDEBI := 0;
   
      SELECT NVL(MAX(IDSERIEAUTO), 'N')
      INTO V_IDSERIEAUTO
      FROM TIPOOPERAC
      WHERE CDTIPOOPER   = V_CDTIPOOPER AND
            IDENTRSAIDOP = 'S';   
      
     
      /*RETORNA O NRO DO PEDIDO, FILIAL DO PEDIDO, CLIENTE*/
      FOR C_PEDIDOS IN (SELECT CDFILIAL, CDCLIENTE, 
                               MAX(TRUNC(DTENTREGA)) AS DTENTREGA
                          FROM PEDIDOSERV P INNER JOIN LISTA L ON L.NRLISTA = P_LISTAPEDIDO AND 
                                                                  L.NRORG = P.NRORG AND 
                                                                  L.CDLISTA = P.NRPEDIDOSERV
                         WHERE P.NRORG = P_NRORG AND
                               P.NRLANCTONF IS NULL
                        GROUP BY CDFILIAL, CDCLIENTE
      ) LOOP
   
         /* BUSCA AS INFORMACOES PARA CADASTRAMENTO DA NOTA FISCAL */
         SELECT MAX(CDEMPRESA), MAX(CDINSCMUNI), MAX(CDINSCESTA), MAX(CDSERIE)
         INTO V_CDEMPRESA, V_CDINSCMUNI, V_CDINSCESTA, V_CDSERIE
         FROM FILIAL
         WHERE CDFILIAL = C_PEDIDOS.CDFILIAL;
   
         IF V_IDSERIEAUTO = 'S' THEN
            SELECT MAX(P.CDSERIE)
            INTO V_CDSERIE
            FROM PARAMSERIE P, FILIAL F, CLIENTE C
            WHERE F.CDFILIAL      = C_PEDIDOS.CDFILIAL AND
                  NVL(F.CDFILIFISC, F.CDFILIAL) = P.CDFILIAL   AND
                  P.CDEMPRESA     = V_CDEMPRESA  AND
                  P.CDINSCESTA    = V_CDINSCESTA AND
                  P.CDINSCMUNI    = V_CDINSCMUNI AND
                  P.CDTIPOOPER    = V_CDTIPOOPER AND
                  C.CDCLIENTE     = C_PEDIDOS.CDCLIENTE  AND
                  P.CDCONDICAOIVA = C.CDCONDIVACLI AND
                  P.IDENTRSAIDOP  = 'S';
         END IF;
     
         /*DADOS DO EMITENTE*/
         SELECT NVL(MAX(IDENDCFOPFIL),'I'), MAX(CDEMPRESA), MAX(CDINSCESTA)
         INTO   V_IDENDCFOP,                V_CDEMPRESA,    V_CDINSCESTA
         FROM   FILIAL
         WHERE  (CDFILIAL = C_PEDIDOS.CDFILIAL);
   
         IF V_IDENDCFOP = 'I' THEN
            SELECT MAX(CDPAIS), MAX(SGESTADO), MAX(CDMUNICIPIO)
            INTO   V_PAISORIG,  V_ESTAORIG,    V_MUNIORIG
            FROM   INSCRESTAD
            WHERE  CDEMPRESA  = V_CDEMPRESA AND
                   CDINSCESTA = V_CDINSCESTA;
         ELSE
            SELECT MAX(CDPAIS), MAX(SGESTADO), MAX(CDMUNICIPIO)
            INTO   V_PAISORIG,  V_ESTAORIG,    V_MUNIORIG
            FROM   ENDEFILI
            WHERE  (CDFILIAL     = C_PEDIDOS.CDFILIAL) AND
                   (IDTPENDEFILI = V_IDENDCFOP);
         END IF;
   
         /*DADOS DO DESTINIATARIO */
         SELECT MAX(IDORIGDESTOP)
         INTO   V_ORIGDESTOP
         FROM   TIPOOPERAC
         WHERE  IDENTRSAIDOP = 'S' AND
                CDTIPOOPER   = V_CDTIPOOPER;
   
         IF V_ORIGDESTOP = 'L' THEN /*QUANDO O DESTINATARIO E UMA FILIAL */
            SELECT NVL(MAX(IDENDEMISFIL),'I'), MAX(CDEMPRESA), MAX(CDINSCESTA)
            INTO   V_IDENDEMIS,                V_CDEMPRESADEST,    V_CDINSCESTADEST
            FROM   FILIAL
            WHERE  (CDFILIAL = C_PEDIDOS.CDFILIAL);
      
            IF V_IDENDEMIS = 'I' THEN
               SELECT MAX(CDPAIS), MAX(SGESTADO), MAX(CDMUNICIPIO)
               INTO   V_PAISDEST,  V_ESTADEST,    V_MUNIDEST
               FROM   INSCRESTAD
               WHERE  CDEMPRESA  = V_CDEMPRESADEST AND
                      CDINSCESTA = V_CDINSCESTADEST;
            ELSE
               SELECT MAX(CDPAIS), MAX(SGESTADO), MAX(CDMUNICIPIO)
               INTO   V_PAISDEST,  V_ESTADEST,    V_MUNIDEST
               FROM   ENDEFILI
               WHERE  CDFILIAL     = C_PEDIDOS.CDFILIAL AND
                      IDTPENDEFILI = V_IDENDEMIS;
            END IF;
         ELSIF V_ORIGDESTOP = 'F' THEN /*QUANDO O DESTINATARIO E UM FORNECEDOR*/
            SELECT NVL(MAX(IDENDEMISFOR),'P')
            INTO   V_IDENDEMIS
            FROM   FORNECEDOR
            WHERE  (CDFORNECED = C_PEDIDOS.CDFILIAL);
      
            SELECT MAX(CDPAIS), MAX(SGESTADO), MAX(CDMUNICIPIO)
            INTO   V_PAISDEST,  V_ESTADEST,    V_MUNIDEST
            FROM   ENDEFORN
            WHERE  (CDFORNECED   = C_PEDIDOS.CDFILIAL) AND
                   (IDTPENDEFORN = V_IDENDEMIS);
         ELSE /*QUANDO O DESTINATARIO E UM CLIENTE*/
            SELECT NVL(MAX(IDENDEMISCLI),'P')
            INTO   V_IDENDEMIS
            FROM   CLIENTE
            WHERE  (CDCLIENTE = C_PEDIDOS.CDCLIENTE);
      
            SELECT MAX(CDPAIS), MAX(SGESTADO), MAX(CDMUNICIPIO)
            INTO   V_PAISDEST,  V_ESTADEST,    V_MUNIDEST
            FROM   ENDECLIE
            WHERE  (CDCLIENTE    = C_PEDIDOS.CDCLIENTE) AND
                   (IDTPENDECLIE = V_IDENDEMIS);
         END IF;
         
         /*VERIFICANDO OS PARAMETROS INTERESTADUAL E INTERNACIONAL*/
         V_IDINTEREST := 'N';
         V_IDINTERNA  := 'N';
         IF ((V_PAISDEST = V_PAISORIG) AND (V_ESTADEST <> V_ESTAORIG)) THEN
            V_IDINTEREST := 'S';
         ELSIF (V_PAISDEST <> V_PAISORIG) THEN
            V_IDINTERNA := 'S';
         END IF;
   
         /* BUSCA AS INFORMACOES PARA CADASTRAMENTO DE AJUSTE */
         SELECT MAX(SUBSTR(DSAJUCTREC,1,20))
         INTO V_DSAJUCTREC
         FROM TIPOAJRECEBER
         WHERE V_CDAJUSTPADR = CDAJUCTREC;
      
         SELECT MAX(SUBSTR(DSPARAMFATFI,56,1)),          /*DESCONTO DE DOTACAO*/
                MAX(SUBSTR(DSPARAMFATFI,57,2)),          /*AJUSTE PADRAO*/
                MAX(SUBSTR(DSPARAMFATFI,59,2)),          /*ENCARGO DEBITO*/
                MAX(SUBSTR(DSPARAMFATFI,61,2))           /*ENCARGO CREDITO*/
         INTO V_DESCDOTACAO, V_CDAJUSTPADR, V_CDENCREDITO,
              V_CDENCDEBITO
         FROM PARAMFILIAL
         WHERE CDFILIAL = C_PEDIDOS.CDFILIAL;
   
         SELECT SUM(VRNOTAFISC)
         INTO V_VRCREDIDEBI
         FROM NOTAFISCAL N
         WHERE (N.CDFILIAL     = C_PEDIDOS.CDFILIAL)            AND
               (N.CDTIPOOPER   = '12')                          AND
               (N.IDENTRSAIDOP = 'S')                           AND
               (N.DTENTRSAID = NVL(P_DTSAIDANF,C_PEDIDOS.DTENTREGA));
      
         IF V_VRCREDIDEBI < 0 THEN
            V_VRCREDIDEBI := V_VRCREDIDEBI * (-1);
            V_ENCARGO    := V_CDENCDEBITO;
         ELSIF V_VRCREDIDEBI > 0 THEN
            V_ENCARGO    :=  V_CDENCREDITO;
         END IF;
         
         CONSULTA_GRUPOFISCAL('C', C_PEDIDOS.CDCLIENTE, C_PEDIDOS.CDFILIAL , 'S', V_CDTIPOOPER, V_CDGRUPOFISC);
      
         /*NRO DA NOTA FISCAL PARA O PEDIDO*/
         NOVO_CODIGO('LANCNF/FILIAL' || C_PEDIDOS.CDFILIAL,V_NRLANCTONF);
         V_NRLANCTONF := SUBSTR(V_NRLANCTONF,11,10);
   
         V_CHAVECST := C_PEDIDOS.CDFILIAL || V_NRLANCTONF;
         
         SELECT MAX(IDTPIJURCLIE), MAX(NRINSJURCLIE), MAX(NRINSJURTRAN), MAX(IDTPIJURTRAN), MAX(IDPGFRETTRANCLI)
           INTO V_IDTPIJURCLIE, V_NRINSJURCLIE, V_NRINSJURTRAN, V_IDTPIJURTRAN, V_IDPGTOFRETE
           FROM CLIENTE
          WHERE CDCLIENTE = C_PEDIDOS.CDCLIENTE;
         
         SELECT MAX(V.NRPLACA), MAX(V.SGUFVEICULO)
           INTO V_NRPLACAVEIC, V_SGUFVEICULO
           FROM VIATURA V, TRANSPORT T
          WHERE V.CDVIATURA = T.CDVEICPADRAO
            AND T.IDTPIJURTRAN = V_IDTPIJURTRAN
            AND T.NRINSJURTRAN = V_NRINSJURTRAN;
   
         GERA_NOTAFISCAL_CORPO(C_PEDIDOS.CDFILIAL, C_PEDIDOS.CDFILIAL, V_CDEMPRESA, V_CDTIPOOPER, V_CDSERIE, C_PEDIDOS.CDCLIENTE,
                               NVL(P_DTSAIDANF,C_PEDIDOS.DTENTREGA), 'FAI', V_NRLANCTONF, V_PRXLANCESTQ, 'N', V_NRAPURACFAT, V_NRLANCTONF, V_IDTPIJURTRAN, V_NRINSJURTRAN,
                               V_NRPLACAVEIC, V_SGUFVEICULO, V_IDPGTOFRETE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                               NVL(P_DTSAIDANF,C_PEDIDOS.DTENTREGA), NULL);
                           
         IF (V_DESCDOTACAO = '1') AND (V_VRCREDIDEBI <> 0) THEN
            GERA_NOTAFISCAL_ENCARGO(C_PEDIDOS.CDFILIAL, V_NRLANCTONF, V_ENCARGO, V_VRCREDIDEBI);
         END IF;
         FOR C_DADOS_ADIC IN (SELECT NRPEDIDOSERV, DSLOCALENTREGA 
                                FROM PEDIDOSERV P INNER JOIN LISTA L ON L.NRLISTA = P_LISTAPEDIDO AND 
                                                                        L.NRORG = P.NRORG AND 
                                                                        L.CDLISTA = P.NRPEDIDOSERV 
                                                                        
                               WHERE P.NRORG = P_NRORG AND
                                     P.CDFILIAL = C_PEDIDOS.CDFILIAL AND
                                     P.CDCLIENTE = C_PEDIDOS.CDCLIENTE AND
                                     P.NRLANCTONF IS NULL
         )LOOP
            GERA_NOTAFISCAL_DADOSADIC(C_PEDIDOS.CDFILIAL,V_NRLANCTONF,NVL(P_DTSAIDANF,C_PEDIDOS.DTENTREGA),NVL(P_DTSAIDANF,C_PEDIDOS.DTENTREGA), 'Pedido MyOrder: '||TO_CHAR(C_DADOS_ADIC.NRPEDIDOSERV)||
            CASE WHEN C_DADOS_ADIC.DSLOCALENTREGA IS NULL THEN '.' ELSE ' Local de Entrega: '||C_DADOS_ADIC.DSLOCALENTREGA END);  
         END LOOP;

                               
         /*RETORNA SERVICO QUANTIDADE, PRECO, PRODUTO PARA FATURAMENTO */
         FOR C_ITEMPEDIDO IN (SELECT IT.CDSERVFILI, SE.NMSERVICO, SE.CDPRODUTO, SUM(IT.QTDEPEDIDO) AS QTDEPEDIDO,
                                     ROUND(UTIL_APURAC.CalcValrServ(IT.CDFILIAL, C_PEDIDOS.CDCLIENTE, IT.CDSERVFILI, C_PEDIDOS.DTENTREGA, NULL),2) VRSERVICO
                                FROM ITEMPEDIDOSERV IT INNER JOIN SERVICO SE ON IT.NRORG = SE.NRORG AND IT.CDFILIAL = SE.CDFILIAL AND IT.CDSERVFILI = SE.CDSERVFILI
                                                       INNER JOIN LISTA L ON L.NRLISTA = P_LISTAPEDIDO AND L.NRORG = IT.NRORG AND L.CDLISTA = IT.NRPEDIDOSERV 
                               WHERE IT.NRORG = P_NRORG AND
                                     IT.CDFILIAL = C_PEDIDOS.CDFILIAL
                              GROUP BY IT.CDSERVFILI, SE.NMSERVICO, SE.CDPRODUTO, 
                                       ROUND(UTIL_APURAC.CalcValrServ(IT.CDFILIAL, C_PEDIDOS.CDCLIENTE, IT.CDSERVFILI, C_PEDIDOS.DTENTREGA, NULL),2)
         )LOOP
         
            CONSULTA_CST('S', V_CDEMPRESA, C_ITEMPEDIDO.CDPRODUTO, V_CDINSCESTA, V_CDTIPOOPER,
                         C_PEDIDOS.CDFILIAL, V_NRLANCTONF, V_CDGRUPOFISC, V_IDINTEREST, V_IDINTERNA);
            
   
            GERA_NOTAFISCAL_PRODUTO(C_PEDIDOS.CDFILIAL,
                                    V_NRLANCTONF,
                                    C_ITEMPEDIDO.CDPRODUTO,
                                    C_ITEMPEDIDO.CDSERVFILI,
                                    C_ITEMPEDIDO.NMSERVICO,
                                    C_ITEMPEDIDO.QTDEPEDIDO,
                                    C_ITEMPEDIDO.VRSERVICO,
                                    0   , NULL, NULL,
                                    NULL, NULL, NULL,
                                    NULL, NULL, NULL,
                                    NULL, NULL, 'S',
                                    NULL, 0   , C_ITEMPEDIDO.CDSERVFILI,
                                    NULL, NULL, C_ITEMPEDIDO.CDSERVFILI);
            
         END LOOP;
   
         /* EFETUA O FECHAMENTO DA NOTA, GERACAO DE IMPOSTOS */
         GERA_NOTAFISCAL_FECHAMENTO(C_PEDIDOS.CDFILIAL, V_NRLANCTONF);
   
         IF (V_DESCDOTACAO = '2') AND (V_VRCREDIDEBI <> 0) THEN
            INSERT INTO AJCTRECEBER
            (CDFILIAL,    NRLANCTONF,  DTAJUSTEREC, CDAJUCTREC,
             DSAJUSTEREC, VRAJUSTEREC, NRSEQVENREC, NRPARCELAREC)
            (SELECT MAX(CDFILIAL),  MAX(NRLANCTONF), SYSDATE , V_CDAJUSTPADR,
                    V_DSAJUCTREC,   ROUND(V_VRCREDIDEBI,2),    MAX(NRSEQVENREC), MAX(NRPARCELAREC)
             FROM CONTARECEBER
             WHERE (CDFILIAL    =  C_PEDIDOS.CDFILIAL)    AND
                   (NRLANCTONF  =  V_NRLANCTONF));
         END IF;
   
            UPDATE PEDIDOSERV
               SET NRLANCTONF = V_NRLANCTONF,
                   CDFILIALNF = C_PEDIDOS.CDFILIAL
             WHERE CDFILIAL = C_PEDIDOS.CDFILIAL AND
                   CDCLIENTE = C_PEDIDOS.CDCLIENTE AND
                   EXISTS (SELECT L.CDLISTA 
                             FROM LISTA L 
                            WHERE L.NRLISTA = P_LISTAPEDIDO
                              AND L.CDLISTA = PEDIDOSERV.NRPEDIDOSERV
                              AND PEDIDOSERV.NRLANCTONF IS NULL);
                              
         DELETE CSTTEMP /*DELETAR NO FINAL DA NOTA*/
         WHERE NRCSTTEMP = V_CHAVECST;
   
      END LOOP;
   /************************/
   /************************/
   /*CANCELAR NOTAS FISCAIS*/   
   /************************/
   /************************/
   ELSE
      FOR C_DESFAZNF IN (SELECT P.CDFILIALNF, P.NRLANCTONF, NF.IDSTATUS
                           FROM PEDIDOSERV P INNER JOIN LISTA L ON L.NRLISTA = P_LISTAPEDIDO AND L.NRORG = P.NRORG AND L.CDLISTA = P.NRPEDIDOSERV
                                             INNER JOIN NOTAFISCAL NF ON NF.NRORG = P.NRORG AND NF.CDFILIAL = P.CDFILIAL AND NF.NRLANCTONF = P.NRLANCTONF
                          WHERE P.NRORG = P_NRORG AND
                                P.NRLANCTONF IS NOT NULL
                                GROUP BY P.CDFILIALNF, P.NRLANCTONF, NF.IDSTATUS
      )LOOP

         IF C_DESFAZNF.IDSTATUS IN ('A', 'E') THEN
           P_RETORNO := 'ERR_NFAPROV;' || C_DESFAZNF.CDFILIALNF || C_DESFAZNF.NRLANCTONF;
           RETURN;
         END IF;

         /*Verifica existencia de duplicata lancada para a NF*/
         BEGIN
            SELECT MAX(CR.NRLANCTODUP)
              INTO V_NRLANCTODUP
              FROM CONTARECEBER CR
                   INNER JOIN BOLETRECEBER BO ON BO.CDFILIAL = CR.CDFILIBOLREC AND
                                                 BO.NRLANBOLREC = CR.NRLANBOLREC
             WHERE (CR.CDFILIAL    = C_DESFAZNF.CDFILIALNF)
               AND (CR.NRLANCTONF  = C_DESFAZNF.NRLANCTONF)
               AND (BO.IDSTATBREC  = 'A')
               AND (CR.NRLANCTODUP IS NOT NULL)
               AND CR.NRORG = P_NRORG;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_NRLANCTODUP := NULL;
         END;
   
         IF V_NRLANCTODUP IS NOT NULL THEN
            P_RETORNO := 'ERR_NCANCENT;' || C_DESFAZNF.CDFILIALNF || C_DESFAZNF.NRLANCTONF;
            RETURN;
         END IF;
   
         /*Verifica status financeiro do documento*/
         CANCELA_DADOS_FINANCEIRO(C_DESFAZNF.CDFILIALNF,
                                  C_DESFAZNF.NRLANCTONF,
                                  'S',
                                  V_IDSTATDOC);

         IF (V_IDSTATDOC = 0) THEN

            UPDATE PEDIDOSERV
               SET NRLANCTONF = NULL
             WHERE CDFILIAL = C_DESFAZNF.CDFILIALNF AND
                   NRLANCTONF = C_DESFAZNF.NRLANCTONF;

            DELETA_NF(C_DESFAZNF.CDFILIALNF, C_DESFAZNF.NRLANCTONF, 'I');

            DELETA_NF(C_DESFAZNF.CDFILIALNF, C_DESFAZNF.NRLANCTONF, 'C');
         ELSE

            IF V_IDSTATDOC = 1 THEN
               P_RETORNO := 'ERR_MS03;'; -- BOLETO BAIXADO
            ELSIF V_IDSTATDOC = 2 THEN
               P_RETORNO := 'ERR_MS04;'; -- CONTA PARCELA
            ELSIF V_IDSTATDOC = 4 THEN
               P_RETORNO := 'ERR_MS06;'; -- AJUSTE DO BOLETO
            ELSIF V_IDSTATDOC = 5 THEN
               P_RETORNO := 'ERR_MS07;'; -- BOLETO EMITIDO
            ELSIF V_IDSTATDOC = 6 THEN
               P_RETORNO := 'ERR_MS08;'; -- BOLETO COM CNAB
            ELSIF V_IDSTATDOC = 7 THEN
               P_RETORNO := 'ERR_MS09;'; -- BOLETO ASSOCIADO
            ELSIF V_IDSTATDOC = 8 THEN
               P_RETORNO := 'ERR_MS11;'; -- CREDITO UTILIZADO
            END IF;
            RETURN;
         END IF;
      END LOOP;
   END IF;
   P_RETORNO := 'OK';
   COMMIT;
END;
/