Ir para conteúdo
  • Cadastre-se

dev botao

Falha na validação dos dados do Xml da NFe.


Ver Solução Respondido por Diego Foliene,

Recommended Posts

  • Membros Pro
Postado

Bom dia!

Estou fazendo os testes para migrar o envio de notas para o componente ACBR.

Carrego o Xml que eu mesmo gero, já validado na Sefaz RS.

image.thumb.png.de3eb375c54559cf42f46153d5c485c6.png

     ACBrNFe1.NotasFiscais.Clear;
     ACBrNFe1.NotasFiscais.LoadFromString(Xml);

Ao tentar enviar recebo a mensagem de Falha na validação.

ACBrNFe1.Enviar(StrToInt(NroLote), False, False);

image.png.c9b8a0e1f2249d27d25d42398c112eb5.png

000025.XML eNFeConfig.ini

  • Moderadores
Postado

os schemas estão atualizados?

validei ele em mais de um lugar e recebi

Citar

NFe42241201380464000567550010000000251228838388

XML válido com alertas:

  • Alerta[CSTCFOP]: Item 1: A utilização da CFOP: 6921 para pessoa Jurídica realizando um tipo de operação de Saída sendo este Emitente classificado no Regime Tributário Normal utilizando o CST 99 para PIS, não é uma combinação coerente.
  • Alerta[CSTCFOP]: Item 1: A utilização da CFOP: 6921 para pessoa Jurídica realizando um tipo de operação de Saída sendo este Emitente classificado no Regime Tributário Normal utilizando o CST 99 para COFINS, não é uma combinação coerente.

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Moderadores
Postado
57 minutos atrás, Djalma Grivol disse:

image.png.c9b8a0e1f2249d27d25d42398c112eb5.png

Esse erro indica que você está tentando validar um XML sem itens.

Não é o caso do XML em anexo, então verifique novamente qual XML está sendo validado.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Consultores
Postado

Tópico movido para a área do ACBr Pro, para que o SLA de respostas seja considerado

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 !!

  • Consultores
Postado

Bom dia!

Utilizando o programa exemplo do componente ACBrNFe para Delphi adicionei um botão com o seguinte código:

// Sugestão de configuração para apresentação de mensagem mais amigável ao usuário final
ACBrNFe1.Configuracoes.Geral.ExibirErroSchema := False;
ACBrNFe1.Configuracoes.Geral.FormatoAlerta := 'Campo:%DESCRICAO% - %MSG%';

OpenDialog1.Title := 'Escolha o arquivo XML';
OpenDialog1.DefaultExt := '*.xml';
OpenDialog1.Filter := 'Arquivos XML(*.XML)|*.XML|Arquivos xml(*.xml)|*.xml';
if OpenDialog1.Execute then
begin
  ACBrNFe1.NotasFiscais.Clear;
  ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
  ACBrNFe1.NotasFiscais.Assinar;
  try
    ACBrNFe1.NotasFiscais.Validar;
    ShowMessage('Nota Fiscal Válida');
  except
    on E:Exception do
    begin
      pgRespostas.ActivePage := Dados;
      MemoDados.Lines.Add('Exception: ' + E.Message);
      MemoDados.Lines.Add('Erro: ' + ACBrNFe1.NotasFiscais.Items[0].ErroValidacao);
      MemoDados.Lines.Add('Erro Completo: ' + ACBrNFe1.NotasFiscais.Items[0].ErroValidacaoCompleto);
    end;
  end;
end;

E não tive problemas utilizando o arquivo 25.XML que disponibilizou.

Por favor, como está a sua rotina para carregar a o XML e fazer a assinatura e validação?

Alguns pontos que valem ser considerados:

  • A rotina ACBrNFe.NotasFiscais.LoadFromFile possui dois parâmetros, o primeiro deles é o arquivo e o segundo é um tipo booleano que vai dizer se o componente deve gerar o XML novamente. Veja se não está usando o valor True para o segundo parâmetro na sua rotina.
  • Existem duas units diferentes que fazem a leitura e a geração do XML, as da pcn e as que utilizam ACBrXmlDocument. No momento que fez a instalação, você marcou no instalador a opção "Usar ACBr_XML_Document"? Se sim, está usando ACBrXMLDocument caso contrário está usando pcn. Veja se o comportamento é o mesmo com ambas.
  • Pelas configurações do seu arquivo INI, está utilizando a configuração do WinCrypt que é recomendada para o certificado A3. Este é o seu caso? Se for certificado A1, consegue realizar um teste com OpenSSL?
  • Se você não estiver carregando um XML, mas sim alimentando as classes e gerando o XML, é importante que não haja mais de uma ocorrência de ACBrNFe1.NotasFiscais.Add, pois para cada NotasFiscais.Add, você está na verdade adicionando mais uma nota na lista.
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 !!

  • Membros Pro
Postado
  • A rotina ACBrNFe.NotasFiscais.LoadFromFile possui dois parâmetros, o primeiro deles é o arquivo e o segundo é um tipo booleano que vai dizer se o componente deve gerar o XML novamente. Veja se não está usando o valor True para o segundo parâmetro na sua rotina. (testei das 2 formas)
  • Existem duas units diferentes que fazem a leitura e a geração do XML, as da pcn e as que utilizam ACBrXmlDocument. No momento que fez a instalação, você marcou no instalador a opção "Usar ACBr_XML_Document"? Se sim, está usando ACBrXMLDocument caso contrário está usando pcn. Veja se o comportamento é o mesmo com ambas.  (não me lembro, como faço para testar?)
  • Pelas configurações do seu arquivo INI, está utilizando a configuração do WinCrypt que é recomendada para o certificado A3. Este é o seu caso? Se for certificado A1, consegue realizar um teste com OpenSSL?  (uso a1, com OpenSSL dá o seguinte erro)
  • image.png.4274ae684125769f661b634db6093eb4.png
  • Se você não estiver carregando um XML, mas sim alimentando as classes e gerando o XML, é importante que não haja mais de uma ocorrência de ACBrNFe1.NotasFiscais.Add, pois para cada NotasFiscais.Add, você está na verdade adicionando mais uma nota na lista.  (só carrego 1 xml  ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromString(Xml);
  • Membros Pro
Postado

 

Após utilizar o LoadfromFile() no programa exemplo o componente sobrescreve o arquivo com o Xml assinado (excluindo o item).

O componente não teria que pegar o Xml que eu gerei e simplesmente assinar?

Veja 25.XML

 

  • Membros Pro
Postado

Vejam que interessante.

25.xml = Xml gerado pelo sistema

ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromString(Xml);

25xml.xml = ACBrNFe1.NotasFiscais[0].XML

25orig.xml = ACBrNFe1.NotasFiscais[0].XMLOriginal

25ass.xml = ACBrNFe1.NotasFiscais[0].XMLAssinado (o problema está aqui, depois que assina some o item)

25.XML 25ass.XML 25orig.XML 25xml.XML

  • Consultores
Postado
2 hours ago, Djalma Grivol said:
  • Pelas configurações do seu arquivo INI, está utilizando a configuração do WinCrypt que é recomendada para o certificado A3. Este é o seu caso? Se for certificado A1, consegue realizar um teste com OpenSSL?  (uso a1, com OpenSSL dá o seguinte erro)
  • image.png.4274ae684125769f661b634db6093eb4.png

Com o OpenSSL, remova a informação do número de série e informe o caminho do PFX e a senha, conforme este tópico:

Vamos fazer mais alguns testes levando em conta as demais considerações.

Retornamos assim que descobrirmos mais informações.

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 !!

  • Consultores
Postado

Bom dia!

Fiz mais alguns testes em meu ambiente, no entanto, ainda não consegui reproduzir o problema. Aqui o XML é lido, assinado e validado sem acusar erro ou excluir o item.

Vou lhe pedir, por favor, que faça um teste em debug, seguindo o passo a passo.

1º- Primeiro de tudo, vou lhe pedir que confira se não tem na sua pasta dos fontes, nenhuma pasta ou unit que tenha um ícone de uma exclamação vermelha ao lado dela.

Se tiver, significa que nesta pasta ou este arquivo tem modificações locais tornando ele diferente do SVN.

Se tiver algum arquivo nesta situação, resolva esta diferença fazendo um SVN Revert.

2º- Quando toda a pasta dos fontes do ACBr estiver com um ícone verde atualize o ACBr e reinstale marcando a opção "Remover Arquivos Antigos"

instalador.jpg

Veja que eu também destaquei outra opção "Usar o ACBrXmlDocument (Em Teste)". Você é livre para marcar ou não está opção, mas ela vai influenciar no próximo passo.

3º - Se no passo anterior você marcou a opção "Usar o ACBrXmlDocument", então coloque um break point nos pontos indicados nesses prints:

Primeiro neste aqui, para conferir se a leitura do grupo com as informações do item do XML está sendo lida corretamente.(faça o debug a partir deste ponto, usando o step-into(F7) para ver se ele lê as informações e preenche o item).

ACBrNFeXmlReader.jpg

Depois neste ponto, onde ele gera o XML para conferir se ele está lendo as informações do item para gerar corretamente o XML.

ACBrNFeXmlWriter.jpg

Se no passo anterior você NÃO marcou a opção "Usar ACBrXmlDocument", então coloque o break-point nesses pontos seguindo a mesma lógica.

Confirmar se leu corretamente a informação do item:

pcnNFeR.jpgC

Confirmar se gerou corretamente a informação do item.

pcnNFeW.jpg

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 !!

  • Membros Pro
Postado (editado)

Bom dia!

Estou usando o PCN

Em relação a alteração de fontes não há.

Coloquei o break-point e realmente ele não entra no laço.

Em relação a formação do Xml, pelo que vi tenho que colocar a tag <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> no inicio senão ele não carrega a nota, é isso mesmo?

Tenta validar esse xml que esta em anexo.

 

Segue o xml

000024.XML

Editado por Djalma Grivol
  • Membros Pro
Postado (editado)

Bom dia!

Acho que achei o problema.

Veja a linha abaixo.

while pos('<det nItem=',ItensTemp) <> 0 do

A variavel Itenstemp esta com o conteúdo <det nItem = "1">.

Tem um espaço entre nitem e o igual.

Por isso que ele não entra no laço.

Porque o componente coloca esse espaço sendo que no Xml que gero não tem?

Estou com a versão de 03/11/2023

Editado por Djalma Grivol
  • Consultores
  • Solution
Postado
1 hour ago, Djalma Grivol said:

Veja a linha abaixo.

while pos('<det nItem=',ItensTemp) <> 0 do

A variavel Itenstemp esta com o conteúdo <det nItem = "1">.

O problema é este mesmo.

1 hour ago, Djalma Grivol said:

Porque o componente coloca esse espaço sendo que no Xml que gero não tem?

Conferindo na unit não tem o espaço.

Captura de tela 2024-12-30 124746.jpg

Pode confirmar como está na sua pcnNeW?

Você também pode fazer um teste com o botão Gerar NFe no exemplo para que seja gerado um XML com dados fictícios e verificar se está gerando com ou sem espaço.

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 !!

  • Membros Pro
Postado

Boa tarde!

Se mando o arquivo Xml Assinado funciona normalmente.

Mas se mando o arquivo sem assinar ele muda.

Quando passo o Xml para o componente ele gera ele novamente?

O arquivo Xml foi mudado em algum momento.

Você esta usando a Pcn?

  • Membros Pro
Postado (editado)

 

Aqui nessa variável Arquivo já esta errado.

Pelo que entendi o arquivo esta sendo manipulado em leitor.arquivo na pcnLeitor

 

image.thumb.png.f2a31e9d1e7111886b3ac03695db5393.png

 

Editado por Djalma Grivol
  • Consultores
Postado
47 minutos atrás, Diego Foliene disse:

Pode confirmar como está na sua pcnNeW?

Boa tarde, chegou a confirmar o que o @Diego Foliene citou acima a pcnNEW ?
Apenas complementando, após atualizações do SVN, vc rodou o instalador ?
Pergunto pq por enq não tivemos relatos semelhantes.

 

2 horas atrás, Djalma Grivol disse:

Estou com a versão de 03/11/2023

No que se refere qdo diz versão 2023? do SVN ?

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Membros Pro
Postado

Boa tarde!

O problema era o espaço mesmo.

Minha rotina estava dessa forma det nitem = "1" alterei para det nitem="1"

O estranho é como o Diego Foliene conseguiu validar mesmo o arquivo estando com espaço.

Obrigado!

  • Curtir 1
  • Consultores
Postado
26 minutes ago, Djalma Grivol said:

Minha rotina estava dessa forma det nitem = "1" alterei para det nitem="1"

O estranho é como o Diego Foliene conseguiu validar mesmo o arquivo estando com espaço.

Para poder testar em meu ambiente, eu precisava alterar o CNPJ do grupo emit colocando o CNPJ do certificado digital que possuo.

Para isso, eu abria o XML no notepad++ e usava um plugin chamado XML Tools para indentar o arquivo, editar o CNPJ, linearizar o arquivo novamente e salvar.

Neste processo o plugin removia os espaços.

Foi só quando eu alterei a informação sem fazer isso(indentar e linearizar) que consegui reproduzir o problema. Que foi quando respondi aqui:

1 hour ago, Diego Foliene said:
3 hours ago, Djalma Grivol said:

Veja a linha abaixo.

while pos('<det nItem=',ItensTemp) <> 0 do

A variavel Itenstemp esta com o conteúdo <det nItem = "1">.

O problema é este mesmo.

 

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 !!

Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.