Ir para conteúdo
  • Cadastre-se

dev botao

NFC-e como atualizar XML de NFCe emitida offline


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

Recommended Posts

Olá a todos, estou reemitindo uma NFCe que foi emitida offline e estava pendende, na hora que emito: ACBrNFce.configuracoes.arquivos.salvarevento   está falso  e ACBrNFce.configuracoes.arquivos.salvar   está true, quando emito a NFCe eu consigo pegar o XML dela, caso ela seja aprovada vem o xml certo, caso seja offline ela fica sem o protocolo da receita e sem a assinatura no RODAPé, quando faço reemissão de NFCe offline ou Consulta de NFCe não está atualizando o arquivo XML para que eu possa guardar na base de dados e auditar a NFCe mais tarde, alguém poderia me ajusar com os passos neste caso e me indicar meu erro!?      no caso eu faço a remissão da NFCe que estava offline, ela fica como NFCe autorizada, eu dou um edit na tabela do banco com o arquivo XML referente a NFCe e posto porém o arquivo XML físico em disco não está alterando fica sempre o mesmo arquivo de quando a NFCe foi emitida offline, no caso uso o comando  dm6.QNfeXmlEmitidosxml.LoadFromFile(dm7.acbrNfce.NotasFiscais.Items[0].NomeArq);  e está sempre o mesmo arquivo.

vou postar o trecho do meu codigo:

dm5.NfceCabecalhoOffLine.First;
    while not dm5.NfceCabecalhoOffLine.Eof do
    begin

      if TransmitirNfce(F_ConsultaNfce, dm5.NfceCabecalhoOffLineID_Empresa.AsInteger, dm5.NfceCabecalhoOffLineID.AsInteger, 9, SituacaoAposTransmissao) then
      begin

        try

          if not(ConsultaNfeXmlEmitidos('consulta',' WHERE (IdNfceCabecalho = "'+ dm5.NfceCabecalhoOffLineID.AsString +'") AND (TipoDfe = "Nfce") AND (id_empresa = "'+ F_menu_principal.FIdEmpresaNfe +'") ','','')) then
          begin

            if (Trim(dm7.acbrNfce.NotasFiscais.Items[0].NomeArq) <> '') then
            begin
              //GRAVA O ARQUIVO XML - OK
              ManipulaNfeXmlEmitidos('', ' LIMIT 0');
              dm6.QNfeXmlEmitidos.append;
              dm6.QNfeXmlEmitidosIdNfceCabecalho.Value := (dm5.NfceCabecalhoOffLineID.AsInteger);
              dm6.QNfeXmlEmitidosTipoDfe.Value         := ('Nfce');
              dm6.QNfeXmlEmitidosid_empresa.AsString   := (F_menu_principal.FIdEmpresaNfe);
              dm6.QNfeXmlEmitidosNomeArquivo.AsString  := ExtractFileName(dm7.acbrNfce.NotasFiscais.Items[0].NomeArq);
              dm6.QNfeXmlEmitidosCaminhoArquivo.Value  := dm7.acbrNfce.NotasFiscais.Items[0].NomeArq;
              dm6.QNfeXmlEmitidosxml.LoadFromFile(dm7.acbrNfce.NotasFiscais.Items[0].NomeArq);
              dm6.QNfeXmlEmitidos.Post;
            end;

 

p trecho do meu transmitir da NFCe até o envio:

   try
      dm7.acbrNfce.NotasFiscais.Clear;
      dm7.acbrNfce.WebServices.Enviar.Clear;
      dm7.acbrNfce.WebServices.Retorno.Clear;

      Result                           := False;
      StatRetorno                      := 0;
      dm7.FRetWSNfce                   := '';
      F_Menu_Principal.FTipoRequisicao := trEnviar;

      if F_Menu_Principal.FSituacaoSefaz = '107' then
      begin
        ConfigurarAcbrNfce(pForm, IntToStr(pIdEmpresa));

        if pTipoEmissao = 1 then
        begin
          PreencheAcbrComNfce(pIdEmpresa, pIdNfceCabecalho, True);

          try
            NotaEValida := True;
            dm7.acbrNfce.NotasFiscais.GerarNFe;

 

depois de configurar e preencher o componente: dm7.acbrNfce.Enviar(0,False, True);

 

Se puderem passar um passo a passo de como agir neste caso, não se se devo ativar eventos ( acredito que nao ), penso que somente estando como ACBrNFce.configuracoes.arquivos.salvar  já deveria atualizar  o XML apos o acbrNfce.NotasFiscais.GerarNFe; e dm7.acbrNfce.Enviar(0,False, True);

Bem, desde já fico grato por qualquer ajuda! obrigado!

 

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

4 minutos atrás, BigWings disse:

Veja se ACBrNFe1.Configuracoes.Geral.Salvar está True.

está true sim, eu sempre deixo ele true, em caso de CONSULTA o XML também é atualizado no componente e fisicamente (confirme a config do path e salvar = true) automatico ou devo fazer algum procedimento para isto?  

bem basicamente se tiver os passos de efetuar uma consulta na receita para a NFCe e ele atualizar o XML fisico em arquivo no hd automaticamente, quando ele não existe cria normal, quando estou retransmitindo offline ou consultando ( no caso consulto porque tranmisti a offline, ela gerou uma nfce emitida mas ai como não veio o protocolo eu consulto na receita para ver se atualiza o XML fisico e não estou conseguindo isto )

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

achei o meu problema e erro também, como a NFCe é emitida offline ele gera uma CHAVE2 esta chave 2 mesmo que envie a NFCe que estava online e deixe ela autorizada  a chave 2 continua sendo a padrao entao quando consulto com a chave1 ele sempre me retorna o XML sem assinatura da receita porque logicamente não está lá, um erro bobo da minh aparte... fiz este esquema para pegar a chave2 offline a pouco tempo e nas consultas nao estou incluindo por ela quando o tipo de envio é 9, falha minha acredito que agora deve retornar o XML vou fazer mais alguns testes aqui para ver e retorno.

Link para o comentário
Compartilhar em outros sites

21 minutos atrás, AlexBecker disse:

achei o meu problema e erro também, como a NFCe é emitida offline ele gera uma CHAVE2 esta chave 2 mesmo que envie a NFCe que estava online e deixe ela autorizada  a chave 2 continua sendo a padrao entao quando consulto com a chave1 ele sempre me retorna o XML sem assinatura da receita porque logicamente não está lá, um erro bobo da minh aparte... fiz este esquema para pegar a chave2 offline a pouco tempo e nas consultas nao estou incluindo por ela quando o tipo de envio é 9, falha minha acredito que agora deve retornar o XML vou fazer mais alguns testes aqui para ver e retorno.

já tinha feito a atualizacao sim para busca pela chave 2, estou consultando a NFCe com a chave 2 corretamente sim,  a chave é: 41200725295518000120650030000414571516703447  através do código: 
 

        dm7.acbrNfce.NotasFiscais.GerarNFe;

        try
          F_Menu_Principal.FTipoRequisicao           := trConsulta;
          dm7.acbrNfce.WebServices.Consulta.NFeChave := dm5.LNfceCabecalhoCHAVE_ACESSO2.AsString;
          dm7.acbrNfce.WebServices.Consulta.Executar;

          StatRetorno := dm7.acbrNfce.WebServices.Consulta.cStat;
 

porém nos XMLs gerados pelo ACBR na pasta só encontro: 

image.png.83e02835a1895d3ddb8e81f389398bbb.png
ou seja, não encontro o arquivo em disco referente a NFe quando faço a consulta na receita pela chave de acesso ele encontra na receita a NFCe normalmente, faço uma consulta na receita pelo ACBR porém o mesmo não salva a NFCe no path configurado c:\XML, então novamente a pergunta... quais os passos para consultar uma NFCe na receita com uma chave de acesso ( a consulta já está acima ) e para depois desta consulta GERAR o XML referente a NFCe ( ele fica com extensão NF-e.xml aqui no final do acbr ).

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

  • Moderadores

Não deve existir duas chaves pra uma mesma nota.

Se está gerando chave diferente é porque você está alterando algo na nota e gerando novamente o XML.

Por exemplo o tpEmis da nota, alterando de normal para offline você terá uma chave e um XML diferentes, um vai ser protocolado na consulta e o outro não.

Você deve sempre armazenar o XML gerado pelo ACBr antes do envio, e carregar ele com ACBrNFe1.NotasFiscais.LoadFromFile e após isso chamar o método Consultar, assim o arquivo vai ser atualizado com o protocolo, se houver.

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, BigWings disse:

Não deve existir duas chaves pra uma mesma nota.

Se está gerando chave diferente é porque você está alterando algo na nota e gerando novamente o XML.

Por exemplo o tpEmis da nota, alterando de normal para offline você terá uma chave e um XML diferentes, um vai ser protocolado na consulta e o outro não.

Você deve sempre armazenar o XML gerado pelo ACBr antes do envio, e carregar ele com ACBrNFe1.NotasFiscais.LoadFromFile e após isso chamar o método Consultar, assim o arquivo vai ser atualizado com o protocolo, se houver.

a nota ficou offline,  eu tenho um procedimento no sistema para identificar isto ai emito a NFCe que estava offline, aqui o sistema gera a chave online e offline como chave2, quando o tipo de envio é 9 que é offline eu pego a chave2 que seria a chave offline e gravo na chave1 então não existem 2 notas é somente 1, eu monto a NFCe com os mesmos dados e mando consultar ( usando a chave2 que neste ponto já virou chave 1)  ele retorna como na imagem mostrada acima os dados da consulta,  ele acha a nota, porem não traz o XML.

 

Se eu consultar na receita por CHAVE o ACBRNFCE vai gerar um NOVO XML da NFCe tal como é para a NFe ou não?

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

14 horas atrás, BigWings disse:

A consulta não retorna o XML completo, retorna apenas o protocolo.

Por isso precisa já ter o XML gerado, assinado e validado carregado no componente pra que o arquivo XML seja atualizado.

sim, eu a um tempo atrás ( muito tempooo ) fiz para a danfe imprimir sem ter o XML, então preencho o ACBR novamente com os dados da nota ele gera a nota sem o protocolo, gero o XML, consulto a NOTA pela chave, pego o protocolo e incluo nela, já tinha isto pronto aqui e estou testando já novamente em outas partes assim que tiver tudo certo posto aqui, muito obrigado pela ajuda por enquanto! 

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

  • Este tópico foi criado há 1318 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
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.