Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia Pessoal,

Estou passando pelo seguinte problema ao gerar um arquivo de remessa pelo Monitor, quando a String é maior que a coluna e ela contem caracteres acentuados o Lazarus se perde na contagem retornando um resultado errado nas funções PadLeft/PadRight/Copy isso ocorreu nos meus testes tanto para Banco do Brasil, Itau, Santander.

Detalhando melhor o acontecido:

   Supondo que no Layout do Banco X a coluna razão social é 40 então temos o seguinte codigo no monitor:

      PadRight(Sacado.NomeSacado, 40, ' ')                                     + // 34 - 73 Nome

   Se a razão social do candango é "FULANINHO MATERIAIS PARA CONSTRUÇÃO LTDA ME" o que nos dá um total de 43 colunas, o correto seria a função PadRight retornar "FULANINHO MATERIAIS PARA CONSTRUÇÃO LTDA" no entanto ela retorna "FULANINHO MATERIAIS PARA CONSTRUÇÃO LT" pois ele contou o "ç" e o "ã" como dois caracteres cada, e no final a linha do arquivo que deveria tem 240/400 colunas fica com 238/398. Se essa mesma string é enviada sem acentuação ele gera o arquivo normalmente.

   Tendo isso identificado e tentando por diversas maneiras encontrar o problema, acabei criando um projeto novo, para tirar de vez a suspeita de erro nos fontes do ACBr. Nesse projeto utilizei a função Copy nativa e tinha no projeto apenas 2 edit e um botão, quando clica no botão ele da um "Edit2.text := copy(edit1.text,1,40)" e o resultado foi o mesmo que acontece no monitor, quando tem acento ele conta 2 caracteres.

   Alguém tem alguma ideia de como podemos resolver isso no Lazarus para poder continuar trabalhando com string acentuada? Pois os bancos permitem nomes acentuados no boleto e remover os acentos não está tendo uma boa aceitação do cliente.

Postado

bom dia..

nesse caso , sugiro, voce determinar o tamanho do campo , antes, de mandar para o monitor..

eu nao trabalho com lazarus, mas vou dizer como faço em windev:

nome is string=nome_do_campo[[1 to 40]] <-- aqui pego so o tamanho que preciso..

espero que ajude.

 

Postado (editado)

Amarildo, o maior problema de eu limitar a string diretamente na minha aplicação é que o tamanho pode variar de acordo com o banco ou layout do arquivo e seria redundante tratar cada banco dentro da minha aplicação se já existe um tratamento para cada banco dentro do monitor. O ideal seria encontrar uma solução para tratar isso diretamente no monitor.

Editado por Fernando Amado
Postado (editado)

Usei como exemplo a razão social, mas isso ocorre com qualquer string que passe por um Copy/PadLeft/PadRight

A propria Razão social no banco do brasil 240 colunas é 40 e no Itau 400 colunas é 30 caracteres

Editado por Fernando Amado
Postado

opa..

como disso.. ja coloca no seu sistema para razao social, e endereco,bairro, complemento, nao ultrapassar os campos.. isso ira resolver seu problema

uma coisa que voce pode fazer tambem é tirar a acentuação antes de mandar para a remessa , ou já faça seus clientes nao digitarem as acentuações.

nos nossos sistemas, isso ja´é automatico. é tirado todas as acentuações e ç dos cadastros.

 

Postado

Amarildo,

   Como eu disse anteriormente fica difícil tratar direto na aplicação pois cada banco/layout tem uma quantidade de caracteres diferente, assim teríamos que criar um tratamento específico para cada banco dentro da aplicação, redundante já que  existe todo esse tratamento dentro do monitor.

   Quanto a enviar os dados sem acentuação, estou tendo uma rejeição do cliente com relação a isso, já que o banco aceita acentuação nos arquivos e no sistema antigo ele gerava os boletos com nomes acentuados.

   O ideal é conseguirmos uma solução para que funcione no monitor de forma correta e efetiva.

   Agradeço bastante sua ajuda e atenção.

   Seria legal se alguém aqui do fórum que tenha mais experiencia com o Lazarus pudesse ajudar, pois eu não tenho experiência na IDE, uso apenas para compilar e ajustar o Monitor, mas não tenho muita afinidade com a IDE, tendo alguém com mais experiencia nela para auxiliar provavelmente chegaremos a uma solução.

  • Moderadores
Postado

O problema com caracteres acentuados é causado por codificação incorreta.

Não tenho experiência com Lazarus mas que saiba ele sabe lidar melhor que o Delphi com codificações diversas.

Qual a codificação está sendo gerada para o arquivo TXT enviado para o ACBrMonitorPLUS?

Nas configurações do ACBrMonitorPLUS há a opção "ANSI" para que o arquivo seja lido nessa codificação se for o caso.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Moderadores
Postado

Boa tarde, anexe o arquivo txt que está passando para o ACBrMonitor, para verificação...

Para qual banco está gerando? Pois outro ponto é que alguns bancos aceita os arquivos apenas em Caixa Alta sem acento.

  • Curtir 2
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Boa tarde Senhores,

No monitor está sim marcado a opção "ANSI".

Faço o envio das informações por socket mas coloquei anexo o log do monitor para verificar.

Com relação ao banco utilizado estamos validando em 3 bancos, Banco do Brasil, Itau e Santander, os três bancos geram o mesmo problema na estrutura do arquivo.

Esse exemplo foi gerado para o banco Itaú 400 colunas.

 

PS: O cliente que está exigindo a acentuação é do banco do brasil

LOG.TXT

logboleto.txt

  • Moderadores
Postado
22 horas atrás, Fernando Amado disse:

Boa tarde Senhores,

No monitor está sim marcado a opção "ANSI".

Faço o envio das informações por socket mas coloquei anexo o log do monitor para verificar.

Com relação ao banco utilizado estamos validando em 3 bancos, Banco do Brasil, Itau e Santander, os três bancos geram o mesmo problema na estrutura do arquivo.

Esse exemplo foi gerado para o banco Itaú 400 colunas.

 

PS: O cliente que está exigindo a acentuação é do banco do brasil

LOG.TXT

logboleto.txt

Boa tarde Fernando,

Muita gente já utilizando o componente, principalmente com estes bancos mais conhecidos e não tem este tipo de problema, justamente por seguir o padrão geral: gerar  a Remessa em Caixa Alta sem Acento.

Procure seguir este padrão. Isso não interfere para o seu cliente visto que é informação para o Banco... A impressão do Boleto vai imprimir acentuada corretamente.

Vamos verificar a possibilidade de adicionar uma propriedade para gerar remessa sem acentuação, para facilitar o tratamento... Mas até o momento é necessário tratar isso no arquivo que a sua aplicação gera para o Monitor.

 

  • Curtir 2
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

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