Ir para conteúdo
  • Cadastre-se

dev botao

Tag /protnfe Duplicada


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 3998 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa tarde.

 

Após a atualização dos fontes do ACBR com as últimas modificações do dia 09/12 está ocorrendo duplicidade no fechamento da tag protnfe no arquivo nfe.xml

 

Não ocorre erro no envio da nfe, apenas no xml salvo onde consta a aprovação da nota, o xml fica corrompido.

 

Pelo que pude constatar o problema está na unit pcnProcNFe na function GerarXML:

 

temos na linha 188:

xProtNFe := LocLeitor.rExtrai(1, 'protNFe', '', i + 1)+'</protNFe>';

 

e posteriormente nas linhas 229 e 247 (esses 2 estão separados por um if então só faz um deles):

{****}'</protNFe>';

 

Testei alterar a linha 188 para:

xProtNFe := LocLeitor.rExtrai(1, 'protNFe', '', i + 1);

 

e após o xml ficou salvo corretamente.

 

Peço que por favor alguém confirme se este erro está realmente acontecendo.

 

Encontrei um problema semelhante na geração do procEventoNFe.xml, ao enviar uma carta de correção o arquivo também está fechando a tag </infEvento> duas vezes, este caso eu ainda não localizei nos fontes onde está ocorrendo.

 

Segue anexo xmls com os problemas mencionados.

431312114167710001805500100002815418644302021101101-procEventoNFe.xml

43131211416771000180550010000281551864430250-nfe.xml

  • Membros Pro
Postado (editado)

Após nova análise acredito que o problema na verdade esteja na function rExtrai da unit pcnLeitor.

 

Esta function atualmente está fechando a tag informada, dessa forma ao passar:

xProtNFe := LocLeitor.rExtrai(1, 'protNFe', '', i + 1)+'</protNFe>';

acaba sendo fechado a protNFe duas vezes, uma vez dentro da função rExtrai e outra logo após no +'</protNFe>'

 

O problema na CCe ocorre com essa mesma função, nas várias vezes em que ela é chamada na CCe as tags duplicam:

wProc.Add(UTF8Encode(Leitor.rExtrai(1, 'infEvento', '', j + 1)));

wProc.Add('</infEvento>');

wProc.Add(UTF8Encode(Leitor.rExtrai(1, 'SignedInfo', '', i + 1)));
wProc.Add('</SignedInfo>');
wProc.Add(UTF8Encode(Leitor.rExtrai(1, 'KeyInfo', '', i + 1)));
wProc.Add('</KeyInfo>');
 
Testei comentar as adições extras de fechamento de todas tags passadas no rExtrai da CCe e o xml foi gerado corretamente.
 
Edit:
Mesmo problema ocorre no CTe, unit pcteProcCTe:
xProtCTe := LocLeitor.rExtrai(1, 'protCTe', '', i + 1)+'</protCTe>';
Editado por DIOGOWAR
  • Consultores
Postado

Bom dia Diogo,

 

Você tem toda razão, antes a função rExtrai retornava o conteudo de um grupo por exemplo: infEvento, com a TAG de inicio e sem a TAG de Fim ou seja, </infEvento>.

 

Essa função foi alterada por Claudemir de tal forma que ela retorna-se o conteudo de grupo completo, ou seja com a TAG de Fim.

 

Vamos fazer as devidas correções.

 

Desde já muito obrigado pelo alerta.

 

Favor atualizar os fontes e testar.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

Obrigado pelo retorno Italo.

 

As alterações funcionaram, no entanto funcionaram apenas para a CCe, na NFe e CTe continua com problema.

 

Eu pensei que talvez você alteraria diretamente a rExtrai, se for fazer dessa forma comentando todos lugares onde adiciona o fechamento após usar o rExtrai então tem que alterar também na pcnProcNFe:

xProtNFe := LocLeitor.rExtrai(1, 'protNFe', '', i + 1)+'</protNFe>';

 

e na  pcteProcCTe:

xProtCTe := LocLeitor.rExtrai(1, 'protCTe', '', i + 1)+'</protCTe>';

 

Esses foram apenas os locais que eu identifiquei o problema, talvez tenha mais, talvez seria interessante dar um "find in files" procurando todos lugares que usam rExtrai.

  • Este tópico foi criado há 3998 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.