Ir para conteúdo
  • Cadastre-se

dev botao

Erro "Arquivo ZIP inválido" - Bloco X


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

Recommended Posts

Boa tarde,

Programo a maior parte do sistema em delphi 2010 e não utilizo o componente ACBr, mas peguei como base algumas rotinas do componente, que aliás estão bem organizadas. Porém, com relação ao Bloco X, ao comunicar com o webservice (seja de redução z ou estoque), sempre retorna "Arquivo ZIP inválido". O campo "pXmlZipado" ao enviar o xml, peguei como base no componente, unit ACBrBlocoX_WebServices.pas. Como uso mais delphi 2010, e ele não tem suporte nativo p/ zip, tentei de diversas formas, transformar o XML em zip (string) e depois converter p/ base64, igual ao fonte do acbr, e nada, sempre retorna erro no webservice.

Então resolvi testar no delphi XE5, copiando as rotinas ZipFile e EncodeBase64, mesmo assim retorna o erro "Arquivo ZIP inválido". Faço parte do grupo do google da sefaz SC, mas até o momento não consiga uma ajuda por lá também.

Alguém conseguiu enviar com sucesso?

Obs: o arquivo é validado com sucesso.

Editado por MTeste
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Bom dia,

Estou usando o TAbZipper no Delphi 7 e estou com o mesmo erro. 

Eu zipo o arquivo e depois passo o caminho para a variável AZip.  Segue fonte para melhor entendimento.

Obs: Sou novo no uso dos componentes. Desculpa qualquer erro besta.

function TEnviarBlocoX.GetXMLZipado: AnsiString;
var
  AZip: AnsiString;
begin
  if FXMLZipado = '' then
  begin
    if FXML <> '' then
    begin
      AZip := 'C:\EnviarEstoque.zip';
      if AZip = '' then
        raise Exception.Create('O seu compilador não tem suporte nativo a ZipFile.'+sLineBreak+
                               'Informe o XML já Zipado + Base64 em "XMLZipado"');

      FXMLZipado := EncodeBase64(AZip);
    end;
  end;

  Result := FXMLZipado;
end;

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

O que você pretende com essa linha?

 AZip := 'C:\EnviarEstoque.zip';

Você está atribuindo uma string pra variável AZip. Você não está carregando o arquivo.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Estou tentando enviar um arquivo (Bloco X - Estoque), porém, não estou conseguindo.

Passos seguidos:

- Gero o XML com os dados do estoque, conforme layout.

- Zipo o arquivo

- Converto para base64

Ao enviar o arquivo (loSoapClient.EnviarEstoque(pCnpjEstabelecimento, pDataReferencia, pXmlZipado), recebo o erro:

OLE IDispatch exception code 0 from Client: Client:Type conversion failure for element pXmlZipado  HRESULT=0x80020005: Tipo não correspondente.
 - Client:Unspecified client error. HRESULT=0x80020005: Tipo não correspondente.
 

Já enviei o próprio XML, sem converter para base64, no lugar de pXmlZipado, o erro persiste.

Já enviei o próprio XML zipado, sem converter para base64, o erro persiste.

Já enviei o próprio XML, convertido para base64, sem zipar, o erro persiste.

Alguém pode me ajudar a enxergar o que estou fazendo de errado?

Obrigado.

Link para o comentário
Compartilhar em outros sites

Mudei para zipmaster e estou usando uma função que achei em outro tópico. Porem o problema continua. Segue fonte.

 

function ZipFile(const DadosXML: AnsiString; const NomeArquivo: String): AnsiString;
var
  Z     : TZipMaster;
  SSIn  : TStringList;
  sFile : string;
  ssOut : TFileStream;

  function EncodeBase64(Arquivo: TFileStream): String;
  Var
  Encoder64 : TIDEncoderMime;
  lstFile: TStringList;
  Begin
    try
      try
        Encoder64 := TIDEncoderMime.Create (Nil);
        lstFile := TStringList.Create;
        lstFile.LoadFromStream(Arquivo);
        Result := Encoder64.Encode(lstFile.Text);
      finally
        Encoder64.Free;
        lstFile.Free;
      end;
    except on E: Exception do
      //Nada
    end;
  end;

begin
   try
      Z := TZipMaster.Create(nil);
      SSIn  := TStringList.Create;
      sFile := ApplicationPath + NomeArquivo;
      SSIn.Text := DadosXML;
      SSIn.SaveToFile(sFile);

      //Ver se Precisa
      Z.ZipFileName := Copy(sFile,1,Pos('.',sFile)-1) + '.zip';
      Z.FSpecArgs.Clear;
      Z.FSpecArgs.Add(sFile);
      Z.Add;

      ssOut := TFileStream.Create(Copy(sFile,1,Pos('.',sFile)-1) + '.zip',fmOpenRead);
      Result := EncodeBase64(ssOut);
   finally
      Z.Free;
      SSIn.Free;
   end;
end;

Onde é usado:

function TEnviarBlocoX.GetXMLZipado: AnsiString;
var
  AZip: AnsiString;
begin
  if FXMLZipado = '' then
  begin
    if FXML <> '' then
    begin
      AZip := ZipFile(FXML, FPBodyElement+'.xml');
      
      if AZip = '' then
        raise Exception.Create('O seu compilador não tem suporte nativo a ZipFile.'+sLineBreak+
                               'Informe o XML já Zipado + Base64 em "XMLZipado"');

      FXMLZipado := AZip;// EncodeBase64(AZip);
    end;
  end;

  Result := FXMLZipado;
end;

Fico no aguardo de uma luz.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
55 minutos atrás, jmcamargos disse:

Estou tentando enviar um arquivo (Bloco X - Estoque), porém, não estou conseguindo.

Passos seguidos:

- Gero o XML com os dados do estoque, conforme layout.

- Zipo o arquivo

- Converto para base64

Ao enviar o arquivo (loSoapClient.EnviarEstoque(pCnpjEstabelecimento, pDataReferencia, pXmlZipado), recebo o erro:

OLE IDispatch exception code 0 from Client: Client:Type conversion failure for element pXmlZipado  HRESULT=0x80020005: Tipo não correspondente.
 - Client:Unspecified client error. HRESULT=0x80020005: Tipo não correspondente.
 

Já enviei o próprio XML, sem converter para base64, no lugar de pXmlZipado, o erro persiste.

Já enviei o próprio XML zipado, sem converter para base64, o erro persiste.

Já enviei o próprio XML, convertido para base64, sem zipar, o erro persiste.

Alguém pode me ajudar a enxergar o que estou fazendo de errado?

Obrigado.

caso não tenha lido as regras do fórum leia

poste em um local e aguarde.

26 minutos atrás, Gean Tonet disse:

Mudei para zipmaster e estou usando uma função que achei em outro tópico. Porem o problema continua. Segue fonte.

 


function ZipFile(const DadosXML: AnsiString; const NomeArquivo: String): AnsiString;
var
  Z     : TZipMaster;
  SSIn  : TStringList;
  sFile : string;
  ssOut : TFileStream;

  function EncodeBase64(Arquivo: TFileStream): String;
  Var
  Encoder64 : TIDEncoderMime;
  lstFile: TStringList;
  Begin
    try
      try
        Encoder64 := TIDEncoderMime.Create (Nil);
        lstFile := TStringList.Create;
        lstFile.LoadFromStream(Arquivo);
        Result := Encoder64.Encode(lstFile.Text);
      finally
        Encoder64.Free;
        lstFile.Free;
      end;
    except on E: Exception do
      //Nada
    end;
  end;

begin
   try
      Z := TZipMaster.Create(nil);
      SSIn  := TStringList.Create;
      sFile := ApplicationPath + NomeArquivo;
      SSIn.Text := DadosXML;
      SSIn.SaveToFile(sFile);

      //Ver se Precisa
      Z.ZipFileName := Copy(sFile,1,Pos('.',sFile)-1) + '.zip';
      Z.FSpecArgs.Clear;
      Z.FSpecArgs.Add(sFile);
      Z.Add;

      ssOut := TFileStream.Create(Copy(sFile,1,Pos('.',sFile)-1) + '.zip',fmOpenRead);
      Result := EncodeBase64(ssOut);
   finally
      Z.Free;
      SSIn.Free;
   end;
end;

Onde é usado:


function TEnviarBlocoX.GetXMLZipado: AnsiString;
var
  AZip: AnsiString;
begin
  if FXMLZipado = '' then
  begin
    if FXML <> '' then
    begin
      AZip := ZipFile(FXML, FPBodyElement+'.xml');
      
      if AZip = '' then
        raise Exception.Create('O seu compilador não tem suporte nativo a ZipFile.'+sLineBreak+
                               'Informe o XML já Zipado + Base64 em "XMLZipado"');

      FXMLZipado := AZip;// EncodeBase64(AZip);
    end;
  end;

  Result := FXMLZipado;
end;

Fico no aguardo de uma luz.

Favor ler as regras do fórum postar em um local e aguardar

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Desculpa, comentei aqui primeiro e por falta de atenção acabei comentando no outro tópico.

Estou usando o componente ACBrBlocoX e até então estava tudo perfeito. Instalei ele essa semana. O único problema é que uso o delphi 7 e não tem suporte para zipfile.

E infelizmente não estou conseguindo utilizar o zipmaster ou o TAbZipper para fazer o papel do zipfile.

Link para o comentário
Compartilhar em outros sites

Bom dia,

 

Descomentei a linha abaixo no arquivo ACBr.inc:

 

// Descomente essa linha, para usar ZLibExGZ de \ACBr\Fontes\Terceiros\ZLibExGZ
// ZLib de D7 contém bugs e está incompleta. Caso contrário usará compactação nativa, unit "ZLib"
{.$DEFINE USE_ZLibExGZ}

 

de

{.$DEFINE USE_ZLibExGZ}

para

{$DEFINE USE_ZLibExGZ}

O erro que apresenta agora é "O seu compilador não tem suporte nativo a ZipFile."

Faltou eu fazer alguma coisa?

Obs: Atualizei os fontes hoje.

 

Link para o comentário
Compartilhar em outros sites

Bom dia, acredito que o erro que passei acima seja por isso:

 

De forma resumida:

 
Até 16/09/2017 – Possibilidade enviar Redução Z ou Estoque ao ambiente de produção, na forma de teste
17/09/2017 a 30/09/2017  Não enviem informação ao web service de produção
01/10/2017 – Início da obrigatoriedade. Qualquer informação recebida será considerada verídica para fins de auditoria e cruzamento de dados.

 

http://bell.unochapeco.edu.br/lts/?p=3129

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
13 minutos atrás, Gean Tonet disse:

Bom dia, acredito que o erro que passei acima seja por isso:

 

De forma resumida:

 
Até 16/09/2017 – Possibilidade enviar Redução Z ou Estoque ao ambiente de produção, na forma de teste
17/09/2017 a 30/09/2017  Não enviem informação ao web service de produção
01/10/2017 – Início da obrigatoriedade. Qualquer informação recebida será considerada verídica para fins de auditoria e cruzamento de dados.

 

http://bell.unochapeco.edu.br/lts/?p=3129

 

Obrigado.

Bom dia

mudou todo esse cenário.

produção somente em janeiro então até lá pode mandar testes para produção .

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Achei essas informações no link http://legislacao.sef.sc.gov.br/html/atos_diat/2017/atodiat_17_017.htm:

 

I – ALTERADO – Ato Diat 025/17, art. 1º – Efeitos a partir de 18.09.17:

I – a partir de 8 de janeiro de 2018, os estabelecimentos enquadrados nos Códigos da Classificação Nacional de Atividades Econômicas (CNAE) 4731800 - Comércio varejista de combustíveis para veículos automotores;

I – Redação original – vigente até 17.09.17:

I – a partir de 1º de outubro de 2017, os estabelecimentos enquadrados nos códigos da Classificação Nacional de Atividades Econômicas (CNAE) 4731800 - Comércio varejista de combustíveis para veículos automotores;

II – a partir de 1º de março de 2018, os estabelecimentos enquadrados nos códigos da Classificação Nacional de Atividades Econômicas (CNAE) 4713001 – Lojas de Departamentos ou Magazines;

III – a partir de 1º de junho de 2018, os estabelecimentos enquadrados nos seguintes códigos da Classificação Nacional de Atividades Econômicas (CNAE):

 

Isso é valido?

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • Administradores

Boa tarde.

Veja neste tópico que houveram mudanças recentes quanto ao Bloco X, certifique-se de estar utilizando os métodos corretos.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Link para o comentário
Compartilhar em outros sites

ola sim eu observei que houve mudanças.

inclusive estou com todos os componentes atualizados e recompilados.

tudo funcionando. inclusive ja mudei as formas de transmissão conforme 

consta no acbr.

    ACBrBlocoX1.WebServices.TransmitirArquivoBlocoX.Clear;
    ACBrBlocoX1.WebServices.TransmitirArquivoBlocoX.XML := Arquivo.Text;

mesmo assim ocorre o erro arquivo zip invalido. ate aparece a msg arquivo transmitido com sucesso 

mas o erro persiste.

 

Link para o comentário
Compartilhar em outros sites

na verdade no demo acbr esta desta forma

   ACBrBlocoX1.WebServices.TransmitirArquivoBlocoX.Clear;
    ACBrBlocoX1.WebServices.TransmitirArquivoBlocoX.XML := Arquivo.Text;

mudei para esta outra e deu certo pois o arquivo gerado esta em textoarquivo. e nao em arquivo.txt

    ACBrBlocoX1.WebServices.TransmitirArquivoBlocoX.Clear;
    ACBrBlocoX1.WebServices.TransmitirArquivoBlocoX.XML := TextoArquivo;

deu certo se alguem puder corrigir la no exemplo acbr agradeço.

obrigado.

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

  • Administradores

Boa tarde.

Anexe aqui a unit alterada e já adicionamos ao svn.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Link para o comentário
Compartilhar em outros sites

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