Ir para conteúdo
  • Cadastre-se

dev botao

Erro DistribuicaoDFe


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

Recommended Posts

  • Membros Pro

Bom dia,

Pessoal, após atualizar para o trunk2 não estou mais conseguindo consultar a DF-e, no trunk está ok, em anexo está os dois xml, pelo que vi não tem nenhum parâmetro diferente, mais não retorna o xml certo não. Levanta um EACBrDFeException ''. 

20150710071753-con-dist-dfe-soap_TRUNK.xml

20150710071756-dist-dfe-soap_TRUNK.xml

20150710072105-con-dist-dfe-soap_TRUNK2.xml

20150710072106-dist-dfe-soap_TRUNK2.xml

Comparando os dois xml, notei que no trunk2 esta faltando a Tag        <nfeDadosMsg>.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Duarte,

Por favor faça o seguinte teste:

Comente a linha abaixo no fonte ACBrNFeWebServices.

  FPArqResp := 'dist-dfe';
//  FPBodyElement := 'nfeDistDFeInteresse';
  FPHeaderElement := '';

 

Depois tente novamente consultar.

Fico no aguardo do seu retorno.

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Duarte,

Por favor faça o seguinte teste:

Comente a linha abaixo no fonte ACBrNFeWebServices.

  FPArqResp := 'dist-dfe';
//  FPBodyElement := 'nfeDistDFeInteresse';
  FPHeaderElement := '';

 

Depois tente novamente consultar.

Fico no aguardo do seu retorno.

Bom dia, meu amigo,

Comentei e não resolveu não, veja o xml de envelopamento....

20150710112136-con-dist-dfe-soap.xml

chamo ela assim...

_NFe.DistribuicaoDFe(
                           15,
                           _NFe.SSL.CertCNPJ,
                           IfThen(StrToIntDef(aUltimo_NSU, 0) = 0, '0', IntToStr(StrToInt(aUltimo_NSU) -1)),
                           ''
                           );

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde Duarte,

E qual foi o retorno?

Boa tarde, simplesmente levantada uma exception vazia '', conforme informei acima. Usando o demo atualizado pelo regys pelo que vi lenta exception da img. Mais no trunk está funcionando 100%. Migrei todo o meu projeto para trunk2.

erro_DFe.jpg

Editado por Duarte
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Juliomar,

Esse problema que esta ocorrendo com o DistribuicaoDFe deve ter haver com o que estou conversando com o Daniel, existe uma procedure que define o a URL do serviço como sendo igual a do SoapAction e no caso do DistribuicaoDFe elas são diferentes.

  • Curtir 1
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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde Juliomar,

Esse problema que esta ocorrendo com o DistribuicaoDFe deve ter haver com o que estou conversando com o Daniel, existe uma procedure que define o a URL do serviço como sendo igual a do SoapAction e no caso do DistribuicaoDFe elas são diferentes.

Boa tarde,

 

Acabei de comparar as URLs conforme o juliomar solicitou, e estão corretas, comparei ao do site da receita... veja o que está no arquivo:

[NFe_AN_P]
NFeDistribuicaoDFe_1.00=https://www1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx

No site tá este, iguais...

NFeDistribuicaoDFe 1.00 https://www1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Duarte,

As URLs são as mesmas, desculpe não vejo nenhuma diferença.

A unica diferença esta no arquivo INI que temos um campo chamado NFeDistribuicaoDFe_1.00 que contem a URL usada.

Já no site temos apenas uma tabela indicando o nome do serviço a versão e a URL do mesmo.

O nome do campo traz <nome do serviço>_<versao>=URL

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa noite Italo,

Marquei um breack point, na linha (307-ACBrDFeWebService), veja os valores que estão repassados para FPDFeOwner.SSL.Enviar(FPEnvelopeSoap, FPURL, FPSoapAction);

FPEnvelopeSoap='<?xml version="1.0" encoding="UTF-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body><nfeDistDFeInteresse xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe"><distDFeInt xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"><tpAmb>1</tpAmb><cUFAutor>15</cUFAutor><CNPJ>10308036000190</CNPJ><consNSU><NSU>000000000000000</NSU></consNSU></distDFeInt></nfeDistDFeInteresse></soap12:Body></soap12:Envelope>'

FPURL='https://www1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx'

FPSoapAction='http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe/nfeDistDFeInteresse'

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Duarte,

Fiz uma alteração no componente que acredito que vá funcionar.

Como não tenho condições de compilar, pois na maquina que estou usando no momento ainda utilizo os fontes do Trunk, peço por gentileza que utilize o fonte que esta em anexo caso não ocorra erros de compilação, por favor teste e me reporte o resultado.

Fico no aguardo.

 

ACBrNFeWebServices.pas

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Duarte,

Fiz uma alteração no componente que acredito que vá funcionar.

Como não tenho condições de compilar, pois na maquina que estou usando no momento ainda utilizo os fontes do Trunk, peço por gentileza que utilize o fonte que esta em anexo caso não ocorra erros de compilação, por favor teste e me reporte o resultado.

Fico no aguardo.

 

ACBrNFeWebServices.pas

Agora meu amigo... Já lhe dou um retorno...!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Duarte,

Fiz uma alteração no componente que acredito que vá funcionar.

Como não tenho condições de compilar, pois na maquina que estou usando no momento ainda utilizo os fontes do Trunk, peço por gentileza que utilize o fonte que esta em anexo caso não ocorra erros de compilação, por favor teste e me reporte o resultado.

Fico no aguardo.

 

ACBrNFeWebServices.pas

Rodei aqui, está realizando agora a consulta da DF-e só os xml de retorno está vindo errado para todos os eventos, aqui fiz testes(CC-e, Cancelamento, Manifesto e Consulta). Veja log que está vindo errado, entre este, não está gerando correto o retorno da DF-e com lista das nf-e zipada...

586-pro-lot-soap.xml

587-eve-soap.xml

588-eve-soap.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Duarte,

Desculpa, mas esses arquivos em anexo não tem nada haver com o método DistribuicaoDFe.

Você anexou 2 que se refere ao retorno de envio de eventos e um que se refere ao retorno da autorização de uso de NF-e.

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Italo, acabei de voltar o fonte aqui, só para relatar, acho que este erro ai nos retorno não foi causado por esta mudança sua ai, pois com ACBrNFeWebServices.pas que tinha antes de você me envia esta novamente, também retorna o xml errado, só não tinha ainda analisado todos os logs de retorno.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Duarte,

Desculpa, mas esses arquivos em anexo não tem nada haver com o método DistribuicaoDFe.

Você anexou 2 que se refere ao retorno de envio de eventos e um que se refere ao retorno da autorização de uso de NF-e.

Me desculpe, anexei mesmo os arquivos errados, mais veja, ai esta o que estou lhe falando, em anexo os xml gerado pelo trunk e os que foram gerados usando as alterações que você me enviou trunk2

RetornoConsulta_Trunk.xml

RetornoConsulta_Trunk2.xml

SolicitaConsulta_Trunk.xml

SolicitaConsulta_Trunk2.xml

Analisando os dois xml no do trunk2 está faltando esta parte: <soap:Header><WSCorIDSOAPHeader CorID="87CBF5C3C8C6EFB50223D67B6CFDAF00,1:1,1,0,,,AgAAAkdIQgAAAAFGAAAAAQAAABFqYXZhLnV0aWwuSGFzaE1hcAAAAAhIQgAAAAJGAAAAAgAAABBqYXZhLmxhbmcuU3RyaW5nABBBcHBNYXBDYWxsZXJIb3N0SEIAAAADRQAAAAIADFNQQ0RTUlZWMDM0MkhCAAAABEUAAAACABBBcHBNYXBDYWxsZXJUeXBlSEIAAAAFRQAAAAIAB1NlcnZsZXRIQgAAAAZFAAAAAgAKVHhuVHJhY2VJZEhCAAAAB0UAAAACACE4N0NCRjU4NEM4QzZFRkI1MDIyM0Q2N0IxMTgzNjlBNjBIQgAAAAhFAAAAAgARQXBwTWFwQ2FsbGVyQWdlbnRIQ0hCAAAACUUAAAACAA5BcHBNYXBBcHBOYW1lc0hCAAAACkYAAAADAAAAE2phdmEudXRpbC5BcnJheUxpc3QAAAACSEIAAAALRQAAAAIAEk5GZURpc3RyaWJ1aWNhb0RGZUhCAAAADEUAAAACABJORmVEaXN0cmlidWljYW9ERmVIQgAAAA1FAAAAAgAWQXBwTWFwQ2FsbGVyTWV0aG9kTmFtZUhCAAAADkUAAAACACVTeW5jU2Vzc2lvbmxlc3NIYW5kbGVyfFByb2Nlc3NSZXF1ZXN0SEIAAAAPRQAAAAIAE0FwcE1hcENhbGxlclByb2Nlc3NIQgAAABBFAAAAAgAMLk5FVCBQcm9jZXNzSEIAAAARRQAAAAIAD0NhbGxlclRpbWVzdGFtcEhCAAAAEkUAAAACAA0xNDM2Nzk3MzY3NzQ3" xmlns="http://www.wilytech.com/" /></soap:Header>

Pelo que parece, trata-se da assinatura, é isto?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Duarte,

Você esta abrindo esses arquivos com algum aplicativo?

Ou apenas renomeou e anexou na sua postagem?

Tirando o fato que no arquivo nomeado como sendo RetornoConsulta_Trunk.xml conter o grupo Header e o RetornoConsulta_Trunk2.xml não ter o resto esta OK.

Agora quero saber se foi salvo os XMLs dos resumos das NF-e, os XMLs completos das NF-e e dos eventos?

Para que os mesmos sejam gravados em disco a propriedade: Configuracoes.Arquivos.Salvar tem que estar com o valor True.

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde Duarte,

Você esta abrindo esses arquivos com algum aplicativo?

Ou apenas renomeou e anexou na sua postagem?

Tirando o fato que no arquivo nomeado como sendo RetornoConsulta_Trunk.xml conter o grupo Header e o RetornoConsulta_Trunk2.xml não ter o resto esta OK.

Agora quero saber se foi salvo os XMLs dos resumos das NF-e, os XMLs completos das NF-e e dos eventos?

Para que os mesmos sejam gravados em disco a propriedade: Configuracoes.Arquivos.Salvar tem que estar com o valor True.

Boa tarde,

1º Eu apenas renomei os arquivos para facilitar a interpretação, ambos, está sendo salvo todos, mais tenho uma novidade do erro. debugando do o projeto após o envio desta .pas que você envio ai é o seguinte:

1º Eu chamo _NFe.DistribuicaoDFe(

2º Percorro os .zip retornado e vejo se o ACbr salvou a nota completa. for := 0 to _NFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.count -1 do...

3º Caso não ache o o xml salvo pelo acbr, então comando o envio do envento Manifestação: ai Meu amigo levanta este exception no arquivo ACBrDFeWebService.pas na linha 445. Exception levantada: Falha ao assinar o Envio de Evento CoInitialize não foi chamado, ClassID: {88D969E5-F192-11D4-A65F-0040963251E5}'

Segue código de que está sendo aplicado para envio da manifestação...

try
    try
      _StatusDFe.Panels[0].Text := 'Processando manifestação...';
      Application.ProcessMessages ;

      with _NFe.EventoNFe.Evento.Add do
      begin
        InfEvento.cOrgao   := 91;
        infEvento.chNFe    := aChave;
        infEvento.CNPJ     := _NFe.SSL.CertCNPJ;
        infEvento.dhEvento := now;
        infEvento.tpEvento := teManifDestCiencia;
      end;

      _NFe.EnviarEvento(StrToInt(FormatDateTime('hhmmss', time)));
      SalvaManifesto(aChave);
    except
      on e : exception do
        GeraFileLog('Procedure Manifesta:' + e.Message);
    end;
  finally
    _StatusDFe.Panels[0].Text := 'Manifestação processada!';
    Application.ProcessMessages ;
    _NFe.EventoNFe.Evento.Clear;
  end;

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Duarte,

Primeiramente, gostaria de chamar a atenção de não utilizar o DistribuicaoDFe para simplesmente obter o XML da NF-e.

A Manifestação do Destinatário deve ser feita de forma consciente e que condiz com a realidade e não manifestar tudo como teManifDestCiencia.

E se uma determinada nota não tem nada haver com o destinatário, ou melhor, alguém emitiu uma nota por engano contra o seu CNPJ ou emitida de forma fraudulenta.

No que diz a exceção levantada, você cria e destrói o componente toda vez que for utilizar?

Porque você esta pegando o CNPJ lendo o certificado, você não tem o CNPJ armazenado em uma tabela no banco de dados?

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa noite,

1º Italo muito obrigado pelas dicas. Sua alerta é necessária mesma! No código acima é apenas parte do projeto, é dado a opção de selecionar as nf-e que veio o Acbr não fez o downaload no retorno da ConsultaDFe, assim o usuário selecionar quais quer manifestar, então e feito um laço entre as selecionada, neste caso uso "Ciência" pois não acarreta em problemas no cancelamento da NF-e. Mais o usuário está ciente, ou seja ele tem a liberdade de ignorar o processo de manifestação.

2º Não destruo o componente em cada chamada, ele está colocado no form e é carregado suas propriedades no onCreate do form, vou ver a questão de pegar o CNPJ a cada chamada do procedimento, ele é armazenado num .ini quando o sistema é iniciado e que não tem o CNPJ dentro do .ini. Pois o projeto não prever uso de db, é apenas o .exe.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde Duarte,

Primeiramente, gostaria de chamar a atenção de não utilizar o DistribuicaoDFe para simplesmente obter o XML da NF-e.

A Manifestação do Destinatário deve ser feita de forma consciente e que condiz com a realidade e não manifestar tudo como teManifDestCiencia.

E se uma determinada nota não tem nada haver com o destinatário, ou melhor, alguém emitiu uma nota por engano contra o seu CNPJ ou emitida de forma fraudulenta.

No que diz a exceção levantada, você cria e destrói o componente toda vez que for utilizar?

Porque você esta pegando o CNPJ lendo o certificado, você não tem o CNPJ armazenado em uma tabela no banco de dados?

Acabei de fazer um teste, aqui. removi todas as chamadas: SSL.

A exceção é levantada se eu usar acbrNFe.DistribuicaoDFe depois acbrNFe.EnviarEvento. Fui debugando passo a passo veja aonde parou. Sendo que na primeira fez (DistribuiçãoDFe e assinado), se manifestar sem antes usar (DistribuiçãoDFe) manifesta.

TACBrNFe.EnviarEvento ->
function TDFeWebService.Executar ->
procedure TDFeWebService.InicializarServico->
procedure TDFeWebService.DefinirDadosMs->
function TDFeSSL.Assinar->
procedure TDFeSSL.InitSSLClass->
function TDFeSSL.Assinar->
XmlAss := FSSLClass.Assinar(ConteudoXML, docElement, infElement);Linha 246 ACBrDFeSSL.pas

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde Duarte,

Primeiramente, gostaria de chamar a atenção de não utilizar o DistribuicaoDFe para simplesmente obter o XML da NF-e.

A Manifestação do Destinatário deve ser feita de forma consciente e que condiz com a realidade e não manifestar tudo como teManifDestCiencia.

E se uma determinada nota não tem nada haver com o destinatário, ou melhor, alguém emitiu uma nota por engano contra o seu CNPJ ou emitida de forma fraudulenta.

No que diz a exceção levantada, você cria e destrói o componente toda vez que for utilizar?

Porque você esta pegando o CNPJ lendo o certificado, você não tem o CNPJ armazenado em uma tabela no banco de dados?

Italo, meu muito obrigado, a sua unit resolveu a questão da DistribuicaoDFe, em relação ao manifesto resolvi assim.

no inicio de cada manifesto, estou criando uma instância do acbrNFe para chamar o envioEvento, se usar a mesma instância que chamou a DistrbuicaoDFe, dar erro na assinatura, não sei o porque que no trunk não dava isto, então mudei o meu fonte está ok...

Deste já meu muito obrigado que Deus lhe abençoe grandemente.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Duarte,

Em vez de criar uma instância para chamar o método DistribuicaoDFe e outra para o EnvioEvento, porque você não coloca o componente ACBrNFe em um Data Module?

No form que será necessário executar algum método do componente basta declarar o DM no uses do respectivo form.

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Duarte,

Em vez de criar uma instância para chamar o método DistribuicaoDFe e outra para o EnvioEvento, porque você não coloca o componente ACBrNFe em um Data Module?

No form que será necessário executar algum método do componente basta declarar o DM no uses do respectivo form.

Vou testar! No projeto que emiti as NF-e e NFC-e eu uso assim, dentro de um DataModule, este da DistribuicaoDFe + Manifesto é um projeto a parte, mais o interessante é que no trunk já vinha funcionado a meses, ou seja, tenho apenas um componente no form, a cada chamada do EnvioEvento limpo os eventos(Clear) e depois adiciono os novos(Add) agora no trunk2 que deu este bug.

Acho que mesmo se jogo num data module daria no mesmo! Pois usarei o comando de manifesto logo após a DistribuicaoDFe, isto é, caso o usuário selecione notas a serem manifestada. Pois o projeto é assim:

1º Consultar as notas emitas usando o CNPJ,

2º Verificar quais destas notas já tenho o .xml (Coisa que o acbr tá fazendo legal, já baixa a nota completa "Download". Ficou ótimo isto!

3º Caso na lista vinda da DistribuicaoDFe tenha notas que não foi possível fazer o download, listo elas para o usuário, para que o mesmo selecione quais ele quer manifestar que tem ciência da nota.

4º Aqui entra a questão, veja que no ponto um eu usei no AcbrNFe o DistribuicaoNFe, agora em seguida irei usar "N" vezes o EnviaEvento. Sendo que eu monto um malote de 20 eventos para enviar. Não sei o porque que agora noo trunk2 está levantado o erro de assinatura.

Mais em fim... Deu certo, vou esperar talvez achemos o que mudou que ocorreu isto, caso tenha um tempo e queira emular, é só comandar esta sequencia DistribuicaoDFe em seguida tente Comandar EnvioEvento, não fiz teste mais acho se usar o mesmo Objeto "AcbrNFe" para fazer tudo isto vai dar este erro. vou montar um exemplo aqui para emular. Imaginei (Enviar, DistribuicaoDFe, CartaCorrecao "Evento", Cancelar"Evento") daria na mesma coisa que fiz ai, ou seja envio de eventos após uma DistribuicaoDFe, não estou tento este problema porque o projeto da DistribuicaoDFe é um outro .exe

Editado por Duarte
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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