romuloceccon / finance-quote-brazil

Gnucash/Finance::Quote modules to fetch prices of Brazilian stocks, bonds and mutual funds
MIT License
15 stars 2 forks source link

Importando transações do Tesouro Direto #4

Closed guitorres closed 4 years ago

guitorres commented 4 years ago

Primeiro, agradeço o @romuloceccon por disponibilizar esses módulos, foi de grande ajuda. Esse issue não se trata de um problema.

Apenas compartilhando o código que fiz (talvez seja útil para alguém) para importar várias transações que precisava cadastrar nos papeis do TD. Estava realmente incomodado e com preguiça de cadastrar 62 operações manualmente. Então dei uma olhada em como importar esses dados e encontrei o https://github.com/sdementen/piecash

Como faz tempo mexi com isso, posso estar esquecendo algumas coisas:

import piecash
from decimal import *
import datetime

# open a GnuCash Book
book = piecash.open_book("guitorres.gnucash", readonly=False)
froma = book.get(piecash.Account, name="Renda Fixa")

import csv
with open('td.csv', 'rt') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
    for row in spamreader:
        to = book.get(piecash.Account, name=row[15])
        value = Decimal(row[3].replace(',', '.'))
        quantity = Decimal(row[1].replace(',', '.'))
        memo = row[4]
        data = datetime.datetime.strptime(row[0], '%d/%m/%Y')

        piecash.Transaction(
                currency=froma.commodity,
                post_date=data.date(),
                enter_date=datetime.datetime.now(),
                description=memo,
                splits=[
                    piecash.Split(account=froma, value=-value),
                    piecash.Split(account=to, value=value, quantity=quantity),
        ])
book.save()

Exemplo de 1 linha:

24/06/2015,"0,17","6914,8","1175,51","SELIC + 0,00%","SELIC + 0,00%","45,88","1714,88",1408,15,"80,9",0,"1,43",0,"1632,55",Tesouro Selic 2021