Jump to content

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png click.png click.png

Consulta de status do servidor - Sefaz RJ e MG


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

Recommended Posts

Olá, enfrentei um problema ao efetuar a consulta de status dos servidores da Sefaz para o estado de Minas Gerais (MG).

O contexto é o seguinte: Efetuei dois testes de consulta de status dos servidores esperando o retorno 107 (cStat), um voltado para o MG e o outro para RJ.

As URLs utilizadas foram as disponibilizadas no arquivo NFeServicos.ini, sendo para o MG a url https://nfe.fazenda.mg.gov.br/nfe2/services/NFeStatusServico4  e para o RJ a url www.fazenda.rj.gov.br/nfce/consulta.

Percebi que ao efetuar os testes com o estado de MG, havia retorno da Sefaz porém os valores não estavam sendo setados, e para o RJ sim.

Para ficar mais claro o "setado", estou me referindo a unit pcnRetConsStatServ, para a função LerXml e para a função rCampo contida na unit pcnLeitor:

function TRetConsStatServ.LerXml: Boolean;
var
  ok: Boolean;
begin
  Result := False;
  try
    Leitor.Grupo := Leitor.Arquivo;

    if leitor.rExtrai(1, 'retConsStatServ' + FtagGrupoMsg) <> '' then
    begin
      Fversao    := Leitor.rAtributo('versao', 'retConsStatServ' + FtagGrupoMsg);
      FtpAmb     := StrToTpAmb(ok, Leitor.rCampo(tcStr, 'tpAmb'));
      FverAplic  := Leitor.rCampo(tcStr, 'verAplic');
      FcStat     := Leitor.rCampo(tcInt, 'cStat');
      FxMotivo   := Leitor.rCampo(tcStr, 'xMotivo');
      FcUF       := Leitor.rCampo(tcInt, 'cUF');
      FdhRecbto  := Leitor.rCampo(tcDatHor, 'dhRecbto');
      FtMed      := Leitor.rCampo(tcInt, 'tMed');
      FdhRetorno := Leitor.rCampo(tcDatHor, 'dhRetorno');
      FxObs      := Leitor.rCampo(tcStr, 'xObs');
      
      Result := True;
    end;
  except
    Result := False;
  end;
end;

A estrutura de retorno é a seguinte:

MG

<retConsStatServ
	xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">
	<tpAmb
		xmlns="http://www.portalfiscal.inf.br/nfe">1
	</tpAmb>
	<verAplic
		xmlns="http://www.portalfiscal.inf.br/nfe">W-1.4.23
	</verAplic>
	<cStat
		xmlns="http://www.portalfiscal.inf.br/nfe">107
	</cStat>
	<xMotivo
		xmlns="http://www.portalfiscal.inf.br/nfe">Serviço em Operação
	</xMotivo>
	<cUF
		xmlns="http://www.portalfiscal.inf.br/nfe">31
	</cUF>
	<dhRecbto
		xmlns="http://www.portalfiscal.inf.br/nfe">2019-10-02T12:11:19-03:00
	</dhRecbto>
	<tMed
		xmlns="http://www.portalfiscal.inf.br/nfe">0
	</tMed>
	<dhRetorno
		xmlns="http://www.portalfiscal.inf.br/nfe">2019-10-02T12:11:19-03:00
	</dhRetorno>
</retConsStatServ>

RJ

<retConsStatServ versao="4.00"
	xmlns="http://www.portalfiscal.inf.br/nfe">
	<tpAmb>2</tpAmb>
	<verAplic>SVRSnfce201805211008</verAplic>
	<cStat>107</cStat>
	<xMotivo>Servico em Operacao</xMotivo>
	<cUF>33</cUF>
	<dhRecbto>2019-10-02T12:06:49-03:00</dhRecbto>
	<tMed>1</tMed>
</retConsStatServ>

O problema é devido a diferente estrutura de retorno para cada estado, pois a função rCampo espera que a tag inicial, tag de abertura seja a tag padrão (<tpAmb>, <verAplic>, <cStat>) sem nada além. Devido a isso, quando é feito a operação para o retorno de MG, os valores das tags não são encontrados, pois além da tag inicial também há a tag/url xmlns="http://www.portalfiscal.inf.br/nfe". 

Para resolver o problema precisei comentar o sinal de maior ">" para que não ficasse "limitado" somente as tags padrões.

Antes:

inicio := pos('<' + Tag + '>', UpperCase(FGrupo));

Depois

inicio := pos('<' + Tag {+ '>'}, UpperCase(FGrupo));

A partir dai conseguir prosseguir.

Essa seria a melhor abordagem a ser tomada? Seria realmente a correção definitiva ?

Agradeço e espero que fique claro.

Obrigado.

Link to comment
Share on other sites

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