Ir para conteúdo
  • Cadastre-se

dev botao

ACbrNFSeX -> LerXml: Falha ao ler o XML de NFSe do provedor Coplan para prefeitura de Sinop - MT


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

Recommended Posts

  • Membros Pro

Ao Ler o XML de NFSe do provedor Coplan, para prefeitura de Sinop-MT

Na classe ACBrNFSeXLerXml_ABRASFV2.pas, linha: 1260, está esperando por uma tag chamada tcCompNfse. Porem, para o provedor Coplan, essa tag não existe. 


image.png.452b8b0de244fa7b44f545922ab7647a.png

Nas linhas 1262 a 1264, implementamos essa condição para conseguir ler o Xml, após isso, a leitura ocorreu perfeitamente.


Imagem
Precisamos que essa condição sejá incluida pelo AcBr, para evitarmos problema de atualização.

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution
40 minutos atrás, Quality Automação disse:

Ao Ler o XML de NFSe do provedor Coplan, para prefeitura de Sinop-MT

Na classe ACBrNFSeXLerXml_ABRASFV2.pas, linha: 1260, está esperando por uma tag chamada tcCompNfse. Porem, para o provedor Coplan, essa tag não existe. 


image.png.452b8b0de244fa7b44f545922ab7647a.png

Nas linhas 1262 a 1264, implementamos essa condição para conseguir ler o Xml, após isso, a leitura ocorreu perfeitamente.


Imagem
Precisamos que essa condição sejá incluida pelo AcBr, para evitarmos problema de atualização.

Boa tarde!

Vamos analisar o trecho da rotina LerXmlNfse:

//A rotina recebe como parâmentro um ANode, ou seja, um nó do XML
function TNFSeR_ABRASFv2.LerXmlNfse(const ANode: TACBrXmlNode): Boolean;
var
//Variável auxiliar para ler os nós filhos do parâmetro;
  AuxNode: TACBrXmlNode;
begin
  Result := True;

  //AQUI ela testa se o nó que recebeu no parâmetro está definido, se não tiver, já cai fora.
  if not Assigned(ANode) then Exit;

  //Coforme comentário presente nos fontes, essa linha foi adicionada para o provedor Tecnos que tem este elemento extra.
  //se encontrar atribui ele na auxiliar
  // O provedor Tecnos tem essa tag entre as tag CompNfse e Nfse.
  AuxNode := ANode.Childrens.FindAnyNs('tcCompNfse');

  //Se não encontrar no Nó que veio do parâmetro o elemento tcCompNfse, atribui o próprio nó pai na variável auxiliar.
  if AuxNode = nil then
    AuxNode := ANode;

  //Procura no Nó atribuído a variável auxiliar o nó "Nfse".
  AuxNode := AuxNode.Childrens.FindAnyNs('Nfse');

  //Segue com a leitura....
end;

Podemos então concluir que o ANode recebido como parâmetro para rotina de leitura é um nível anterior ao <Nfse>.

Agora vamos conferir o schema do arquivo de retorno da consulta de NFSe por RPS:

image.png

Veja que o nível anterior ao <Nfse> já é o <CompNfse>.

O que indica que você na verdade está carregando para fazer a leitura do XML o arquivo cujo primeiro item é o <ConsultarNfseRpsResposta>. Esse não é o arquivo correto, ele é o XML de retorno da consulta e não o XML de uma Nfse.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.