From 4a6063383af427c07a71ac8ddef8b5d4f242065d Mon Sep 17 00:00:00 2001 From: Kerrick Staley Date: Sun, 31 Dec 2023 12:17:21 -0500 Subject: [PATCH 1/2] Add BANK_INTEREST_ADJ and BANK_TRANSFER actions --- beancount_import/source/schwab_csv.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/beancount_import/source/schwab_csv.py b/beancount_import/source/schwab_csv.py index 6a976460..68dfb731 100644 --- a/beancount_import/source/schwab_csv.py +++ b/beancount_import/source/schwab_csv.py @@ -154,6 +154,8 @@ class BrokerageAction(enum.Enum): # Please keep these alphabetized: ADR_MGMT_FEE = "ADR Mgmt Fee" BANK_INTEREST = "Bank Interest" + BANK_INTEREST_ADJ = "Bank Interest Adj" + BANK_TRANSFER = "Bank Transfer" BOND_INTEREST = "Bond Interest" BUY = "Buy" BUY_TO_CLOSE = "Buy to Close" @@ -370,7 +372,8 @@ def get_processed_entry( BrokerageAction.SECURITY_TRANSFER, BrokerageAction.WIRE_FUNDS, BrokerageAction.WIRE_FUNDS_RECEIVED, - BrokerageAction.FUNDS_RECEIVED): + BrokerageAction.FUNDS_RECEIVED, + BrokerageAction.BANK_TRANSFER): return Transfer(**shared_attrs) if self.action in (BrokerageAction.SELL, BrokerageAction.SELL_TO_OPEN, @@ -420,7 +423,9 @@ def get_processed_entry( return Fee(fees_account=fees_account, **shared_attrs) if self.action == BrokerageAction.FOREIGN_TAX_PAID: return TaxPaid(taxes_account=taxes_account, **shared_attrs) - if self.action == BrokerageAction.MARGIN_INTEREST or self.action == BrokerageAction.CREDIT_INTEREST: + if self.action in (BrokerageAction.MARGIN_INTEREST, + BrokerageAction.CREDIT_INTEREST, + BrokerageAction.BANK_INTEREST_ADJ): return Interest(interest_account=interest_account, **shared_attrs) if self.action == BrokerageAction.EXPIRED: assert self.quantity is not None From b05ccb664a5e73d31e56eece690e6321b2d480a2 Mon Sep 17 00:00:00 2001 From: Kerrick Staley Date: Sun, 31 Dec 2023 12:28:56 -0500 Subject: [PATCH 2/2] Add golden tests --- .../test_basic/import_results.beancount | 64 +++++++++++++++++++ ...Brokerage_Transactions_20201115-180021.CSV | 4 ++ 2 files changed, 68 insertions(+) diff --git a/testdata/source/schwab_csv/test_basic/import_results.beancount b/testdata/source/schwab_csv/test_basic/import_results.beancount index 8d1a2301..110e6dcb 100644 --- a/testdata/source/schwab_csv/test_basic/import_results.beancount +++ b/testdata/source/schwab_csv/test_basic/import_results.beancount @@ -941,3 +941,67 @@ schwab_action: "Short Term Cap Gain Reinvest" source_desc: "ISHARES GLOBAL CLEAN ENERGY ETF" Income:Dividend:Schwab:ICLN -2.11 USD + +;; date: 2023-10-26 +;; info: {"filename": "/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV", "line": 23, "type": "text/csv"} + +; features: [ +; { +; "amount": "-101.01 USD", +; "date": "2023-10-26", +; "key_value_pairs": { +; "desc": "OVERDRAFT TO INVESTOR CHECKING 5678", +; "schwab_action": "Bank Transfer" +; }, +; "source_account": "Assets:Schwab:Brokerage-1234:Cash" +; } +; ] +2023-10-26 * "TRANSFER - OVERDRAFT TO INVESTOR CHECKING 5678" + Assets:Schwab:Brokerage-1234:Cash -101.01 USD + date: 2023-10-26 + schwab_action: "Bank Transfer" + source_desc: "OVERDRAFT TO INVESTOR CHECKING 5678" + Expenses:FIXME 101.01 USD + +;; date: 2023-10-29 +;; info: {"filename": "/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV", "line": 24, "type": "text/csv"} + +; features: [ +; { +; "amount": "-202.02 USD", +; "date": "2023-10-29", +; "key_value_pairs": { +; "desc": "OVERDRAFT TO INVESTOR CHECKING 5678", +; "schwab_action": "Bank Transfer" +; }, +; "source_account": "Assets:Schwab:Brokerage-1234:Cash" +; } +; ] +2023-10-29 * "TRANSFER - OVERDRAFT TO INVESTOR CHECKING 5678" + Assets:Schwab:Brokerage-1234:Cash -202.02 USD + date: 2023-10-29 + schwab_action: "Bank Transfer" + source_desc: "OVERDRAFT TO INVESTOR CHECKING 5678" + Expenses:FIXME 202.02 USD + +;; date: 2023-10-30 +;; info: {"filename": "/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV", "line": 25, "type": "text/csv"} + +; features: [] +2023-10-30 * "Margin Interest - INTEREST 09/28THRU 10/29" + Assets:Schwab:Brokerage-1234:Cash -0.15 USD + date: 2023-10-30 + schwab_action: "Margin Interest" + source_desc: "INTEREST 09/28THRU 10/29" + Income:Interest:Schwab 0.15 USD + +;; date: 2023-10-31 +;; info: {"filename": "/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV", "line": 26, "type": "text/csv"} + +; features: [] +2023-10-31 * "Bank Interest Adj - BANK INA 103023-103023 SCHWAB BANK" + Assets:Schwab:Brokerage-1234:Cash -0.01 USD + date: 2023-10-31 + schwab_action: "Bank Interest Adj" + source_desc: "BANK INA 103023-103023 SCHWAB BANK" + Income:Interest:Schwab 0.01 USD diff --git a/testdata/source/schwab_csv/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV b/testdata/source/schwab_csv/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV index 8d197626..0769383b 100644 --- a/testdata/source/schwab_csv/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV +++ b/testdata/source/schwab_csv/test_basic/transactions/Brokerage_Transactions_20201115-180021.CSV @@ -21,4 +21,8 @@ "04/20/2022","Pr Yr Div Reinvest","ICLN","ISHARES GLOBAL CLEAN ENERGY ETF","","","","$2.11", "04/21/2022","Long Term Cap Gain Reinvest","ICLN","ISHARES GLOBAL CLEAN ENERGY ETF","","","","$2.11", "04/22/2022","Short Term Cap Gain Reinvest","ICLN","ISHARES GLOBAL CLEAN ENERGY ETF","","","","$2.11", +"10/26/2023","Bank Transfer","","OVERDRAFT TO INVESTOR CHECKING 5678","","","","-$101.01", +"10/30/2023 as of 10/29/2023","Bank Transfer","","OVERDRAFT TO INVESTOR CHECKING 5678","","","","-$202.02", +"10/30/2023","Margin Interest","","INTEREST 09/28THRU 10/29","","","","-$0.15", +"10/31/2023","Bank Interest Adj","","BANK INA 103023-103023 SCHWAB BANK","","","","-$0.01", Transactions Total,"","","","","","",$0.00