odoo-brazil/odoo-brazil-banking

Erro no Tamanho do registro

crsilveira opened this issue · 9 comments

Usuário digitou "⁠⁠⁠n°60" no campo número, isto fez com que a linha gerada no arquivo de remessa ficasse com um caracter a menos: 239.

@crsilveira. Pode me dizer em que ponto, commit, está sua lib PyCNAB e o odoo-brazil-banking?
Aqui ocorre apenas no segmento P. Headers, trailers e segmento Q aparentemente estão normais.

@crsilveira. Detectei esse erro na emissão do Bradesco também. Para o Bradesco, já corrigi.
No Itaú não achei ainda. Em qual segmento se encontra o erro?

Não tive tempo pra ver onde acontece o problema ainda.

Por aqui está resolvido.

Fernando como vc resolveu, pois eu acho q a solução seria limpar caracteres "estranhos" antes de enviar para o CNAB ?

A limpeza de caracteres estranhos é uma boa. Pode inclusive evitar problemas na hora da validação do banco. Acho que o melhor lugar pra implementar isso é na lib.
Meu erro era com a especificação do json. No segmento P, um campo estava terminando no caracter 55 e o outro começando no 65, então eu tinha um gap de 11 dígitos aqui que não apareciam no segmento P, mas isso era pra outro banco. Pro Itaú eu não consegui reproduzir seu erro, meus segmentos vieram normais.

Entendi, eu tive este problema no campo Número, e também probema com o tamanho do campo Bairro (se não me engano no Cnab é somente 15 caracteres) ...

A lib trata quando o campo vem com informações menores que o permitido, mas não quando elas vêm maiores.
Eu acabei tratando quando as strings vêm maiores aqui: https://github.com/kmee/PyCNAB/blob/develop/cnab240/registro.py#L35

Estou me virando assim, tratando os tamanhos no odoo.

'sacado_nome': line.partner_id.legal_name[:30],
'sacado_endereco': (
line.partner_id.street[:35] + ',' + line.partner_id.number),
'sacado_bairro': line.partner_id.district[:15],
'sacado_cep': int(prefixo),
'sacado_cep_sufixo': int(sulfixo),
'sacado_cidade': line.partner_id.l10n_br_city_id.name[:15],