Ir para conteúdo
  • Cadastre-se

dev botao

Descomprimir XML retornado pela Sefaz.


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

Recommended Posts

Olá a todos. Estou desenvolvendo uma solução para monitorar a emissão de CTes e já consigo solicitar e fazer o retorno dos dados para a Sefaz. O problema é que, segundo o padrão da Sefaz, o arquivo de resposta com as CTes que necessito vem comprimido no padrão gzip. Qual é a função do ACBr que posso usar para descomprimir o arquivo? Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Gustavo,

Até onde sei, o serviço que retorna os XML dos CT-e compactados é o DistribuicaoDFe.

Mas o componente se encarrega de realizar automaticamente a descompactação e disponibilizar o conteúdo em uma propriedade chamada XML e se o componente estiver configurado para salvar em disco, o XML do CT-e descompactado será salvo.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Solution
var
  LDocZip: TdocZipCollectionItem;
begin
{...}
for I := 0 to Pred(ACBrCTe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count) do
begin
  LDocZip := ACBrCTe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[I];
  XML := LDocZip.XML;
  if (LDocZip.schema = schprocCTe) then
  begin
    ChaveAcesso := LDocZip.resCTe.chCTe;
    CnpjEmitente := LDocZip.resCTe.CNPJCPF;
    NomeEmitente := LDocZip.resCTe.xNome;
    ValorDocumento := LDocZip.resCTe.vNF;
    {...}
  end;
  if (LDocZip.schema = schprocEventoCTe) then
  begin { evento como cancelamento }
    ChaveAcesso := LDocZip.procEvento.chCTe;
    CnpjEmitente := LDocZip.procEvento.CNPJ;
    DataEvento := LDocZip.procEvento.dhEvento;
    Descricao := TpEventoToStr(LDocZip.procEvento.tpEvento) + ' - ' + LDocZip.procEvento.detEvento.descEvento;
    {...}
  end;
end;

 

Componente já faz tudo, segue um exemplo de como acessar os dados após a consulta.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

23 horas atrás, everson.turossi disse:

var
  LDocZip: TdocZipCollectionItem;
begin
{...}
for I := 0 to Pred(ACBrCTe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count) do
begin
  LDocZip := ACBrCTe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[I];
  XML := LDocZip.XML;
  if (LDocZip.schema = schprocCTe) then
  begin
    ChaveAcesso := LDocZip.resCTe.chCTe;
    CnpjEmitente := LDocZip.resCTe.CNPJCPF;
    NomeEmitente := LDocZip.resCTe.xNome;
    ValorDocumento := LDocZip.resCTe.vNF;
    {...}
  end;
  if (LDocZip.schema = schprocEventoCTe) then
  begin { evento como cancelamento }
    ChaveAcesso := LDocZip.procEvento.chCTe;
    CnpjEmitente := LDocZip.procEvento.CNPJ;
    DataEvento := LDocZip.procEvento.dhEvento;
    Descricao := TpEventoToStr(LDocZip.procEvento.tpEvento) + ' - ' + LDocZip.procEvento.detEvento.descEvento;
    {...}
  end;
end;

 

Componente já faz tudo, segue um exemplo de como acessar os dados após a consulta.

Boa tarde Everson! Consegui implementar seguindo o moledo que vc exemplificou acima. Resolvi o problema e implementei a classe que estava faltando no projeto. Obrigado pela dica. 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1974 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.