The code from my previous post in this thread, for the schwab csv importer
<https://github.com/redstreet/beancount_reds_importers/blob/master/beancount_reds_importers/schwab_csv/__init__.py>
ends up looking like the following. The code below minimally expresses the
semantics of the schwab csv format, leaving the heavy lifting to the
ofxread and investment modules.
from beancount_reds_importers.libimport import investments, csvreader
class Importer(investments.Importer, csvreader.Importer):
def custom_init(self):
self.max_rounding_error = 0.04
self.account_number_field = 'number'
self.filename_identifier_substring = '_Transactions_'
self.header_identifier = '"Transactions for account ' +
self.config.get('custom_header', '')
self.get_ticker_info = self.get_ticker_info_from_id
self.date_format = '%m/%d/%Y'
self.skip_head_rows = 1
self.skip_tail_rows = 1
self.funds_db_txt = 'funds_by_ticker'
self.header_map = {
"Action": 'type',
"Date": 'date',
"tradeDate": 'tradeDate',
"Description": 'memo',
"Symbol": 'security',
"Quantity": 'units',
"Price": 'unit_price',
"Amount": 'amount',
"total": 'total',
"Fees & Comm": 'fees',
}
self.transaction_type_map = {
'Bank Interest': 'income',
'Buy': 'buystock',
'Cash Dividend': 'dividends',
'MoneyLink Transfer': 'transfer',
'Reinvest Dividend': 'dividends',
'Reinvest Shares': 'buystock',
'Sell': 'sellstock',
}
self.skip_transaction_types = ['Journal']
def prepare_raw_columns(self, rdr):
rdr = rdr.cutout('') # clean up last column
def cleanup_date(d):
"""'11/16/2018 as of 11/15/2018' --> '11/16/2018'"""
return d.split(' ', 1)[0]
rdr = rdr.convert('Date', cleanup_date)
rdr = rdr.addfield('tradeDate', lambda x: x['Date'])
rdr = rdr.addfield('total', lambda x: x['Amount'])
return rdr
--
You received this message because you are subscribed to the Google Groups
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beancount/c7c57e27-12da-4b10-8f1e-6a32c744c1f6n%40googlegroups.com.