Como Corrigir o Erro xmlParseEntityRef: no name ao Transmitir uma NF pelo TSS no TOTVS Protheus

Tempo de leitura: 2 minutos

Olá, ao tentar fazer uma transmissão de notas fiscal pelo TSS no TOTVS Protheus o sistema apresentou apresentou o erro xmlParseEntityRef: no name. Esse problema está relacionado á algum caractere especial(&, <, >) que foi identificado no XML.

💼 Trabalha com módulos do Protheus?

Receba dicas práticas, soluções de erros e rotinas reais do dia a dia

✔ Problemas reais resolvidos
✔ Dicas de processos
✔ Otimização de rotinas  

🔐 Sem spam. Só conteúdo útil.

Erro xmlParseEntityRef: no name ao transmitir uma NF no TOTVS Protheus

Geralmente esses caracteres especiais podem vir do nome ou endereço do cliente e foi informado nos campos de mensagem da nota no pedido de vendas(SC5), no campo C5_MENNOTA e no campo de mensagem da nota no campo F2_MENNOTA, assim subtitiua o caractere especial por um equivalente, por exemplo, o & por e, utilizando a função StrTran por exemplo.

Como solução paliativa você pode dar um REPLACE nos campos C5_MENNOTA e F2_MENNOTA para substituir o & por E conforme o exemplo:


Replace no no campo C5_MENNOTA:

UPDATE SC5010 SET C5_MENNOTA=REPLACE(C5_MENNOTA,’&’,’E’) WHERE C5_MENNOTA LIKE ‘%&%’ AND D_E_L_E_T_<>’

 

Replace no no campo F2_MENNOTA:
UPDATE SF2010 SET F2_MENNOTA=REPLACE(F2_MENNOTA,’&’,’E’) WHERE F2_MENNOTA LIKE ‘%&%’ AND D_E_L_E_T_<>”


 

Uma solução para correção definitiva é tratar em um ponto de entrada específico acrescentando os seguintes trechos de códigos utilizando a função StrTran em ADVPL para substituir um caractere por outro:

No campo C5_MENNOTA:

DBSelectarea("SC5")
    DBSetOrder(1)
    If DBSeek(xfilial("SC5")+cNumPed)
        If SC5->C5_NUM==cNumPed
            RecLock("SC5",.F.)
            SC5->C5_MENNOTA     := StrTran(mMsgfis,"&","e")
          ....
            MsUnLock()
        EndIf
    EndIf

 

 

No campo F2_MENNOTA:

DBSelectarea("SF2")
    DBSetOrder(1)
    DBSeek(xFilial("SF2")+_nFiscal+_nSerie+_nCliente+_nLoja)
       
    If(_nSerie+_nFiscal == SF2->(F2_SERIE+F2_DOC))
        RecLock("SF2",.F.)
      ...
        SF2->F2_MENNOTA     := StrTran(mMsgfis,"&","e")
      ...
        MsUnLock()
    EndIf

Após fazer esses procedimentos exclua e refaça a nota e depois retransmita.

 

💼 Trabalha com módulos do Protheus?

Receba dicas práticas, soluções de erros e rotinas reais do dia a dia

✔ Problemas reais resolvidos
✔ Dicas de processos
✔ Otimização de rotinas  

🔐 Sem spam. Só conteúdo útil.

Bem, finalizamos mais um post aqui no blog ProtheusAdvpl. Espero que tenha lhe ajudado. 

Nos ajude compartilhando esse conteúdo nas suas redes sociais do TOTVS Protheus.

Grande abraço e fica com Deus. 

 

Link de referência:https://www.epvconsulting.com.br/post/xmlparseentityref-no-name-ao-transmitir-uma-nf-tss

🚀 Quer dominar o Protheus de verdade?
Entre para o ProtheusAdvpl e receba conteúdos exclusivos sobre desenvolvimento, infraestrutura, módulos e carreira no Protheus

✔ Conteúdos organizados por categorias (Programação, Framework, Backoffice e RH)
✔ Dicas práticas usadas no dia a dia do Protheus
✔ Acesso a materiais, post e atualizações do Blog
🔐 Seu email está seguro. Sem spam. Só conteúdo profissional.