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á 762 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá Amigos, conforme solicitado, estou abrindo este ticket para verificação do problema na impressão de caracteres inválidos nos dados do prestador do serviço.

Segue XML e PDF de exemplo.

3522010803285800014056000000000003050-nfse.pdf 3522010803285800014056000000000003050-rps.xml

Gilson do Carmo
WindSoft Sistemas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Gilson,

Estamos cientes desse problema.

Algumas técnicas resolvem o problema para alguns provedores, mas não resolvem para outros.

Estamos em busca de uma solução definitiva para o problema.

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

  • Consultores

Bom dia Gilson,

Não ocorria com o Ginfes, mas ocorria com outros provedores.

Como lhe disse, estamos em busca de algo que resolva o problema para todos os provedores.

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

  • Consultores

Boa tarde Gilson,

Favor atualizar os fontes, reinstalar o ACBr e faça novos 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

  • Consultores

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

  • Membros Pro

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Gilson,

Faça uma cópia das Units do componente que por ventura você alterou.

Atualize os fontes, reinstale o ACBr e faça um novo teste.

  • Triste 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

  • Consultores

Bom dia Gilson,

Estamos reunindo a equipe ACBr para juntos analisar o problema e buscar uma solução.

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

  • 4 semanas depois ...
  • Consultores
  • Solution

Bom dia Gilson,

Favor atualizar todos os fontes de todas as pastas, reinstale o ACBr e faça novos 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

×
×
  • 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.

The popup will be closed in 10 segundos...