Ir para conteúdo
  • Cadastre-se

dev botao

Testar se é uma NFE ou CTE


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

Recommended Posts

  • Membros Pro

Como eu posso testar se o XML é de uma NFe ou CTe?

Eu carrego o XML recebido no email para o ACBRBFe dentro de um Try e trato o CTe no Exception, conforme exemplo abaixo. É esta a maneira correta? DEvo usar o método Valida?

try

ACBrNFe.NotasFiscais.Clear;

ACBrNFe.NotasFiscais.LoadFromStream(xStream);

if ACBrNFe.NotasFiscais.Items[0].Alertas = '' then begin

//este if e necessario pq se não for uma nfe gera o exception ao usar a propriedade do objeto

end;

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Douglas,

Veja a solução adotada no projeto EmissorDFe, estude o fonte dele.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...
  • Membros Pro

Olá pessoal bom dia!

Utilizando a dica do @Italo Jurisato Junior estou tendo o seguinte problema:

Quando um CTe tem uma NFe relacionada, a tag '<infNFe' também existe no CTe, fazendo com que o código utilizado no EmissorDFe identifique o XML do CTe como NFe.

Existe alguma outra solução segura para garantir que esta identificação ocorra sem problemas?

Obrigado pela atenção de todos.

Gilson do Carmo
WindSoft Sistemas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Gilson,

Veja a sequencia:

ArquivoXML := TStringList.Create;
 ArquivoXML.LoadFromFile(edtArquivo.Text);

 TipoDFE := 0;
 if pos('<infNFe', ArquivoXML.Text) > 0
  then TipoDFE := 1;
 if pos('<infCte', ArquivoXML.Text) > 0
  then TipoDFE := 2;
 if pos('InfNfse', ArquivoXML.Text) > 0
  then TipoDFE := 3;
 if pos('infMDFe', ArquivoXML.Text) > 0
  then TipoDFE := 4;
 if pos('procEventoNFe', ArquivoXML.Text) > 0
  then TipoDFE := 5;
 if pos('procEventoCTe', ArquivoXML.Text) > 0
  then TipoDFE := 6;
 if pos('procEventoMDFe', ArquivoXML.Text) > 0
  then TipoDFE := 7;

 ArquivoXML.Free;

Note que primeiro checo se é uma NF-e e depois checo se é um CT-e.

Como você disse um CT-e possui a TAG infNFe mas uma NF-e não possui a TAG infCte.

  • Curtir 2
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3197 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.

The popup will be closed in 10 segundos...