Ir para conteúdo
  • Cadastre-se

dev botao

NFCe : tag dhEmi com valor diferente do que esta na sefaz. Como atualizar o xml ?


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

Recommended Posts

Boa  tarde a todos. 

Estamos com uma NFCe autorizada na sefaz-mg.  A data de emissao  la no portal do estado  esta  01/08/2021 e autorização tambem 01/08/2021. 

Quando mando consultar na sefaz (atraves do  acbrmonitorplus 1.4.0.32) da o retorno de NFce  autorizado porem o  XML está  com a data de emissao  

04/08/2021. 

A tag    <dhEmi>   do XML autorizado  teria que ser  01/08/2021  e nao 04/08/2021.  

Alguem teria  alguma  sugestao de como  corrigir isso ? 

Obrigado a todos...

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite, carregue o xml com as mesmas informações e consulte.

Possivelmente você está gerando um documento novo.

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
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 !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Link para o comentário
Compartilhar em outros sites

Entao,  

eu tenho  o xml  autorizado (porem com a  <dhEmi>  04-08-2021).

Eu mando  consultar  na  sefaz  justamente  na intenção  de  me devolver  um xml corrigido, com a <dhEmi> 01-08-2021,  porem permanece com 

<dhEmi>  04-08-2021. 

Precisaria  que  o XML  fosse  atualizado completamente conforme  xml que esta  na sefaz-mg.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
11 horas atrás, Lázaro Santos disse:

eu tenho  o xml  autorizado (porem com a  <dhEmi>  04-08-2021).

Se você tem o XML autorizado porque precisa corrigir?

11 horas atrás, Lázaro Santos disse:

Eu mando  consultar  na  sefaz  justamente  na intenção  de  me devolver  um xml corrigido, com a <dhEmi> 01-08-2021,  porem permanece com <dhEmi>  04-08-2021. 

O método de consulta não devolve o XML da nota, apenas a parte do protocolo. No protocolo tem o digestValue que é comparado com o digestValue da assinatura da nota pra validação.

11 horas atrás, Lázaro Santos disse:

Precisaria  que  o XML  fosse  atualizado completamente conforme  xml que esta  na sefaz-mg.

Você tem que gerar novamente o XML com exatamente os mesmos dados que enviou pra SEFAZ, assinar, e executar o método de consulta. O componente vai montar o XML completo juntando o que você gerou com o protocolo retornado pela SEFAZ.

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, BigWings disse:

Se você tem o XML autorizado porque precisa corrigir?

O método de consulta não devolve o XML da nota, apenas a parte do protocolo. No protocolo tem o digestValue que é comparado com o digestValue da assinatura da nota pra validação.

Você tem que gerar novamente o XML com exatamente os mesmos dados que enviou pra SEFAZ, assinar, e executar o método de consulta. O componente vai montar o XML completo juntando o que você gerou com o protocolo retornado pela SEFAZ.

A  intenção  de  corrigir  o XML  autorizado  é justamente pelo  fato dele  esta  autorizado  mas  a data  de  emissao  nao  esta  certa. 

Mas  a  explicação que vc  me  passou  no  final  vai me ajudar. Eu achava  que  ao consultar  na  sefaz  ele retorna  o xml  inteiro  , mas  pelo  que entendi  ele nao faz isso,  o que  faz  é  acressentar  o protocolo  no  xml usado para consulta.  

Vou tentar  remonta-lo,  colocando a  data de emissao que prentendo e  usar  esse  mesmo xml  para realizar a consulta.  

Obrigado. 

 

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Lázaro Santos disse:

A  intenção  de  corrigir  o XML  autorizado  é justamente pelo  fato dele  esta  autorizado  mas  a data  de  emissao  nao  esta  certa. 

Mas  a  explicação que vc  me  passou  no  final  vai me ajudar. Eu achava  que  ao consultar  na  sefaz  ele retorna  o xml  inteiro  , mas  pelo  que entendi  ele nao faz isso,  o que  faz  é  acressentar  o protocolo  no  xml usado para consulta.  

Vou tentar  remonta-lo,  colocando a  data de emissao que prentendo e  usar  esse  mesmo xml  para realizar a consulta.  

Obrigado. 

 

 

Boa tarde, eu estava com um problema semelhante, conseguia gerar o XML com o campo de hora usando o now, mas quando usava a hora do meu sistema, sempre acusava que estava atrasado, continuei usando o now como parâmetro de hora para envio, só que pego o xml original (sem o protocolo de retorno)e coloco numa pasta renomeado com o número do cupom, dessa forma eu quando vou consultar e baixar o xml com o protocolo de autorização, eu apenas carrego no componente o xml que foi gerado originalmente, segue abaixo o que fiz, espero que ajude! 

 

Aqui eu gero o xml e envio para a sefaz

 

       GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString);
       ACBrNFe1.Enviar (1,False,False,False);

       //Rotina para copiar o xml original para a pasta de xml originais
       if not DirectoryExists(edtPathLogs.Text + '\XMLOriginal') then
       ForceDirectories(edtPathLogs.Text + '\XMLOriginal');

       VsOrigem := edtPathLogs.Text + '\1-env-lot.xml';

       if FileExists(edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml') then
       begin
         Application.MessageBox('Já existe um arquivo XML que foi gerado anteriormente na pasta \XMLOrigimal, verifique!',
           'Controller', MB_OK + MB_ICONINFORMATION);
       end
       else
       begin
         if FileExists(edtPathLogs.Text + '\1-env-lot.xml') then
         Begin
           VsDestino := edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml';
           CopyFile(Pchar(VsOrigem), PChar(VsDestino), False);

           if FileExists(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml') then
           RenameFile(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml', edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml');
         End;
       end;
       //Rotina para copiar o xml original para a pasta de xml originais
 

 

 

e aqui é onde faço a consulta caso não tenha o xml na pasta ou por algum acaso o cliente não tenha mais esse xml

 

        //Consulta se o xml está na pasta
        if FileExists(DM.IBVendaPDVCAMINHOXML.AsString) then
        Begin
          Label16.Caption := 'Localizado aquivo XML na pasta ';
          FrmSituacaoNFCe.Refresh;
          Sleep(1000);

          MemoResp.Lines.LoadFromFile(DM.IBVendaPDVCAMINHOXML.AsString);
          ScrollBox3.Visible := true;

          DM.IBVendaPDV.Edit;
          DM.IBVendaPDVPROTOCOLONFCE.AsString := obterNroResultado(MemoResp.text, '<nProt','</nProt');
          DM.IBVendaPDVENVIADO.AsString := 'S';
          DM.IBVendaPDV.Post;

          DM.IBTransaction1.CommitRetaining;
        End
        else
        begin
          Application.MessageBox('XML da NFCe não localizada na pasta, o sistema vai gerar um novo arquivo XML!',
            'Controller', MB_OK + MB_ICONINFORMATION);

          Label16.Caption := 'Aguarde, o sistema vai gerar o aquivo XML ...';
          FrmSituacaoNFCe.Refresh;
          Sleep(1000);


          FrmPrincipal.ACBrNFe1.NotasFiscais.Clear;
          EdCodVendaEnvio.Text := DM.IBVendaPDVCODIGO.AsString;

          FrmPrincipal.ACBrNFe1.Consultar(DM.IBVendaPDVCHAVENFCE.AsString, False);
          FrmPrincipal.ACBrNFe1.WebServices.Consulta.Executar;

          MemoResp.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetWS;
          memoRespWS.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetornoWS;

          ShowMessage(obterNroResultado(MemoResp.text, 'xMotivo','</xMotivo'));
          Edit2.Text := obterNroResultado(MemoResp.text, 'xMotivo','</xMotivo');

          if Edit2.Text = 'Autorizado o uso da NF-e' then
          begin
            Label16.Caption := 'Autorizado o uso da NF-e';
            FrmSituacaoNFCe.Refresh;
            Sleep(500);

            //ShowMessage('Vai gerar a NFCe');
            DM.IBVendaPDV.Edit;
            DM.IBVendaPDVPROTOCOLONFCE.AsString := obterNroResultado(MemoResp.text, '<nProt','</nProt');
            DM.IBVendaPDVENVIADO.AsString := 'S';
            DM.IBVendaPDV.Post;

            EdCodVendaEnvio.Text := DM.IBVendaPDVCODIGO.AsString;
            //GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString);

            FrmPrincipal.ACBrNFe1.NotasFiscais.LoadFromFile(FrmPrincipal.edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml');
            FrmPrincipal.ACBrNFe1.Consultar();
          end
          else
          begin
            Application.MessageBox('Não foi possível gerar o novo XML!',
              'Controller', MB_OK + MB_ICONSTOP);

          end;

          Panel1.Visible := false;
          FrmSituacaoNFCe.Refresh;
        end;
 

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Élviro Cavalcanti disse:

Boa tarde, eu estava com um problema semelhante, conseguia gerar o XML com o campo de hora usando o now, mas quando usava a hora do meu sistema, sempre acusava que estava atrasado, continuei usando o now como parâmetro de hora para envio, só que pego o xml original (sem o protocolo de retorno)e coloco numa pasta renomeado com o número do cupom, dessa forma eu quando vou consultar e baixar o xml com o protocolo de autorização, eu apenas carrego no componente o xml que foi gerado originalmente, segue abaixo o que fiz, espero que ajude! 

 

Aqui eu gero o xml e envio para a sefaz

 

       GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString);
       ACBrNFe1.Enviar (1,False,False,False);

       //Rotina para copiar o xml original para a pasta de xml originais
       if not DirectoryExists(edtPathLogs.Text + '\XMLOriginal') then
       ForceDirectories(edtPathLogs.Text + '\XMLOriginal');

       VsOrigem := edtPathLogs.Text + '\1-env-lot.xml';

       if FileExists(edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml') then
       begin
         Application.MessageBox('Já existe um arquivo XML que foi gerado anteriormente na pasta \XMLOrigimal, verifique!',
           'Controller', MB_OK + MB_ICONINFORMATION);
       end
       else
       begin
         if FileExists(edtPathLogs.Text + '\1-env-lot.xml') then
         Begin
           VsDestino := edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml';
           CopyFile(Pchar(VsOrigem), PChar(VsDestino), False);

           if FileExists(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml') then
           RenameFile(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml', edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml');
         End;
       end;
       //Rotina para copiar o xml original para a pasta de xml originais
 

 

 

e aqui é onde faço a consulta caso não tenha o xml na pasta ou por algum acaso o cliente não tenha mais esse xml

 

        //Consulta se o xml está na pasta
        if FileExists(DM.IBVendaPDVCAMINHOXML.AsString) then
        Begin
          Label16.Caption := 'Localizado aquivo XML na pasta ';
          FrmSituacaoNFCe.Refresh;
          Sleep(1000);

          MemoResp.Lines.LoadFromFile(DM.IBVendaPDVCAMINHOXML.AsString);
          ScrollBox3.Visible := true;

          DM.IBVendaPDV.Edit;
          DM.IBVendaPDVPROTOCOLONFCE.AsString := obterNroResultado(MemoResp.text, '<nProt','</nProt');
          DM.IBVendaPDVENVIADO.AsString := 'S';
          DM.IBVendaPDV.Post;

          DM.IBTransaction1.CommitRetaining;
        End
        else
        begin
          Application.MessageBox('XML da NFCe não localizada na pasta, o sistema vai gerar um novo arquivo XML!',
            'Controller', MB_OK + MB_ICONINFORMATION);

          Label16.Caption := 'Aguarde, o sistema vai gerar o aquivo XML ...';
          FrmSituacaoNFCe.Refresh;
          Sleep(1000);


          FrmPrincipal.ACBrNFe1.NotasFiscais.Clear;
          EdCodVendaEnvio.Text := DM.IBVendaPDVCODIGO.AsString;

          FrmPrincipal.ACBrNFe1.Consultar(DM.IBVendaPDVCHAVENFCE.AsString, False);
          FrmPrincipal.ACBrNFe1.WebServices.Consulta.Executar;

          MemoResp.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetWS;
          memoRespWS.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetornoWS;

          ShowMessage(obterNroResultado(MemoResp.text, 'xMotivo','</xMotivo'));
          Edit2.Text := obterNroResultado(MemoResp.text, 'xMotivo','</xMotivo');

          if Edit2.Text = 'Autorizado o uso da NF-e' then
          begin
            Label16.Caption := 'Autorizado o uso da NF-e';
            FrmSituacaoNFCe.Refresh;
            Sleep(500);

            //ShowMessage('Vai gerar a NFCe');
            DM.IBVendaPDV.Edit;
            DM.IBVendaPDVPROTOCOLONFCE.AsString := obterNroResultado(MemoResp.text, '<nProt','</nProt');
            DM.IBVendaPDVENVIADO.AsString := 'S';
            DM.IBVendaPDV.Post;

            EdCodVendaEnvio.Text := DM.IBVendaPDVCODIGO.AsString;
            //GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString);

            FrmPrincipal.ACBrNFe1.NotasFiscais.LoadFromFile(FrmPrincipal.edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml');
            FrmPrincipal.ACBrNFe1.Consultar();
          end
          else
          begin
            Application.MessageBox('Não foi possível gerar o novo XML!',
              'Controller', MB_OK + MB_ICONSTOP);

          end;

          Panel1.Visible := false;
          FrmSituacaoNFCe.Refresh;
        end;
 

Valeu,  vou  estudar  o  seu código.. 

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
Em 25/09/2021 at 10:59, ssouza_fiscal disse:

Sei que no seu código deve está em algum lugar o XML assinado que está na sefaz, mas não consegui descobrir, como vc está fazendo para pegar essa informação?

Não tem como pegar o XML da NFCe da SEFAZ. Pelo menos não pelos webservices normais da NFe/NFCe.

Você deve ter gravado o XML gerado, assinado e validado que usou na emissão em contingência.

Carrega o XML no componente e executa o método de envio, ou o método de consulta se já tiver enviado anteriormente.

O componente vai pegar o retorno do método (o protocolo de autorização) e atualizar o seu XML com o protocolo, assim você tem o XML completo juridicamente válido.

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

bom dia, implementei a sua sugestão mas ainda não consegui pegar o XML completo, no meu caso a nota já se encontra na sefaz autorizada, e eu estou com a mesma informação sendo que em contingência, só reforçando, esse caso é aquele caso aonde não consigo receber o retorno da sefaz por problemas de lentidão.

No caso aonde a nota está em contingência mas não se encontra na sefaz, quando faço o envio dá tudo certo, mas na consulta só vem aquele xml resumido.... 

Link para o comentário
Compartilhar em outros sites

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