Ir para conteúdo
  • Cadastre-se

dev botao

Problema com codificação do xml de retorno para consulta de notas fiscais de serviços tomados em C#.


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

Recommended Posts

  • Membros Pro
Postado

Ao utilizar o método ConsultarNFSeGenerico() o retorno vem com caracteres inválidos. Os arquivos salvos na pasta estão ok, mas se tento pegar o retorno do xml para posteriormente utilizar os métodos CarregarINI() e ObterINI() o texto é apresentado com caracteres errados.

Outro problema é que o retorno do método ObterINI() não traz a data de cancelamento da nota (quando existe).

consulta_generica_duque_caxias.txt

  • Consultores
Postado
6 horas atrás, [email protected] disse:

Ao utilizar o método ConsultarNFSeGenerico() o retorno vem com caracteres inválidos. Os arquivos salvos na pasta estão ok, mas se tento pegar o retorno do xml para posteriormente utilizar os métodos CarregarINI() e ObterINI() o texto é apresentado com caracteres errados.

Outro problema é que o retorno do método ObterINI() não traz a data de cancelamento da nota (quando existe).

consulta_generica_duque_caxias.txt 621 B · 3 downloads

@[email protected] poderia enviar os arquivos, para que eu possa realizar alguns testes aqui em meu ambiente..
Se achar que contém informações sensíveis, pode por favor enviar os arquivos por e-mail, [email protected], informe o link do tópico no e-mail por favor

  • Consultores
  • Solution
Postado

Boa tarde @[email protected],

Esse XML que você anexou é o XML retornado pela Lib ou você baixou ele no Portal da prefeitura?

Esse XML é o de retorno da consulta, a Lib não salvou os XMLs das notas separadamente?

Nesse retorno temos 5 notas.

E em todas elas existem um erro de geração do XML por parte do provedor, veja:

<Endereco>
	<Endereco>Estrada Fazendinha do Recreio</Endereco>
	<Complemento>QUADRA 410 LOTE 1 QUADRA 20 LO</Complemento>
	<Bairro>Chácaras rio-petrã³polis</bairro>
	<codigomunicipio>3301702</codigomunicipio>
	<uf>rj</uf>
	<cep>25230022</cep>
</endereco>
<contato>
	<email>[email protected]</Email>
</Contato>

O grupo endereço do tomador é aberto com a tag <Endereco> e fechado com a tag </endereco>, problema semelhante com o grupo contato que é aberto com a tag <contato> e fechado com a tag </Contato>, problema pode ser visto com o elemento e-mail.

Desconfio que o provedor além de cometer esse erro na estrutura do XML, deve também estar gerando o mesmo em ANSI ou outra codificação e colocando o enconding como UTF-8

Não vejo outra saída você entrar em contato com provedor e expor o problema.

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

Esse anexo é o retorno do método ConsultarNFSeGenerico(), eu apenas tirei a parte de cima antes do xml de retorno do provedor. Os arquivos gerados separadamente a codificação fica certa. O problema é nesse retorno.

Eu vou trabalhar com diversas prefeituras para buscas notas de serviços tomados. Como não existe uma classe de alto nível que transforme o arquivo de retorno, fui orientado a utilizar os métodos CarregarINI() e ObterINI().

Eu poderia serializar os xmls gerados separadamente, porém como são vários provedores diferentes eu precisaria fazer para todos. Então utilizando o método ObterINI() pra mim já fica pronto, só preciso de uma maneira de codificar corretamente o retorno.

  • Consultores
Postado
3 minutos atrás, [email protected] disse:

Esse anexo é o retorno do método ConsultarNFSeGenerico(), eu apenas tirei a parte de cima antes do xml de retorno do provedor. Os arquivos gerados separadamente a codificação fica certa. O problema é nesse retorno.

Eu vou trabalhar com diversas prefeituras para buscas notas de serviços tomados. Como não existe uma classe de alto nível que transforme o arquivo de retorno, fui orientado a utilizar os métodos CarregarINI() e ObterINI().

Eu poderia serializar os xmls gerados separadamente, porém como são vários provedores diferentes eu precisaria fazer para todos. Então utilizando o método ObterINI() pra mim já fica pronto, só preciso de uma maneira de codificar corretamente o retorno.

Veja o que @Italo Giurizzato Junior comentou acima !

Este retorno é do Provedor ISSNET,  do WebService que trabalha com a versão 2 do layout da ABRASF, nessa versão você tem o Serviço de Consultar NFSe Serviço Tomado.
Já os provedores que trabalham com versão 1 do layout da ABRASF não tem o Serviço para consultar NFSe Serviço Tomado, para mais informações veja os dois tópicos abaixo:


Quanto ao comentário acima do @Italo Giurizzato Junior veja que o mesmo já orientou a entrar em contato com provedor, pois quem esta quebrando a acentuação é o próprio provedor.. e a estrutura do xml que também não esta correta, sem falar da questão do encoding, que Italo também já mencionou acima..

Não temos certificado para efetuar os testes.. mas os testes que fiz aqui, parece ser de fato algo do lado do provedor.

Então por favor, siga as orientações acima e qualquer novidade volte a reportar aqui neste tópico.. 

  • Membros Pro
Postado

@antonio.carlos Entendo que se o problema fosse do provedor, os arquivos xml das notas, que são gerados separadamente pela lib também estaria com problema na codificação. Mas isso não ocorre. Os arquivos xml separados ficam coma codificação CERTA, mas o retorno do método ConsultarNFSeGenerico() fica ERRADO.

Segue anexo os arquivos gerados pela lib.

Nfse.7z

  • Consultores
Postado

@[email protected],

Me responda uma coisa.

Todos os XMLs de notas que você acabou de disponibilizar foram retornados pelo ConsultarNFSeGenerico?

Você esta usando o ConsultarNFSeGenerico para realizar uma Consulta NFSe de Serviço Tomado, correto?

Como mencionei anteriormente o XML que você tinha anexado desse retorno continha 5 notas, elas foram salvas na pasta Notas?

Tenha em mente o seguinte:

1. Não é a Lib que gera o XML da NFS-e.

2. O XML da NFS-e é gerado pelo webservice do provedor e disponibilizado através de uma consulta.

3.  A Lib apenas extrai do retorno da consulta o(s) XML(s) da(s) NFS-e e o(s) salva na pasta Notas de forma individual, ou seja, se a consulta executada retornar 30 notas, a Lib vai salvar na pasta Notas 30 XML.

Esses XMLs que você disponibilizou na sua ultima postagem é de qual tipo de consulta?

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

@Italo Giurizzato Junior, os XMLs foram gerados pela ConsultarNFSeGenerico(). 

Eu já tenho um sistema próprio para algumas prefeituras, sei como funciona o retorno do provedor.

Fazendo um teste no programa DEMO vi que retorna a codificação correta. Então, deve ser alguma coisa que precisa configurar no meu programa, mas já tentei de tudo e não achei método ou propriedade para passar o encoding.

Conseguem me ajudar?

  • Consultores
Postado

Bom dia @[email protected],

A questão é o seguinte, o método ConsultarNFSeGenerico nos permite realizar diversos tipos de consulta.

Dependendo do tipo de consulta que você informou no ConsultarNFSeGenerico o provedor pode estar gerando o XML da NFS-e corretamente ou não.

O primeiro XML que você anexou se refere a ConsultarNFSeServicoTomado e no retorno temos os XML das notas, mas a construção do XML esta errada conforme apresentado acima quando eu me referi aos grupos <Endereco> e <Contato>.

Por outro lado esses últimos XML que você anexou não sei qual foi o tipo de consulta que você informou no ConsultarNFSeGenerico, mas note que os XML das notas estão construídos corretamente.

Você precisa entrar em contato com o provedor e alerta-los que a construção dos XML das notas esta errada, referente ao retorno da consulta ConsultarNFSeServicoTomado.

 

Tipos de Consultas suportados pelo ConsultarNFSeGenerico: tcPorNumero, tcPorFaixa, tcPorPeriodo, tcServicoPrestado, tcServicoTomado, tcPorCodigoVerificacao, tcPorChave.

Alguns tipo de consulta só funcionam com um provedor ou grupo de provedores, por exemplo os tipos de consulta: tcPorFaixa, tcPorPeriodo, tcServicoPrestado, tcServicoTomado só vão funcionar se o provedor utiliza a versão 2 do layout da ABRASF.

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

@Italo Giurizzato Junior, bom dia.

O XML em sua estrutura está certo, não é problema no provedor. Veja minha resposta anterior (03/04 as 17:19) que pelo programa DEMO a codificação do arquivo xml está correta, mas no meu programa vem errada.

Quando falo de codificação estou me referindo a alguns caracteres que aparentemente não estão em UTF-8, como por exemplo "Chácaras rio-petrã³polis". No programa DEMO o retorno vem corretamente como "Chácaras rio-petrópolis". O que preciso saber é se existe algum lugar que preciso configurar, porque no retorno do meu programa os caracteres vem errados e no DEMO vem certo.

  • Consultores
Postado
Em 05/04/2024 at 10:59, [email protected] disse:

@Italo Giurizzato Junior, bom dia.

O XML em sua estrutura está certo, não é problema no provedor. Veja minha resposta anterior (03/04 as 17:19) que pelo programa DEMO a codificação do arquivo xml está correta, mas no meu programa vem errada.

Quando falo de codificação estou me referindo a alguns caracteres que aparentemente não estão em UTF-8, como por exemplo "Chácaras rio-petrã³polis". No programa DEMO o retorno vem corretamente como "Chácaras rio-petrópolis". O que preciso saber é se existe algum lugar que preciso configurar, porque no retorno do meu programa os caracteres vem errados e no DEMO vem certo.

Por desencargo, verifique a codificação de resposta em sua aplicação, visto que com o programa exemplo os caracteres estão corretos.
https://acbr.sourceforge.io/ACBrLib/Geral.html
 

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