Ir para conteúdo
  • Cadastre-se

dev botao

Consultar MDF-e


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

Recommended Posts

Boa Tarde,   

  Estou tentando o código abaixo para consultar e gerar o xml processado novamente, mas esta dando acess violaton no método Consultar. Alguém pode ajudar, o erro também deu no exemplo do acbr. Aguardo

   ACBrMDFe1.Manifestos.Clear;
   ACBrMDFe1.Manifestos.LoadFromFile(OpenDialog1.FileName, True);
   ACBrMDFe1.Consultar;

35160358670969000150580010000000011000000018-mdfe.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Carlos,

O que XML que você anexou é o que você esta carregando pelo LoadFromFile?

Se sim, você notou que ele não esta assinado?

O método Consultar só funciona se o XML estiver assinado.

Altere a sua rotina para:

   ACBrMDFe1.Manifestos.Clear;
   ACBrMDFe1.Manifestos.LoadFromFile(OpenDialog1.FileName, False);

   ACBrMDFe1.Manifestos.Assinar;
   ACBrMDFe1.Consultar;

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

  • Consultores

Bom dia Carlos,

Se esta ocorrendo o erro de DigestValue isso significa que o XML assinado posteriormente para realizar a consulta, contem diferenças em relação ao primeiro que foi enviado para a SEFAZ.

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

Olá Amigos,  Amigo Italo, eu estou passando pela mesma dificuldade... mas no meu caso eu estou tentando automatizar retorno do status 204... 

Envio o MDFe, e aguardo... se tudo ocorrer bem apenas gravo protocolo, chave, etc.... 
caso der errado, e o motivo não for dados, então eu tenho enviar novamente o MDFe


dai na segunda tentativa de envio me retorna Duplicidade MDFe 204...

neste caso cai em uma parte do meu fonte onde eu tento obter a chave do MDFe pela propriedade "ACBrMDFe.Manifestos.Items[0].MDFe.procMDFe.chMDFe"

a partir desta chave, eu dou um Clear no componente, e carrego novamente com LoadFromFIle o arquivo que está  na pasta...

porém o componente segura nessa propriedade a ultima chave, não é igual a da primeira tentativa de envio, dai eu consulto essa chave que obtive após o 204 ai recebo essa mensagem de Digest value diferindo..

se eu fizer como o amigo sugeriu da certo... deixar o usuário ir na pasta e pegar o XML... ele vai se deparar com 2 XMLs lá o original da primeira tentativa, e o segundo XML o da tentativa que deu duplicidade... porém se ele pegar o XML correto ai sim consulta certinho... 

agora a minha dúvida é como obter a chave da primeira tentativa de envio, mesmo que o envio não foi bem sucedido... se eu tiver a chave original da primeira tentativa, obviamente encontrarei o XML original na pasta e com ele consultar....

Link para o comentário
Compartilhar em outros sites

Pessoal resolvi meu problema consultando pela chave... consigo o DigestVal, em seguida executo uma consulta pelo XML....

apenas quero contar a vocês um caso, não sei se é problema, ou é alguma falta minha...
mas sempre que vou consultar um MDFe pela primeira vez ao abrir o programa, a consulta funciona... 
mas na segunda vez que vou consultar outro MDFe no caso, me retorna duplicidade com diferença na chave de acesso...
mesmo dando Clear nos Manifestos... e também ACBrMDFe.WebServices.Consulta.Clear;
não tem resolvido, me parece que ele segura alguma coisa da consulta anterior, não tenho certeza.... mas percebi isso....
se eu simplesmente fechar a aplicação e abrir novamente e executar a mesma consulta que deu duplicidade com diferença na chave, dai a consulta passa... ou seja, parece ser algo temporário que ficou...

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Maiko,

Eu sempre aconselho a realizar uma consulta caso não obtenha o numero do protocolo como retorno após o envio.

Esse procedimento deve ser adotado para a NF-e, NFC-e, CT-e, MDF-e e etc.

Só devemos enviar novamente, caso ao consultar a SEFAZ informar que o respectivo documento não se encontra na sua base de dados.

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

  • Consultores

Maiko,

Se você gera um código aleatório para o documento a ser emitido, código este que vai compor a chave esta correto.

Mas procure salvar esse código aleatório juntamente com os demais dados do documento no banco de dados.

Por exemplo temos o nMDF que é o numero do MDF-e e o cMDF que é o código aleatório do MDF-e, ambos vão fazer parte da chave do MDF-e.

Pois bem na tabela que entre outras coisas temos o numero do MDF-e crie mais um campo para armazenar o código aleatório.

Isso deve ser feito antes de alimentar o componente com os dados, desta forma quando você for alimentar o componente para emitir o MDF-e, você vai atribuir a nMDF e a cMDF informações lidas do banco de dados.

Caso seja necessário gerar novamente o XML de um MDF-e a chave deste novo será igual ao do antigo.

Quando devemos gerar novamente o XML?

Por exemplo quando o digníssimo usuário fez o favor de deletar o mesmo.

  • Curtir 1
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á 2957 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.