odoo-brazil / odoo-brazil-banking

Framework Bancário Brasileiro Odoo
GNU Affero General Public License v3.0
16 stars 35 forks source link

Erro no Tamanho do registro #24

Closed crsilveira closed 8 years ago

crsilveira commented 8 years ago

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.

fernandomr commented 8 years ago

@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.

fernandomr commented 8 years ago

@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?

crsilveira commented 8 years ago

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

fernandomr commented 8 years ago

Por aqui está resolvido.

crsilveira commented 8 years ago

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

fernandomr commented 8 years ago

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.

crsilveira commented 8 years ago

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) ...

fernandomr commented 8 years ago

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

crsilveira commented 8 years ago

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],