Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia,

Fiz uma carta de correção pelo sistema da empresa onde trabalho e transmiti sem problemas pelo ACBr. Em seguida, eu pego o XML gerado pelo ACBr da propriedade FEventoRetorno.retEvento.Items.RetInfEvento.XML e salvo no meu banco de dados. Só que se abrirmos o XML dessa propriedade no navegador, vai dar problema se tiver caracteres especiais. Por exemplo, o & na tag xCorrecao.

Na função TNFeEnvEvento.TratarResposta, que está na unit ACBrNFeWebServices, é atribuído o XML da carta de correção para a propriedade citada acima. Dentro desse método identifiquei o seguinte comando:

Texto := ParseText(Texto);


Esta linha está convertendo o XML, tirando & (código HTML correspondente do e comercial) e colocando &. Comentei essa linha e o XML ficou correto no meu banco de dados. Sugiro retirá-la, ou se alguém puder explicar em qual caso ela é obrigatória, somente para entender melhor a situação.

Exemplo da tag xCorrecao do XML que será transmitido (Propriedade FPDadosMsg):

<xCorrecao>T&ST& DE CARTA DE CORR&CAO</xCorrecao>

Exemplo da tag xCorrecao após o ParseText:

<xCorrecao>T&ST& DE CARTA DE CORR&CAO</xCorrecao>

Obs: Fiz vários testes de eventos olhando o XML que a SEFAZ retorna e nenhum precisa do ParseText.

Postado

Edit: 

Exemplo da tag xCorrecao do XML que será transmitido (Propriedade FPDadosMsg):

<xCorrecao>T&amp;ST&amp; DE CARTA DE CORR&amp;CAO</xCorrecao>

Exemplo da tag xCorrecao após o ParseText: 

<xCorrecao>T&ST& DE CARTA DE CORR&CAO</xCorrecao>

  • 4 meses depois ...
Postado

Prezados,


Por varias vezes temos encontrado caracteres especiais no XML, existe algum comando do AcbrNfe que "limpe" os mesmos? Segue um exemplo na imagem em anexo.

Abaixo segue uma "fuction" que  tem nos auxiliado porêm ainda assim o problema persiste:

function SemCaracteresEspeciais(v_texto: string): string;
var textofinal: string;
begin
  textofinal := SemAcento(v_texto);

  textofinal := Substituir(textofinal, 'Ø', 'DIAMETRO');
  textofinal := Substituir(textofinal, 'º', ' ');
  textofinal := Substituir(textofinal, 'ª', ' ');
  textofinal := Substituir(textofinal, '  ', ' ');
//  textofinal := Substituir(textofinal, '/', '-'); //só isso para nome de arquivo //não habilite isso, se não a nf-e não roda
//  textofinal := Substituir(textofinal, '\', '-'); //só isso para nome de arquivo //não habilite isso, se não a nf-e não roda
//  textofinal := Substituir(textofinal, ':', '-'); //só isso para nome de arquivo //não habilite isso, se não a nf-e não roda
  textofinal := Substituir(textofinal, 'µ', ' ');
  textofinal := Substituir(textofinal, '“', ' ');
  textofinal := Substituir(textofinal, 'm²', 'm2');
  textofinal := Substituir(textofinal, 'm³', 'm3');
  textofinal := Substituir(textofinal, '³', '3');
  textofinal := Substituir(textofinal, '²', '2');
  textofinal := Substituir(textofinal, '*', 'x');//
  textofinal := Substituir(textofinal, '', 'A');//
  textofinal := Substituir(textofinal, Char(141), ' '); 
  textofinal := Substituir(textofinal, Char(128), ' ');
  textofinal := Substituir(textofinal, '&', 'E');
  textofinal := Trim(textofinal);


  Result := textofinal;
end;

Agradeço desde já.

Cleverson

 

caracteres especiais.jpg

Postado

Prezado Everton,

Muito obrigado pela resposta, porêm não obtivemos sucesso, vamos continuar na luta e se conseguirmos uma solução postamos aqui.

Obrigado

Cleverson

 

 

 

  • 3 semanas depois ...
Postado

o problema não é tanto no xml, mas em buscas e tudo mais, não sei se é comum para vocês, mas os clientes geralmente copiam de sites de internet os dados de cadastro, daí buga na pesquisa do banco de dados, entre outros problemas.

Na verdade o que procuro é tipo um Trim, que tira os espaços, mas que tire esses caracteres bugados.

Mas sem stress, se eu achar algo deixo aqui no fórum, ou se não vou melhorando a função que postei.

Obrigado pela ajuda

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

The popup will be closed in 10 segundos...