Jump to content

dev botao

Pegar Status da NFCe consultada


Go to solution Solved by Élviro Cavalcanti,
  • Este tópico foi criado há 1115 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde, estou tentando pegar o cStat da NFCe consultada e acredito que esteja usando errado a forma de obter essa informação, estou precisando porque as vezes envio a NFCe mas não recebo o retorno da sefaz na maioria das vezes é porque a internet está lenta: faço da seguinte forma:

            try
                    ACBrNFe1.Enviar(1, false);
            except
            on E:Exception do
            begin

                     if (ACBrNFe1.WebServices.Retorno.cStat = 204) or (ACBrNFe1.WebServices.Retorno.cStat = 539)

                     begin

                            ACBrNFe2.NotasFiscais.LoadFromString(TADOStoredProc(srcNFXML.DataSet).FieldByName('ArquivoXML').AsString);
                            ACBrNFe2.Consultar;

                            if ACBrNFe2.WebServices.Consulta.cStat = 100 then  //Aqui só vem 0 

                            begin
                                TADOStoredProc(srcNFXML.DataSet).Edit;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('ArquivoXML').Value          := ACBrNFe2.NotasFiscais[0].XMLAssinado;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('StatusNFe').Value           := ACBrNFe2.NotasFiscais.Items[0].NFe.procNFe.cStat;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('chaveAcesso').AsString      := ACBrNFe2.NotasFiscais.Items[0].NFe.infNFe.ID;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('numeroProtocolo').AsString  := ACBrNFe2.NotasFiscais.Items[0].NFe.procNFe.nProt;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('dataAutorizacao').Value     := ACBrNFe2.NotasFiscais.Items[0].NFe.Ide.dEmi;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('Valor').Value               := ACBrNFe2.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF;
                                TADOStoredProc(srcNFXML.DataSet).Post;
                            end;

                     end

       já tentei salvar o XML ACBrNFe2.NotasFiscais[0].XMLAssinado mas ele não trás o XML consultado só me dá informações do XML em contingência

       podem me dá essa dica, obrigado....

Link to comment
Share on other sites

  • 2 weeks later...
  • Solution
Em 15/09/2021 at 16:37, ssouza_fiscal disse:

Boa tarde, estou tentando pegar o cStat da NFCe consultada e acredito que esteja usando errado a forma de obter essa informação, estou precisando porque as vezes envio a NFCe mas não recebo o retorno da sefaz na maioria das vezes é porque a internet está lenta: faço da seguinte forma:

            try
                    ACBrNFe1.Enviar(1, false);
            except
            on E:Exception do
            begin

                     if (ACBrNFe1.WebServices.Retorno.cStat = 204) or (ACBrNFe1.WebServices.Retorno.cStat = 539)

                     begin

                            ACBrNFe2.NotasFiscais.LoadFromString(TADOStoredProc(srcNFXML.DataSet).FieldByName('ArquivoXML').AsString);
                            ACBrNFe2.Consultar;

                            if ACBrNFe2.WebServices.Consulta.cStat = 100 then  //Aqui só vem 0 

                            begin
                                TADOStoredProc(srcNFXML.DataSet).Edit;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('ArquivoXML').Value          := ACBrNFe2.NotasFiscais[0].XMLAssinado;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('StatusNFe').Value           := ACBrNFe2.NotasFiscais.Items[0].NFe.procNFe.cStat;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('chaveAcesso').AsString      := ACBrNFe2.NotasFiscais.Items[0].NFe.infNFe.ID;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('numeroProtocolo').AsString  := ACBrNFe2.NotasFiscais.Items[0].NFe.procNFe.nProt;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('dataAutorizacao').Value     := ACBrNFe2.NotasFiscais.Items[0].NFe.Ide.dEmi;
                                TADOStoredProc(srcNFXML.DataSet).FieldByName('Valor').Value               := ACBrNFe2.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF;
                                TADOStoredProc(srcNFXML.DataSet).Post;
                            end;

                     end

       já tentei salvar o XML ACBrNFe2.NotasFiscais[0].XMLAssinado mas ele não trás o XML consultado só me dá informações do XML em contingência

       podem me dá essa dica, obrigado....

Bom dia, sempre consulto dessa forma

 

          FrmPrincipal.ACBrNFe1.NotasFiscais.Clear;
          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'));
 

Link to comment
Share on other sites

4 horas atrás, ssouza_fiscal disse:

Obrigado deu certo agora só estou batendo cabeça para pegar o XML assinado que está na sefaz....

 

Segue a forma que faço pra pegar o XML original, essa rotina fica logo após a rotina de envio

 

       GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString);  //Rotina para gerar o xml
       ACBrNFe1.Enviar (1,False,False,False);  //Rotina para envio do arquivo para a sefaz

       //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
 

Link to comment
Share on other sites

Bom dia Élviro, primeiro obrigado pela ajuda, estudei o seu código mas não vi ainda em que momento vc substitui o XML da sefaz pelo XML em contingência que está localmente em seu computador.. 

nessa pasta XMLOriginal você guarda o XML que enviou mas não recebeu retorno da sefaz correto? o que eu gostaria era justamente fazer essa mudança, descartar o meu XML que encontra-se em contingência pelo o autorizado pela sefaz....

obrigado mais uma vez

Link to comment
Share on other sites

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