josecoelho / bbvisa2ofx

Este software converte o extrato de cartão de crédito, no formato txt gerado através do site do Banco do Brasil, para o formato OFX.
Apache License 2.0
17 stars 8 forks source link

Fitid ignorado pelo Gnucash em transações repetidas de cartão #12

Open LeoFCardoso opened 9 years ago

LeoFCardoso commented 9 years ago

Alguém sabe qual é o limite do GnuCash para considerar o FITID no arquivo OFX? Neste mês, o Gnucash ignorou uma transação corretamente gerada pelo BBVisa2OFX:

OTHER 20150213 -90.76 20150113-90.76TOK&STOKPARC02/05RIODEJANEI TOK & STOK PARC 02/05 RIO DE JANEI DT ORIG: 13/01

Quando eu manualmente inverti o FITID, colocando o nome da parcela em primeiro lugar, então a transação passou a ser reconhecida pelo Gnucash.

TOK&STOKPARC02/0520150113-90.76RIODEJANEI

Se eu gero o OFX pela opção nativa do BB (que não faz contas de dólar), o seguinte valor é gerado para esta mesma transação.

PAYMENT 20150113 -90.76 20150113<>0000000013 TOK & STOK PARC 02/05 RIO DE JANEI

O que acham de inverter a ordem na linha 134 do txtparser?

obj['fitid'] = (obj['date'] + str(obj['value']) + obj['desc']).replace(' ','')

viraria

obj['fitid'] = (obj['desc'] + obj['date'] + str(obj['value'])).replace(' ','')

Sds Leonardo

LeoFCardoso commented 9 years ago

Investiguei mais um pouco e a falha parece estar relacionada com a existência de um "&" no FITID.

A sugestão para a nova linha 134 seria então:

obj['fitid'] = (obj['date'] + str(obj['value']) + obj['desc']).translate(None, ' /&')

ou, se importar hashlib, pode-se gerar um MD5 da string acima, para tentar evitar colisões e falhas com outros caracteres problemáticos.

obj['fitid'] = (obj['date'] + str(obj['value']) + obj['desc']).translate(None, ' /&') m = hashlib.md5() m.update(obj['fitid']) obj['fitid'] = m.hexdigest() #md5 do fitid gerado

O que acham?

josecoelho commented 8 years ago

Dae @LeoFCardoso estava olhando as issue aqui e só agora que vi esta em aberto. Continua tendo o problema? Podemos ajustar... Desculpa não ter olhado antes.

LeoFCardoso commented 8 years ago

Oi @josecoelho , minha instalação local está funcionando com o fix que coloquei no comentário acima (com o uso do hashlib). O bug ocorre quando o FITID contém um "&". Abraço!

LeoFCardoso commented 6 years ago

Apliquei este fix no meu fork: https://github.com/LeoFCardoso/bbvisa2ofx