Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Boa tarde,

ao fazer download do xml de nota destinada pelo AcBr, o xml que é retornado não está reconhecendo
o caractere de indicador ordinal (°). O arquivo não carrega no navegador nem consigo importar no sistema que desenvolvemos aqui na firma, devido ao problema na estrutura.
Ao abrir no Notepad++ onde deveria ter o indicador ordinal está o seguinte código "xBO". Ao retirar o caractere o carregamento do arquivo funciona normalmente. Se colocar manualmente no arquivo o caracter também funciona normalmente

post-36660-0-78142700-1426711506_thumb.p

Editado por Gabriel Souza Lopes
Link para o comentário
Compartilhar em outros sites

Bom dia, segue o código  da função que faz o download : 
 
ConfiguraCompNFe;
    ACBrNFe1.DownloadNFe.Download.CNPJ := cdsEmpresaCNPJEMPRESA.AsString;
    ACBrNFe1.DownloadNFe.Download.Chaves.Clear;
    for i := 0 to ChaveNF.Count - 1 do
    begin
      ACBrNFe1.DownloadNFe.Download.Chaves.Add.chNFe := ChaveNF.Strings;
    end;
    ACBrNFe1.Download;
 
 
    for i := 0 to ACBrNFe1.WebServices.DownloadNFe.retDownloadNFe.retNFe.Count - 1 do
    begin
      if ACBrNFe1.WebServices.DownloadNFe.retDownloadNFe.retNFe.Items.cStat <> 140 then
      begin
        ShowMessage(ACBrNFe1.WebServices.DownloadNFe.retDownloadNFe.retNFe.Items.xMotivo);
        Continue;
      end;
 
      NFE := ACBrNFe1.WebServices.DownloadNFe.retDownloadNFe.XML;
 
      strPathArquivo := ACBrNFe1.Configuracoes.Arquivos.GetPathNFe(cdsPesNotaFiscalDTEMISSAONF.AsDateTime) +'\'+
                        ACBrNFe1.WebServices.DownloadNFe.retDownloadNFe.retNFe.Items.chNFe + '-nfe.xml';
 
      ACBrNFe1.NotasFiscais.Clear;
      try
        XmlNFE := TStringList.Create;
        XmlNFE.Text := NFE;
        XmlNFE.SaveToFile(strPathArquivo);
 
        DmFiscal.XMLDocFiscal(ttxUpload, ACBrNFe1.WebServices.DownloadNFe.retDownloadNFe.retNFe.Items.chNFe, tdfNFe, cdsPesNotaFiscalDTEMISSAONF.AsDateTime);
 
        ACBrNFe1.NotasFiscais.LoadFromFile(strPathArquivo);
        Result  := True;
      except
        on E: Exception do
          Raise Exception.Create('Arquivo XML da NF-e inválido.'+ E.Message);
      end;
      FreeAndNil(XmlNFE);
    end;
Link para o comentário
Compartilhar em outros sites

Gabriel, não sei se vc olhou a classe TNFeDownloadNFe, ela possui uma function TratarResposta, e pelo que entendi do que li nessa function o arquivo já é salvo com o nome chave_de_acesso-nfe.xml na pasta configurada na propriedade PathSalvar, pelo que vi no seu código vc chama o Download e depois salva o conteúdo da stringlist em um arquivo de nome semelhante, é isso mesmo? Vc já tinha visto esse detalhe da TratarResposta da classe NFeDownloadNFe?

Link para o comentário
Compartilhar em outros sites

Sim sim, 100%,  só acrescentei o código dos caracteres no replace para conversão de UTF-8 para ANSI.

Segue a Unit com o acréscimo do seguinte código :

 

    Texto := AnsiString(StringReplace(String(Texto), '&deg;', '°', [rfReplaceAll]));//indicador ordinal masculino
    Texto := AnsiString(StringReplace(String(Texto), '&ordf;', 'ª', [rfReplaceAll]));//indicador ordinal feminino
 
 

ACBrUtil.pas

ACBrUtil.pas

Editado por Gabriel Souza Lopes
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 2 semanas depois ...
  • 5 meses depois ...

Boa tarde Pessoal,

estou tendo o mesmo problema, porém no xml que estou baixando contém acentuação e acaba dando o mesmo problema, quando acrescento no inicio do xml baixado

<?xml version="1.0" encoding="UTF-8"?>

consigo ver os caracteres especiais, andei dando uma olhada em alguns tópicos mais antigos e percebi que algum tempo atrás tínhamos o seguinte tratamento 

FRetornoWS := TiraAcentos(ParseText(StrStream.DataString{, True));

porém foi retirado porque acabava mudando a estrutura do xml, alguém teria alguma ideia para corrigirmos isso, ou terei que pegar o xml salvo e efetuar ajustes antes de importar o mesmo?

LogoACBr_02.png.d3c72a4756f896a387e063fd64ed6646.png Frederico Westphalen - RS
pbnew.com.br  
[email protected]  
55 3744 - 3880  
Link para o comentário
Compartilhar em outros sites

Bom dia Pessoal,

Só para relatar meu testes, testei no Trunk e os arquivos "-down-nfe.xml" e "-down-nfe-soap.xml", ocorre o mesmo problema ao tentar abrir no IE, ai resolvi migrar para o Trunk2 e os arquivos "-down-nfe.xml" e "-down-nfe-soap.xml" abrem normalmente no IE, porém segue o mesmo problema entre o Trunk e o Tunk2 no arquivo "-nfe.xml", se alguém tiver alguma ideia de como podemos resolver isso, ideias são bem vindas e posso modificar os códigos sem problemas, ai posto aqui no fórum as correções, também vou continuar analisando os códigos.

LogoACBr_02.png.d3c72a4756f896a387e063fd64ed6646.png Frederico Westphalen - RS
pbnew.com.br  
[email protected]  
55 3744 - 3880  
Link para o comentário
Compartilhar em outros sites

Bom dia Pessoal

De novo eu, no trunk2 analisei os códigos e consegui corrigir, na unit "pcnRetDownloadNFe" na linha 238 devemos comentar o seguinte código:
{FretNFe.Items.FprocNFe := IIF(Pos(ENCODING_UTF8, FretNFe.Items.FprocNFe) > 0,
                                           '',
                                           '<' + ENCODING_UTF8 + '>') +
                                       FretNFe.Items.FprocNFe;}

porque isso, se analisar o código na hora que efetuamos o Envio dos Dados para o WebServices recebemos um retorno UTF8 e convertemos para um formato nativo de String usado pelo IDE: FPRetornoWS := ParseText(FPRetornoWS, True, True);

a partir deste momento estamos trabalhando com uma string, e o problema realmente ocorria na hora que era chamado a função Gravar, porque dentro da função Gravar tínhamos o seguinte código UTF8Str := ConverteXMLtoUTF8(ConteudoXML); para converter para UTF8, porem dentro da função "ConverteXMLtoUTF8" ela testa para ver se já tem "'<?xml version="1.0" encoding="UTF-8"?>'" e como já tinha acabava não convertendo de string para UTF8.

Pessoal se alguém tiver alguma ideia melhor favor postarem para que possamos cada vez mais melhor este componente, vou dar uma analisada na trunk para ver se conseguimos corrigir isso também.

  • Curtir 2
LogoACBr_02.png.d3c72a4756f896a387e063fd64ed6646.png Frederico Westphalen - RS
pbnew.com.br  
[email protected]  
55 3744 - 3880  
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Rômulo,

Muito obrigado pela colaboração, já esta disponível no Trunk2.

  • 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

  • Fundadores

Prezados,

Apliquei diversas modificações em ACBrDFeComum e ACBrNFe, referente a esse (eterno) problema de Encoding... Seria tão mais simples se o Delphi XE usasse UTF8, assim como todas as linguagens de programação modernas o fazem...

Por favor leiam o Change-Log.txt dos pacotes modificados... e repitam os testes...

Eu concordo com a modificação promovida pelo @Rômulo da Costa de Souza...  a analise dele, no post acima, está perfeita...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Rômulo,

Seguindo as orientações do Daniel, por favor atualize todos os fontes de todas as pastas e refaça os testes.

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á 3152 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.