Ir para conteúdo
  • Cadastre-se

dev botao

Gravar O Xml Do Sefaz No Consultar Por Chave De Acesso


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

Recommended Posts

Postado

Estou implementando a NFCe com o ACBR, e antes de enviar o XML para faturar ou cancelar, eu uso o recurso de consultar NFe/NFCe por chave de acesso para ver se a mesma já não está faturada ou cancelada no Sefaz, essa consulta me devolve o cstat correto (100-autorizada ou 101-cancelamento homologado).

O que eu não consegui fazer foi depois desse retorno, gravar o XML de retorno (o mesmo gerado no enviar ou no evento de cancelamento),

Qual seria a propriedade do webservice consultar que eu devo usar para ter acesso ao XML completo da NFCe que já está no SEFAZ e salva-lo?

Ex: ACBrNFe.WebServices.Consulta.????.XML;

  • Consultores
Postado

Boa tarde Anderson,

 

Desculpa não entendi o seu problema.

 

Antes de enviar uma nova nota na SEFAZ, primeiro você realiza uma consulta?

 

Se sim, cuidado esse método esta errado e a empresa que utiliza a sua aplicação poderá ser penalizada por consumo indevido.

 

A sua aplicação que tem controlar se a nota já foi enviada ou não, se a mesma já esta autorizada ou não e se foi cancelada ou não.

 

Quanto ao XML completo da nota, se você atribuir o valor True a propriedade Salvar ele será salvo automaticamente em disco.

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

Postado

É mais ou menos isso Italo, imagine uma situação em que o lote não foi processado ou o sistema foi fechado no meio da validação, então no meu sistema a NFe está com um status provisório de pendente. Então quando o cliente solicita o comando para faturar de novo a nota, primeiramente eu faço essa consulta no sefaz e estando ela faturada, eu mudo a situação dela no sistema, sem enviar novamente ao sefaz, apenas validando o retorno dessa consulta.

 

O problema é que eu não consegui pegar o XML completo com os dados da NF, a assinatura e o procNFe em algum retorno do Web service de consulta, eu estou carregando o XML da NF que montei anteriormente e fazendo a consulta, depois eu salvo o XML com o comando FACBrNFe.NotasFiscais.Items[0].XML, dessa forma ele adiciona o proc no meu XML original, mas fica sem os dados da assinatura.

  • Consultores
Postado

Boa noite Anderson,

 

A minha aplicação funciona da seguinte forma:

 

Quando o usuário seleciona as notas a serem enviadas para SEFAZ e clica no botão [Emitir] o componente recebe os dados lidos do banco de dados e o comando Enviar é executado.

 

Lembre-se que o comando Enviar, se encarrega de gerar o XML, assinar, validar salvar em disco, enviar para a SEFAZ, aguardar o retorno, caso seja autorizado, o protocolo de autorização é acrescentando no XML tornando-o um documento válido juridicamente.

 

Caso o XML não receba o protocolo, por algum motivo, a nota recebe o status de enviado, mas não autorizado.

 

Neste caso o usuário pode acessar uma lista de notas enviadas e não protocoladas, neste caso basta selecionar a nota desejada e clicar no botão [Consultar].

 

O XML da nota selecionada será carregado com o LoadFromFile, o XML já esta assinado e foi validado antes do envio.

Em seguida o comando Consultar do componente é executado, caso o retorno seja Autorizado o XML é atualizado com o protocolo de autorização.

Por fim o DANFE é impresso.

 

Existe uma propriedade chamada AtualizarXMLCancelado (se não me falha a memória) onde atribuo o valor True, apesar da nota não estar cancelada, mas deixo essa propriedade 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

Postado

Olá Italo.

 

     Hoje pela manhâ um de meus clientes renomeou a pasta onde o sistema salva os xmls das nfes, por este motivo não conseguia imprimir o danfe, imaginando que havia ocorrido um erro ao salvar o xml na pasta, pedi ao cliente que consultasse a nfe no sefaz para que o xml fosse gerado, apos a consulta o arquivo nao foi gerado, esta função sempre funcionou no meu sistema.

     Depois de alguns testes percebi que a configuração do ACBrNFe mudou, antes bastava setar a propriedade ACBrNFe1.Configuracoes.Arquivos.Salvar para True e pronto, os arquivos eram salvos, agora pra funcionar tenho que setar tbm a propriedade ACBrNFe1.Configuracoes.Geral.Salvar  para True, ao fazer isso o sistema passa a salvar outros arquivos xmls que não tenho necessidade de armazenar, gostaria de saber se tem como salvar o xml pela consulta somente setando  ACBrNFe1.Configuracoes.Arquivos.Salvar para True como era antes?

 

Obrigado

  • Consultores
  • Solution
Postado

Boa tarde Emerson,

 

A ideia agora é se o salvar do Geral estiver com o valor true será salvo os arquivos de envio e de retorno da SEFAZ.

 

Por outro lado o salvar do Arquivos se estiver com o valor true será salvo os XMLs referentes a documentos e resultados de processamentos.

 

É por isso que o arquivo de retorno da consulta só será salvo se o Salvar do Geral estiver 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

Postado

Boa tarde Italo, na verdade eu já faço da forma que você mencionou, na hora de consultar eu carrego o XML da NF que eu gerei anteriormente, o detalhe é que eu controlo a gravação do XML, não deixo para o componente, eu estava gravando ele sem a assinatura que é feita no método Enviar, então fiz a chamada do método Assinar antes da gravação do XML, ai depois disso eu tenho o XML com a assinatura, faço a consulta que adiciona o procNFe no XML, gravando ao final o XML com todas as informações.

  • 10 meses depois ...
Postado (editado)

Boa tarde

 

tenho um situação parecido com a deste tópico, minha necessidade no entanto é pegar o conteúdo completo do XML após a consulta, pois o sistema não grava o XML em disco, o XML é gravado somente no banco, eu gostaria de atualizar esse XML do banco sem a necessidade de ter que gravá-lo em disco após uma consulta

tentei desta forma:

tblNF.FieldByName('arquivonfe').AsString := ACBrNFe.WebServices.Consulta.protNFe.XML_NFe;

 

mas essa propriedade não retorna nada na consulta da nota fiscal

 

tem alguma outra forma, essa propriedade deveria ser vazia mesmo?

 

Obs.: Trunck2

Editado por Juliano Do Amaral Chaves
Postado (editado)

Boa tarde Italo

 

esqueci de mencionar que a consulta é feita pela chavenfe, ou seja, eu não carrego o XML para fazer a consulta, uso somente a chave da nfe. Vou fazer o teste

 

...

 

fiz o teste e as propriedades que você me sugeriu retornaram nulos, acredito que é porque a consulta é feita pela chavenfe, quanto a propriedade 

ACBrNFe.WebServices.Consulta.protNFe.XML_NFe

para que serve?

Editado por Juliano Do Amaral Chaves
  • Consultores
Postado

Juliano,

Se você faz a consulta somente pela chave o que temos como resposta é o resultado da consulta.

Por outro lado se você carregar o componente com todos os dados da NF-e que deseja consultar, você terá nas propriedades que mencionei o XML completo, ou seja, assinado e protocolado.

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

  • 10 meses depois ...
  • Membros Pro
Postado
Em 02/02/2015 at 21:06, Italo Jurisato Junior disse:

Boa noite Anderson,

 

A minha aplicação funciona da seguinte forma:

 

Quando o usuário seleciona as notas a serem enviadas para SEFAZ e clica no botão [Emitir] o componente recebe os dados lidos do banco de dados e o comando Enviar é executado.

 

Lembre-se que o comando Enviar, se encarrega de gerar o XML, assinar, validar salvar em disco, enviar para a SEFAZ, aguardar o retorno, caso seja autorizado, o protocolo de autorização é acrescentando no XML tornando-o um documento válido juridicamente.

 

Caso o XML não receba o protocolo, por algum motivo, a nota recebe o status de enviado, mas não autorizado.

 

Neste caso o usuário pode acessar uma lista de notas enviadas e não protocoladas, neste caso basta selecionar a nota desejada e clicar no botão [Consultar].

 

O XML da nota selecionada será carregado com o LoadFromFile, o XML já esta assinado e foi validado antes do envio.

Em seguida o comando Consultar do componente é executado, caso o retorno seja Autorizado o XML é atualizado com o protocolo de autorização.

Por fim o DANFE é impresso.

 

Existe uma propriedade chamada AtualizarXMLCancelado (se não me falha a memória) onde atribuo o valor True, apesar da nota não estar cancelada, mas deixo essa propriedade com o valor True.

Esse tópico é antigo, mas, olhando essa resposta, a minha aplicação funciona quase igual. Mas, quando eu executo o Consultar, me dá um erro "Digest Value do Documento não Confere". Tento consultar pela chave. E pela chave EXISTE a nota lá no portal (ambiente de homologação). Já revirei tudo aqui. Por isso cheguei nesse post. A única diferença que se mando protocolar e me retorna o erro de duplicidade, código 204, eu já faço a consulta. Dai aparece o erro que mencionei. O que gostaria é que como já está Protocolada a nota, dispensa o XML que estou gerando agora e puxa o XML que está lá na receita protocolado. Pronto! Obrigado pela atenção!

 

  • Consultores
Postado

Boa tarde,

Primeiramente não devemos trocar o protocolo de autorização pelo de cancelamento, caso a nota venha ser cancelada.

Na versão 6.0 do Manual da NF-e em nenhuma linha esta escrito que devemos fazer essa troca.

O arquivo *-nfe.xml para ter validade jurídica tem que estar assinado e com o protocolo de autorização.

Esse arquivo tanto o emitente quanto o destinatário da mercadoria tem que possuir e guarda-lo pelo período legal.

Caso a nota venha ser cancelada, teremos o arquivo *-procEventoNFe.xml.

Esse arquivo contem o pedido de cancelamento, mais a assinatura digital do emitente, mais o protocolo da SEFAZ que atesta que a nota foi cancelada.

O *-procEventoNFe.xml também deve ser enviado ao destinatário, primeiro para ele saber que a nota foi cancelada, segundo, ele também deve ser guardado por ambos pelo período legal.

Agora se ao carregar o XML da NF-e sem o protocolo de autorização e você tem o erro de DigestValue diferente ao termino da execução do Consultar, tente fazer desta forma:

LoadFromFile( xNomeXML, False); // False = Não gerar novamente o XML

Consultar;

  • 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

  • Membros Pro
Postado

Obrigado pela resposta!

" Primeiramente não devemos trocar o protocolo de autorização pelo de cancelamento, caso a nota venha ser cancelada. "

Sim. Concordo.

Num outro post que coloquei hoje pela manhã uma pessoa falou para eu não validar o digest.

Dai funcionou. Mas, perguntei se não era perigoso

Dai desativei isso. Fiz a consulta. Ativei novamente.

Olha o link do meu post hoje.

 

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