Jump to content

dev botao

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


Go to solution Solved by BigWings,
  • Este tópico foi criado há 1105 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.