[gnucash-br] Github para melhor colaboração no programa que Exporta CVS da Fatura do Nubank

Danilo Freitas da Costa danfcosta em gmail.com
Sáb Fev 22 17:19:10 EST 2020


Olá Yulli, tudo bem?

Obrigado pelo interesse em contribuir.
Criei projeto no GitHub (meu primeiro):
https://github.com/danfcosta/nubankexporter
Farei depois um descritivo lá no readme!

Atenciosamente,

*Danilo Freitas da Costa*


On Sat, Feb 22, 2020 at 2:29 PM yulli dias <yulli.dias em hotmail.com> wrote:

> Boa tarde Danilo, tudo bem?
>
> Também sou uma usuário assidua do Nubank 💜 !!  Atualmente estou fazendo
> os lançamentos manualmente e tenho muito interesse um usar e contribuir com
> seu código. Que tal colocar no Github?
>
> Programo em python há 3 anos, acho que vou poder contribuir bastante! 😄
>
> Att,
>
> --
>
> Yulli Dias
>
> Graduanda em Engenharia de Computação - CEFET-MG
>
> yulli.dias em hotmail.com
>
> LinkedIn <https://www.linkedin.com/in/yullidias/>  GitHub
> <https://github.com/yullidias>  Lattes
> <http://lattes.cnpq.br/4604197134660281>
>
>
> ------------------------------
> *De:* gnucash-br <gnucash-br-bounces+yulli.dias=hotmail.com em gnucash.org>
> em nome de gnucash-br-request em gnucash.org <gnucash-br-request em gnucash.org>
> *Enviado:* sábado, 22 de fevereiro de 2020 14:00
> *Para:* gnucash-br em gnucash.org <gnucash-br em gnucash.org>
> *Assunto:* Digest gnucash-br, volume 122, assunto 3
>
> Enviar submissões para a lista de discussão gnucash-br para
>         gnucash-br em gnucash.org
>
> Para se cadastrar ou descadastrar via WWW, visite o endereço
>         https://lists.gnucash.org/mailman/listinfo/gnucash-br
> ou, via email, envie uma mensagem com a palavra 'help' no assunto ou
> corpo da mensagem para
>         gnucash-br-request em gnucash.org
>
> Você poderá entrar em contato com a pessoa que gerencia a lista pelo
> endereço
>         gnucash-br-owner em gnucash.org
>
> Quando responder, por favor edite sua linha Assunto assim ela será
> mais específica que "Re: Contents of gnucash-br digest..."
>
>
> Tópicos de Hoje:
>
>    1. Exportar CVS da Fatura do Nubank (usando pynubank)
>       (Danilo Freitas da Costa)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sat, 22 Feb 2020 02:02:34 -0300
> From: Danilo Freitas da Costa <danfcosta em gmail.com>
> To: Lista Gnucash-br <gnucash-br em gnucash.org>
> Subject: [gnucash-br] Exportar CVS da Fatura do Nubank (usando
>         pynubank)
> Message-ID:
>         <
> CAEvrNQV1pOqrT+1aSMKN8iv85bnEoCCMVU0rMRe-FS4dC-cd_Q em mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Pessoal,
>
> Eu sou um usuário assíduo do Nubank há vários anos, desde o "primeiro lote"
> de clientes.
>
> E nesse tempo todo eu faço sempre um trabalho manual de estruturar os
> registros para importar para o GnuCash. Eu faço esse trabalho sacal pelos
> seguintes motivos:
>
> 1) A cada fatura a data que aparece em uma compra, nem sempre é a dada do
> dia que ela realmente aconteceu. Numa compra a vista, aparece ou a data do
> mesmo dia ou do dia seguinte.
> 2) Quando a compra é parcelada, ele mostra a data em que foi processado
> naquele mês. Ou seja olhando para a fatura, você não faz ideia qual foi a
> data da compra.
> 3) Eu sempre formato o descritivo da compra para mostrar a Data +
> Descritivo + Parcela. Exemplo: 2020-02-08 - Estabelecimento XPTO (1/3)
>
> Então resolvi criar um script em python para fazer esse trabalho por mim e
> gerar um CSV.
>
> OBS: Tem muito tempo que não programo (pelo menos a lógica ainda está
> fresca). Meu conhecimento em Python tende a ZERO.
>
> Compartilho com vocês o script abaixo. Para os entendidos de python, favor
> não me esculhambar (ver OBS acima).
> Fiquem à vontade para incrementar e fazer os devidos tratamentos de erro
> (nem me preocupei com isso). Foco no MVP!
> Próximos passos, se eu tiver vontade (e saco), gerar OFX.
>
> # Monta arquivo CSV com extrato de fatura em formato CSV
> #
> # Cada linha do CSV possui
> # DATA = data da fatura, no formato YYYY-MM-DD
> # DESCRICAO = <DATA DA COMPRA> - <DESCRICAO> <(X/Y)>, onde:
> # <DATA DA COMPRA> = data original em que foi feita a compra
> # <DESCRICAO> = descritivo que vem na fatura (transacao)
> # <(X/Y)> = se a compra for parcelada, X é a parcela corrente e Y é o total
> de parcelas
> # Exemplo: 2020-02-08 - Estabelecimento XPTO (1/3)
> # VALOR = valor do item na fatura
> #
> # Exemplo de linha no CSV:
> # 2020-03-05;2020-02-08 - Estabelecimento XPTO (1/3);50,00
> #
> # Forma de uso
> # python extrato.py <CPF> <SENHA> <DATA NO FORMATO YYYY-MM-DD>
> #
> # Dependência do pynubank (versao 1.0.1 que dá suporte ao QRCode)
> # https://github.com/andreroggeri/pynubank/tree/1.0.1
>
> from pynubank.nubank import Nubank
>
> import sys
> import locale
> locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
>
> cpf = sys.argv[1]
> pwd = sys.argv[2]
> bill_date = sys.argv[3]
> output_file_path = 'COLOCAR O CAMINHO DO ARQUIVO CSV AQUI'
>
> #busca fatura com base em uma data
> def get_bill_by_date(bills, date):
> for b in bills:
> if b['summary']['due_date'] == date:
> return b
> return None
>
> #busca transacao com base no id (href)
> def get_transaction_by_id(transactions, id):
> for t in transactions:
> if t['href'] == id:
> return t
> return None
>
> #formata a descricao da transacao
> def get_formated_description(bill_item, transaction):
> description = '{} - {}'.format(transaction['time'][:10],
> bill_item['title'])
> if bi['charges'] > 1:
> description = description + ' ({}/{})'.format(bi['index'] + 1, bi['charges'
> ])
> return description
>
> nu = Nubank()
> uuid, qr_code = nu.get_qr_code()
> qr_code.print_ascii(invert=True)
> input('Após escanear o QRCode pressione enter para continuar')
>
> # Somente após escanear o QRCode você pode chamar a linha abaixo
> nu.authenticate_with_qr_code(cpf, pwd, uuid)
>
> #recupera as transacoes
> nubank_transactions = nu.get_card_statements()
>
> #recupera as faturas
> nubank_bills = nu.get_bills()
>
> #busca fatura com base em uma data
> nubank_bill = get_bill_by_date(nubank_bills, bill_date)
>
> #recupera os detalhes da fatura
> nubank_bill_details = nu.get_bill_details(nubank_bill)
>
> csv_output = open(output_file_path,'w')
> csv_output.write('DATA;DESCRICAO;VALOR')
>
> for bi in nubank_bill_details['bill']['line_items']:
> if 'href' in bi:
> t = get_transaction_by_id(nubank_transactions, bi['href'])
> row = '\n' + bill_date + ';'
> row += get_formated_description(bi, t) + ';'
> row += locale.currency(bi['amount'] / 100, grouping=True, symbol=None)
> csv_output.write(row)
>
> csv_output.close()
>
> Atenciosamente,
>
> *Danilo Freitas da Costa*
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://lists.gnucash.org/pipermail/gnucash-br/attachments/20200222/286bbb27/attachment-0001.html
> >
>
> ------------------------------
>
> Subject: Legenda do Digest
>
> _______________________________________________
> gnucash-br mailing list
> gnucash-br em gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-br
>
>
> ------------------------------
>
> Fim da Digest gnucash-br, volume 122, assunto 3
> ***********************************************
> _______________________________________________
> gnucash-br mailing list
> gnucash-br em gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-br
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://lists.gnucash.org/pipermail/gnucash-br/attachments/20200222/72767769/attachment.html>


Mais detalhes sobre a lista de discussão gnucash-br