Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Bom dia,

 

Estou tendo um erro ao enviar NFSe para Belo Horizonte.

O erro que retorna é:  'Ocorreu um erro Inesperado. (Unexpected character '' (code 32) (missing name?) ate [row,col {unknows-source}]: [1,1108)'

Ele ocorre por causa de um & (e comercial) que tem no nome do tomador. Se tirar esse caracter, o erro não ocorre.

Veriquei no XML do RPS e o ACBR está substituindo o "&" por "&". O correto não seria "&"?

 

Alguma dica?

 

Obrigado!

 

Valdir

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
Postado

Boa tarde Valdir,

 

É bem provável que a function que faz essa alteração deva estar sendo executada duas vezes.

 

Sugestão não coloque o & no nome do tomador, troque para E.

 

Não sei porque brasileiro tem essa mania de dar nomes em Inglês para as empresas ou utilizar caracteres que não seja da língua portuguesa.

  • Curtir 1
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

Boa tarde Valdir,

 

É bem provável que a function que faz essa alteração deva estar sendo executada duas vezes.

 

Sugestão não coloque o & no nome do tomador, troque para E.

 

Não sei porque brasileiro tem essa mania de dar nomes em Inglês para as empresas ou utilizar caracteres que não seja da língua portuguesa.

Eu concordo plenamente contigo meu caro Italo e agradeço sua resposta. Mas acho que não cabe a nós esse julgamento. Até porque o cliente nosso (que é quem vai utilizar o nosso sistema), pode precisar emitir uma nota para um alemão, um polaco e até russo,....e aí quantos "unexpected character" não poderemos ter? O que faríamos nesse caso? Substituir tudo? Claro que não seria possível!

Acho que a saída é adequarmos o sistema para que não ocorra esse erro. Eu até verifiquei que o ACBR faz isso, ou seja, ele troca o "&" por  "&" na função FiltrarTextoXML da pcnAuxiliar.pas. Não entendo muito disso, mas será que o problema não está no .xsd do BHISS que não consegue interpretar isso?

 

Por hora vou fazer conforme você sugeriu, ou seja, vou trocar "&" por "e", mas acho que teria que te outra saída, pois, como mencionei, em nomes de pessoas (seja PJ, seja PF), não somos nós desenvolvedores que podemos determinar como vai ser.

 

Obrigado pela sua costumeira ajuda Italo!

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
Postado

Boa noite Valdir,

 

Como dito no post anterior, o componente deve estar executando a rotina que troca os caracteres especias ( & por exemplo ) 2 vezes, dai o problema que você detectou.

 

É preciso analisar o código do componente onde isso esta ocorrendo.

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

Bom dia Italo,

 

Bem, o problema do componente fazer a substituição duas vezes eu localizei. Veja se abaixo eu consigo explicar onde está o erro no componente.
 
1) na procedure TNFSeW.GerarXML_ABRASF_V1 da pnfsNFSeW.pas ele chama a função GerarTomador
 
2) Dentro da GeraTomador, temos a linha "Gerador.wCampoNFSe(tcStr, '#38', 'RazaoSocial', 001, 115, 0, NFSe.Tomador.RazaoSocial, '')", que acaba chamando a FiltrarTextoXML e gera a tag RazaoSocial formatada (já com o "&" substituído por "&amp").
 
3) Depois temos a "procedure TNotasFiscais.Assinar(AssinaRPS: Boolean = True)" da ACBrNFSeNotasFiscais.pas.
Nessa procedure temos a linha "FConfiguracoes."Geral.Save(NotaUtil.PathWithDelim(CaminhoArquivo) + Self.Items.NFSe.InfID.ID+'-Rps2.xml', LocNFSeW.Gerador.ArquivoFormatoXML)", que chama a função abaixo:
  "function TGeralConf.Save(AXMLName: String; AXMLFile: WideString; aPath: String = ''): Boolean" da ACBrNFSeConfiguracoes.pas. 
 
Nessa função save é executada a linha abaixo:
   //..SILVIO/RODRIGO estamos trocando o & por causa de erro na abertura do arquivo XML - 06-02-2014
   vSalvar.Text := StringReplace(vSalvar.Text, '&', '&', [rfReplaceAll]);
 
 Com esta última rotina todo o conteúdo do xml passa NOVAMENTE pela substituição do caractere "&" por "&amp" .
 
 Eu comentei essa  linha vSalvar.Text := StringReplace(vSalvar.Text, '&', '&', [rfReplaceAll]) e aí gerou corretamente, ou seja, ao invés de substituir o "&" por "&" por "&", substituiu por "&". Mas o erro inicial de "unexpected character" e que gera a rejeição pelo web service permanece.
 
 Obrigado!
  • Curtir 1

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
Postado

Bom dia Valdir,

 

Muito obrigado pela sua analise, já comentei também a linha que esta provocando a geração do "&".

 

Quanto a rejeição ainda continuar, acredito eu que o provedor não implementou a analise do & 

 

O Web Service ao detectar a presença do caracter & deveria checar se o mesmo esta acompanhado de amp; caso afirmativo ignorar.

 

Como essa checagem não esta sendo feita ao detectar o & já resulta em rejeição.

  • Curtir 2
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

  • 5 meses depois ...
  • Este tópico foi criado há 3651 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.