Ir para conteúdo
  • Cadastre-se

dev botao

Pegar Status da NFCe consultada


Ver Solução Respondido por Élviro Cavalcanti,
  • Este tópico foi criado há 913 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 para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...