Ir para conteúdo
  • Cadastre-se

dev botao

Dados incorretos na impressão do DanfSe com ACBrNFSeX e Ginfes


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

Recommended Posts

  • Membros Pro
Postado

Desculpe a pergunta ignorante. Mas não seria só verificar como estava na versão antiga? Pois não acontecia antes. 

Gilson do Carmo
WindSoft Sistemas

  • Consultores
Postado

Gilson,

Vai ser necessário debugar a function Executar que esta na unit ACBrNFSeXWebserviceBase.

Mais precisamente as linhas abaixo:

            FPRetorno := string(ReadStrFromStream(HttpClient.DataResp, HttpClient.DataResp.Size));  //<== Salvar (1)
            FPRetorno := RemoverDeclaracaoXML(FPRetorno);
            FPRetorno := StrToXml(FPRetorno);

            case TipoEncoding(FPRetorno) of
              teUTF8:
                FPRetorno := UTF8ToNativeString(AnsiString(FPRetorno));

              teISO8859_1:
                FPRetorno := string(TranslateString(AnsiString(FPRetorno), 0, 28591));

              teUNICOD:
                begin
                  FPRetorno := FaststringReplace(FPRetorno, '&amp;', '&', [rfReplaceAll]);
                  FPRetorno := ConverterUnicode(FPRetorno);
                end
            else
              // o XML esta em ASCII
            end;

            // Alguns provedores não retornam o XML em UTF-8
            FPRetorno := ConverteXMLtoUTF8(FPRetorno);    //<== Salvar (2)

Salvar o valor de PFRetorno (1) e depois no final o valor de FPRetorno (2)

E tentar descobrir o que esta ocorrendo nesse meio tempo.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

Olá @Italo Giurizzato Junior boa noite.

Estudei um pouco mais os fontes mas ainda não consegui compreender o problema. Talvez te ajude, eu fiz um teste aqui descomentando algumas linhas que estavam comentadas.

No Ponto (1) o FPRetorno fica com a acentuação correta, no Ponto (2) volta a ficar incorreta. Segue anexo os 2 arquivos de resultado

            if ((Pos('application/xml', CharSet) > 0) or (Pos('text/xml', CharSet) > 0)) and
               (Pos('utf-8', CharSet) > 0) then
              FPRetorno := UTF8ToNativeString(ReadStrFromStream(HttpClient.DataResp, HttpClient.DataResp.Size))  // Aqui a acentuação fica correta
            else
              FPRetorno := string(ReadStrFromStream(HttpClient.DataResp, HttpClient.DataResp.Size));

//            FPRetorno := string(ReadStrFromStream(HttpClient.DataResp, HttpClient.DataResp.Size));
            FPRetorno := RemoverDeclaracaoXML(FPRetorno);
            FPRetorno := StrToXml(FPRetorno);

            case TipoEncoding(FPRetorno) of
              teUTF8:
                FPRetorno := UTF8ToNativeString(AnsiString(FPRetorno));

              teISO8859_1:
                FPRetorno := string(TranslateString(AnsiString(FPRetorno), 0, 28591));

              teUNICOD:
                begin
                  FPRetorno := FaststringReplace(FPRetorno, '&amp;', '&', [rfReplaceAll]);
                  FPRetorno := ConverterUnicode(FPRetorno);
                end
            else
            end;

            // Alsuns provedores retorna uma string apenas com a mensagem de erro
            if Pos('Body', FPRetorno) = 0 then
              FPRetorno := GetSoapBody(FPRetorno);

            // Alguns provedores não retornam o XML em UTF-8
            FPRetorno := ConverteXMLtoUTF8(FPRetorno);       // Aqui volta a ficar incorreta

 

PFRetorno (2).txt PFRetorno (1).txt

Gilson do Carmo
WindSoft Sistemas

  • Membros Pro
Postado

Olá bom dia!

Atualizando a informação: Com estas alterações acima, o arquivo XML é salvo na pasta de maneira adequada, mas quando leio o arquivo da propriedade ACBrNFSe1.NotasFiscais.Items[i].XML ele está com o mesmo problema, então me parece que a correção está funcionando, porém falta fazer mais algo pra que o XML que é informado na propriedade XML esteja com o mesmo conteudo do arquivo.


 

Gilson do Carmo
WindSoft Sistemas

  • Membros Pro
Postado

Bom dia, resolvi temporariamente a questão fazendo uma gambiarra e lendo o arquivo da NFSe que o ACBr gera, se ler a propriedade XML do componente, como eu já disse, continua incorreto. Pelo menos conseguimos sanar o problema para o cliente até sair uma solução definitiva.

Gilson do Carmo
WindSoft Sistemas

  • 4 semanas depois ...
×
×
  • 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.