From c33e02fb4c5db5c9b2e4c356c22d55131ff2d9ab Mon Sep 17 00:00:00 2001 From: Red S Date: Thu, 8 Feb 2024 23:25:38 -0800 Subject: [PATCH] feat: add identification based on filename to schwab importers --- .../importers/schwab/schwab_csv_brokerage.py | 5 +++++ .../importers/schwab/schwab_csv_checking.py | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/beancount_reds_importers/importers/schwab/schwab_csv_brokerage.py b/beancount_reds_importers/importers/schwab/schwab_csv_brokerage.py index 63ab8fa..b448808 100644 --- a/beancount_reds_importers/importers/schwab/schwab_csv_brokerage.py +++ b/beancount_reds_importers/importers/schwab/schwab_csv_brokerage.py @@ -1,5 +1,6 @@ """ Schwab Brokerage .csv importer.""" +import re from beancount_reds_importers.libreader import csvreader from beancount_reds_importers.libtransactionbuilder import investments @@ -51,6 +52,10 @@ def custom_init(self): 'Cash In Lieu': 'cash', } + def deep_identify(self, file): + last_three = self.config.get('account_number', '')[-3:] + return re.match(self.header_identifier, file.head()) and f'XX{last_three}' in file.name + def skip_transaction(self, ot): return ot.type in ['', 'Journal'] diff --git a/beancount_reds_importers/importers/schwab/schwab_csv_checking.py b/beancount_reds_importers/importers/schwab/schwab_csv_checking.py index d3132f4..7a3072c 100644 --- a/beancount_reds_importers/importers/schwab/schwab_csv_checking.py +++ b/beancount_reds_importers/importers/schwab/schwab_csv_checking.py @@ -30,6 +30,10 @@ def custom_init(self): } self.skip_transaction_types = ['Journal'] + def deep_identify(self, file): + last_three = self.config.get('account_number', '')[-3:] + return self.column_labels_line in file.head() and f'XX{last_three}' in file.name + def prepare_table(self, rdr): rdr = rdr.addfield('amount', lambda x: "-" + x['Withdrawal'] if x['Withdrawal'] != '' else x['Deposit'])