diff --git a/pytest.ini b/pytest.ini
new file mode 100644
index 0000000..1b8d5f9
--- /dev/null
+++ b/pytest.ini
@@ -0,0 +1,12 @@
+[pytest]
+env =
+ D:DB_HOST=''
+ D:DB_PORT=1
+ D:DB_NAME=''
+
+mongodb_fixture_dir =
+ src/tests/mongo_fixtures
+
+mongodb_fixtures =
+ imported_transactions
+ accounts
\ No newline at end of file
diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/converter.py b/src/converter.py
similarity index 74%
rename from converter.py
rename to src/converter.py
index d8ed547..169ac41 100644
--- a/converter.py
+++ b/src/converter.py
@@ -16,7 +16,7 @@ import time
import watchdog.events
import watchdog.observers
-DATE_FORMAT = "%d/%m/%Y"
+MB_DATE_FORMAT = "%d/%m/%Y"
if 'WATCH_DIR' in os.environ:
WATCH_DIR = os.environ['WATCH_DIR']
@@ -34,20 +34,41 @@ MONGO_COL = 'imported_transactions'
ACCOUNT_COL = 'accounts'
MONGO_URL = "mongodb://{}:{}".format(MONGO_URL, MONGO_PORT)
-myclient = pymongo.MongoClient(MONGO_URL)
-mydb = myclient[MONGO_DB]
-mongo_col = mydb[MONGO_COL]
-account_col = mydb[ACCOUNT_COL]
logging.basicConfig(format='%(asctime)s - %(message)s', level=logging.INFO)
logging.basicConfig(format='ERROR: %(asctime)s - %(message)s', level=logging.ERROR)
class Handler(watchdog.events.PatternMatchingEventHandler):
- def __init__(self):
+ mydb = None
+
+ def __init__(self, mongo_db=None):
# Set the patterns for PatternMatchingEventHandler
watchdog.events.PatternMatchingEventHandler.__init__(self, patterns=['*.qfx'],
ignore_directories=True, case_sensitive=False)
+
+ if mongo_db is None:
+ myclient = pymongo.MongoClient(MONGO_URL)
+ mydb = myclient[MONGO_DB]
+ else:
+ self.mydb = mongo_db
+
+ #mongo_col = mydb[MONGO_COL]
+ #account_col = mydb[ACCOUNT_COL]
+ @staticmethod
+ def line_to_moneybrilliant(line):
+ return {
+ 'date': line['date'].strftime(MB_DATE_FORMAT),
+ 'memo' : line['memo'],
+ 'category': 'Uncategorised',
+ 'amount': line['amount'],
+ 'name': line['name']
+ }
+
+ @staticmethod
+ def line_to_mmex(line):
+ return ''
+
@staticmethod
def write_csv(statement, out_file):
logging.info("Writing: " + out_file)
@@ -62,11 +83,27 @@ class Handler(watchdog.events.PatternMatchingEventHandler):
f.write("\r\n")
writer = DictWriter(f, fieldnames=fields)
for line in statement:
- writer.writerow(line)
+ writer.writerow(Handler.line_to_moneybrilliant(line))
+
@staticmethod
- def transaction_exists(line):
- existing_trans = mongo_col.find_one(line)
+ def write_mmex(statement, outfile):
+ logging.info("Writing: " + out_file)
+
+ if len(statement) == 0:
+ logging.info("No transactions to write.")
+ return
+
+ fields = ['date', 'payee', 'amount', 'category', 'subcategory', 'number', 'notes']
+ with open(out_file, 'w') as f:
+ f.write("Date,Payee,Amount,Category,Sub Category,Number,Notes")
+ f.write("\r\n")
+ writer = DictWriter(f, fieldnames=fields)
+ for line in statement:
+ writer.writerow(line)
+
+ def transaction_exists(self, line):
+ existing_trans = self.mydb[MONGO_COL].find_one(line)
return existing_trans is not None
@@ -87,10 +124,9 @@ class Handler(watchdog.events.PatternMatchingEventHandler):
return dict_item
- @staticmethod
- def get_statement_from_qfx(qfx):
+ def get_statement_from_qfx(self, qfx):
- account = account_col.find_one({"number": qfx.account.number})
+ account = self.mydb[ACCOUNT_COL].find_one({"number": qfx.account.number})
if account is None:
logging.error("No account for account number {} exists. Create one and re-process the file".format(qfx.account.number))
@@ -101,21 +137,25 @@ class Handler(watchdog.events.PatternMatchingEventHandler):
continue
line = {
- 'date': transaction.date.strftime(DATE_FORMAT),
+ 'id': transaction.id,
+ 'date': transaction.date,#.strftime(DATE_FORMAT),
'memo' : transaction.memo,
- 'category': 'Uncategorised',
+ #'category': 'Uncategorised',
'amount': transaction.amount,
- 'name': account['name']
+ 'name': account['name'],
+ 'payee': transaction.payee,
+ 'type': transaction.type
}
- #mongo needs the decimal values in Decimal128, so create a version for it
- line_d128 = Handler.convert_decimal(line.copy())
- if Handler.transaction_exists(line_d128):
+ #mongo needs the decimal values in Decimal128, so create a version for it
+ line_d128 = self.convert_decimal(line.copy())
+
+ if self.transaction_exists(line_d128):
continue
statement.append(line)
- result = mongo_col.insert_one(line_d128)
+ result = self.mydb[MONGO_COL].insert_one(line_d128)
logging.info("New db entry stored: {}".format(result.inserted_id))
return statement, account['name']
diff --git a/src/tests/__init__.py b/src/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/tests/mongo_fixtures/accounts.yaml b/src/tests/mongo_fixtures/accounts.yaml
new file mode 100644
index 0000000..aad545a
--- /dev/null
+++ b/src/tests/mongo_fixtures/accounts.yaml
@@ -0,0 +1,7 @@
+-
+ number: 123456 123456789
+ name: Account 1
+
+-
+ number: 123457 123456780
+ name: Account 2
diff --git a/src/tests/mortgageTrans.qfx b/src/tests/mortgageTrans.qfx
new file mode 100644
index 0000000..4536b14
--- /dev/null
+++ b/src/tests/mortgageTrans.qfx
@@ -0,0 +1,114 @@
+OFXHEADER:100
+DATA:OFXSGML
+VERSION:102
+SECURITY:NONE
+ENCODING:USASCII
+CHARSET:1252
+COMPRESSION:NONE
+OLDFILEUID:NONE
+NEWFILEUID:NONE
+
+
+
+
+
+ 0
+ INFO
+
+ 20220114064514
+
+ ENG
+
+ A Bank
+ 12345
+
+ 12345
+ XXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+
+
+ 0
+
+ 0
+ INFO
+
+
+ AUD
+
+ 000000001
+ 123457 123456780
+ CREDITLINE
+
+
+
+
+
+ CREDIT
+ 20220114
+ 20220114
+ 2680.93
+ 202201400001
+ TRANSFER
+ FROM 000-000000-000 AUD IB1508519 INTERNET BANKING
+
+
+ CREDIT
+ 20220111
+ 20220111
+ 409.26
+ 202201100001
+ TRANSFER
+ Loan Payment From: 000-000000-000 TO: 101-576544-258 ZAL101795 SYSTEM GENERATED
+
+
+ CREDIT
+ 20220111
+ 20220111
+ 1086.41
+ 202201100002
+ TRANSFER
+ FROM 000-000000-000 AUD IB0205258 INTERNET BANKING
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 1173.71
+ 202200600001
+ TRANSFER
+ FROM 000-000000-000 AUD IB1305543 INTERNET BANKING
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 628.81
+ 202200600002
+ TRANSFER
+ FROM 000-000000-000 AUD IB1004824 INTERNET BANKING
+
+
+ DEBIT
+ 20220104
+ 20220104
+ -399440.42
+ 202200400001
+ TRANSFER
+ BANKING TERMINAL (UBT
+
+
+
+ -393461.30
+ 20220114064514
+
+
+
+ 5979.12
+ 20220114064514
+
+
+
+
+
+
diff --git a/src/tests/sampleTrans1.qfx b/src/tests/sampleTrans1.qfx
new file mode 100644
index 0000000..2e4d4af
--- /dev/null
+++ b/src/tests/sampleTrans1.qfx
@@ -0,0 +1,789 @@
+OFXHEADER:100
+DATA:OFXSGML
+VERSION:102
+SECURITY:NONE
+ENCODING:USASCII
+CHARSET:1252
+COMPRESSION:NONE
+OLDFILEUID:NONE
+NEWFILEUID:NONE
+
+
+
+
+
+ 0
+ INFO
+
+ 20220118225636
+
+ ENG
+
+ Bank 1
+ 000000
+
+ 000000
+ XXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+
+
+ 0
+
+ 0
+ INFO
+
+
+ AUD
+
+ 000000001
+ 123456 123456789
+ MST
+
+
+ 20211221
+ 20220119
+
+ DEBIT
+ 20220118
+ 20220118
+ -35.10
+ 202201800001
+ PENDING: Guzman y Gomez
+ Augustine Hei A960 ATM
+
+
+ CREDIT
+ 20220118
+ 20220118
+ 0.70
+ 202201800002
+ PENDING: 2% Cashback - Enjoy
+ Guzman y Gomez ATM
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -127.75
+ 202201800003
+ PENDING: 1300 SMILES LTD
+ SPRINGFIELD L A960 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -0.01
+ 202201700001
+ PENDING: PAYPAL
+ 4029357733 A960 ATM
+
+
+ DEBIT
+ 20220116
+ 20220116
+ -0.01
+ 202201600001
+ PENDING: GOOGLE *TEMPORARY HOLD
+ g.co/helppay# A960 ATM
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -0.01
+ 202201100001
+ PENDING: RAINBOW MUSIC
+ +61417957568 A960 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 1.04
+ 202201900001
+ 2% CASHBACK - ENJOY
+ GOLDEN PRAWN 15JAN22 619377 18:41:21 2% Cashback - Enjoy 619377 BONGAREE 36 8316 Z@MF16897 SYSTEM GENERATED
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.12
+ 202201900002
+ 2% CASHBACK - ENJOY
+ GOLDEN PRAWN 15JAN22 316718 18:47:54 2% Cashback - Enjoy 316718 BONGAREE 36 8316 Z@MF16895 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -52.20
+ 202201900003
+ GOLDEN PRAWN
+ 19JAN22 ATMA896 08:27:13 8316 VISA AUD GOLDEN PRAWN 619377 BONGAREE AU A88843015 ATM
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -6.00
+ 202201900004
+ GOLDEN PRAWN
+ 19JAN22 ATMA896 08:27:13 8316 VISA AUD GOLDEN PRAWN 316718 BONGAREE AU A88843014 ATM
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -38.95
+ 202201900005
+ PAYPAL *OZSALEPTYLI
+ 19JAN22 ATMA896 08:01:37 8316 VISA AUD PAYPAL *OZSALEPTYLI 637484 4029357733 AU A88826216 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.33
+ 202201900006
+ 2% CASHBACK - ENJOY
+ PASHELL PTY LTD 15JAN22 612537 12:37:17 2% Cashback - Enjoy 612537 BONGAREE 36 8313 Z@MF07258 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -16.50
+ 202201900007
+ PASHELL PTY LTD
+ 19JAN22 ATMA896 07:50:25 8313 VISA AUD PASHELL PTY LTD 612537 BONGAREE AU A88818248 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.78
+ 202201900008
+ 2% CASHBACK - ENJOY
+ MCDONALDS IPSWICH CBD 16JAN22 121470 13:07:09 2% Cashback - Enjoy 121470 IPSWICH 36 8313 Z@MF05798 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -39.25
+ 202201900009
+ MCDONALDS IPSWICH CBD
+ 19JAN22 ATMA896 07:47:49 8313 VISA AUD MCDONALDS IPSWICH CBD 121470 IPSWICH AU A88814498 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.49
+ 202201900010
+ 2% CASHBACK - ENJOY
+ SCOOPY'S FAMILY CAFE 15JAN22 113492 17:55:19 2% Cashback - Enjoy 113492 BONGAREE 36 8316 Z@MF01573 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -24.70
+ 202201900011
+ SCOOPY'S FAMILY CAFE
+ 19JAN22 ATMA896 07:35:17 8316 VISA AUD SCOOPY'S FAMILY CAFE 113492 BONGAREE AU A88803426 ATM
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -409.26
+ 202201800001
+ TRANSFER
+ Loan Payment From: 000-000000-000 TO: 000-000000-001 ZAL102098 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -31.80
+ 202201800002
+ PAYPAL *EBAY AU
+ 18JAN22 ATMA896 08:41:03 8316 VISA AUD PAYPAL *EBAY AU 630721 4029357733 AU A88825889 ATM
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -14.99
+ 202201800003
+ PAYPAL *EBAY AU
+ 18JAN22 ATMA896 08:40:46 8316 VISA AUD PAYPAL *EBAY AU 125007 4029357733 AU A88825446 ATM
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -16.89
+ 202201800004
+ HUNGRY JACKS
+ 18JAN22 ATMA896 07:33:30 8316 VISA AUD Hungry Jacks 826946 Springfield AU A88803533 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 1.71
+ 202201700001
+ 2% CASHBACK - ENJOY
+ WOOLWORTHS/SPRINGFIELD P 16JAN22 628920 15:13:10 2% Cashback - Enjoy 628920 SPRINGFI 36 8313 Z@MF96719 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -85.71
+ 202201700002
+ WOOLWORTHS/SPRINGFIELD P
+ 17JAN22 ATMA896 09:08:49 8313 VISA AUD WOOLWORTHS/SPRINGFIELD P 628920ASPRINGFIELD AU A88849865 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -50.00
+ 202201700003
+ PAYPAL *WCI INT AU
+ 17JAN22 ATMA896 08:53:08 8316 VISA AUD PAYPAL *WCI INT AU 512078 4029357733 AU A88815885 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.34
+ 202201700004
+ 2% CASHBACK - ENJOY
+ SPRINGFIELD LAKE BAK 14JAN22 696107 09:58:40 2% Cashback - Enjoy 696107 SPRINGFI 36 8313 Z@MF54064 SYSTEM GENERATED
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.90
+ 202201700005
+ 2% CASHBACK - ENJOY
+ ALDI STORES - SPRINGFI 13JAN22 274552 09:40:26 2% Cashback - Enjoy 274552 SPRINGFI 36 8313 Z@MF54063 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -17.00
+ 202201700006
+ SPRINGFIELD LAKE BAK
+ 16JAN22 ATMA896 08:28:15 8313 VISA AUD SPRINGFIELD LAKE BAK 696107 SPRINGFIELD LAU A88842807 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -45.09
+ 202201700007
+ ALDI STORES - SPRINGFI
+ 16JAN22 ATMA896 08:28:15 8313 VISA AUD ALDI STORES - SPRINGFI 274552 SPRINGFIELD AU A88842806 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.57
+ 202201700008
+ 2% CASHBACK - ENJOY
+ WOOLWORTHS/GOODWIN DR & 15JAN22 107268 12:33:50 2% Cashback - Enjoy 107268 BRIBIE I 36 8316 Z@MF37374 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -28.69
+ 202201700009
+ WOOLWORTHS/GOODWIN DR &
+ 16JAN22 ATMA896 07:26:34 8316 VISA AUD WOOLWORTHS/GOODWIN DR & 107268HBRIBIE ISLANDAU A88897768 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.98
+ 202201700010
+ 2% CASHBACK - ENJOY
+ SPRINGER LOW VOLTAGE 15JAN22 RINGER 11:15:35 2% Cashback - Enjoy 999999 LAWNTON 36 8316 Z@MF31151 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -49.00
+ 202201700011
+ SPRINGER LOW VOLTAGE
+ 15JAN22 002422 11:15:35 8316 EFTPOS SPRINGER LOW VOLTAGE LAWNTON AU A88828243 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 1.57
+ 202201700012
+ 2% CASHBACK - ENJOY
+ COLES 4533 14JAN22 802693 16:25:16 2% Cashback - Enjoy 802693 SPRINGFI 36 8313 Z@MF25759 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -78.70
+ 202201700013
+ COLES 4533
+ 15JAN22 ATMA896 09:09:11 8313 VISA AUD COLES 4533 802693 SPRINGFIELD AU A88871150 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -371.06
+ 202201700014
+ TRANSFER
+ TO 000-000000-000 Loan INTERNET BANKING
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -1047.22
+ 202201700015
+ TRANSFER
+ TO 00-000000-000 Loan INTERNET BANKING
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -23.15
+ 202201400001
+ ALDI STORES - DARRA
+ 14JAN22 127196 18:39:44 8316 EFTPOS ALDI STORES - DARRA DARRA AU A88892226 ATM
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -2680.93
+ 202201400002
+ TRANSFER
+ TO 000-000000-000 IB1508519 INTERNET BANKING
+
+
+ CREDIT
+ 20220114
+ 20220114
+ 4519.71
+ 202201400003
+ TRANSFER
+ PaySYSTEM GENERATED
+
+
+ CREDIT
+ 20220114
+ 20220114
+ 0.95
+ 202201400004
+ 2% CASHBACK - ENJOY
+ OFP PTY LTD 13JAN22 585252 09:07:49 2% Cashback - Enjoy 585252 SPRINGFI 36 8313 Z@MF23729 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -47.50
+ 202201400005
+ OFP PTY LTD
+ 14JAN22 ATMA896 08:52:21 8313 VISA AUD OFP PTY LTD 585252 SPRINGFIELD CAU A88863534 ATM
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -111.15
+ 202201400006
+ 7-ELEVEN 4079
+ 14JAN22 ATMA896 08:46:15 8316 VISA AUD 7-ELEVEN 4079 448002 JINDALEE AU A88856728 ATM
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -675.00
+ 202201300001
+ RAINBOW MUSIC
+ 13JAN22 ATMA896 08:49:41 8313 VISA AUD RAINBOW MUSIC 866033 SPRINGFIELD LAU A88871114 ATM
+
+
+ CREDIT
+ 20220113
+ 20220113
+ 1.09
+ 202201300002
+ 2% CASHBACK - ENJOY
+ PETBARN 13JAN22 TBARN 09:49:36 2% Cashback - Enjoy 999999 SPRINGFI 36 8313 Z@MF20235 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -54.39
+ 202201300003
+ PETBARN
+ 13JAN22 013366 09:49:36 8313 EFTPOS PETBARN SPRINGFIELD CAU A88816881 ATM
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -474.90
+ 202201300004
+ ADEL TRAILER HIRE
+ 13JAN22 ATMA896 08:29:33 8316 VISA AUD ADEL TRAILER HIRE 863776 GLENGOWRIE AU A88847532 ATM
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -16.49
+ 202201300005
+ PAYPAL *SUPERCHEAP
+ 13JAN22 ATMA896 07:51:21 8316 VISA AUD PAYPAL *SUPERCHEAP 659085 4029357733 AU A88827581 ATM
+
+
+ CREDIT
+ 20220112
+ 20220112
+ 0.22
+ 202201200001
+ 2% CASHBACK - ENJOY
+ SPINGFIELD D/N PHARMA 12JAN22 INGFIE 21:05:14 2% Cashback - Enjoy 999999 Springfi 36 8316 Z@MF40585 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220112
+ 20220112
+ -10.99
+ 202201200002
+ SPINGFIELD D/N PHARMA
+ 12JAN22 107246 21:05:14 8316 EFTPOS SPINGFIELD D/N PHARMA Springfield AU A88898388 ATM
+
+
+ CREDIT
+ 20220112
+ 20220112
+ 0.84
+ 202201200003
+ 2% CASHBACK - ENJOY
+ COLES 4533 11JAN22 866854 18:40:32 2% Cashback - Enjoy 866854 SPRINGFI 36 8316 Z@MF33176 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220112
+ 20220112
+ -42.20
+ 202201200001
+ COLES 4533
+ 12JAN22 ATMA896 09:14:05 8316 VISA AUD COLES 4533 866854 SPRINGFIELD AU A88884369 ATM
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -409.26
+ 202201100001
+ TRANSFER
+ Loan Payment From: 000-000000-000 TO: 000-000000-001 ZAL101795 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -1086.41
+ 202201100002
+ TRANSFER
+ TO 000-000000-000 IB0205258 INTERNET BANKING
+
+
+ CREDIT
+ 20220111
+ 20220111
+ 1724.85
+ 202201100003
+ TRANSFER
+ 0000000 Payroll Acco 000000 Z@LC04991 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -111.35
+ 202201100004
+ WOOLWORTHS/SPRINGFIELD P
+ 11JAN22 ATMA896 09:15:14 8313 VISA AUD WOOLWORTHS/SPRINGFIELD P 855223ASPRINGFIELD AU A88887965 ATM
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -26.00
+ 202201100005
+ AFTERPAY
+ 11JAN22 ATMA896 08:25:58 8316 VISA AUD Afterpay 410015 afterpay.com AU A88829480 ATM
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -99.00
+ 202201000001
+ TRANSFER
+ AUSSIE BROADBAND
+
+
+ CREDIT
+ 20220110
+ 20220110
+ 0.68
+ 202201000002
+ 2% CASHBACK - ENJOY
+ SPRINGFIELD LAKE BAK 08JAN22 827190 13:50:10 2% Cashback - Enjoy 827190 SPRINGFI 36 8313 Z@MF73432 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -33.75
+ 202201000003
+ SPRINGFIELD LAKE BAK
+ 10JAN22 ATMA896 09:55:44 8313 VISA AUD SPRINGFIELD LAKE BAK 827190 SPRINGFIELD LAU A88892952 ATM
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -173.68
+ 202201000004
+ WOOLWORTHS/SPRINGFIELD P
+ 08JAN22 ATMA896 09:11:44 8313 VISA AUD WOOLWORTHS/SPRINGFIELD P 308996ASPRINGFIELD AU A88869052 ATM
+
+
+ CREDIT
+ 20220110
+ 20220110
+ 0.64
+ 202201000005
+ 2% CASHBACK - ENJOY
+ FOREST LKE DRUG STORE 05JAN22 591481 15:37:09 2% Cashback - Enjoy 591481 FOREST L 36 8313 Z@MF15821 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -31.98
+ 202201000006
+ FOREST LKE DRUG STORE
+ 08JAN22 ATMA896 08:53:44 8313 VISA AUD FOREST LKE DRUG STORE 591481 FOREST LAKE AU A88844754 ATM
+
+
+ CREDIT
+ 20220110
+ 20220110
+ 0.36
+ 202201000007
+ 2% CASHBACK - ENJOY
+ KAISERCRAFT PTY LTD 05JAN22 454947 16:26:14 2% Cashback - Enjoy 454947 NORTH IP 36 8313 Z@MF03993 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -17.99
+ 202201000008
+ KAISERCRAFT PTY LTD
+ 08JAN22 ATMA896 07:43:44 8313 VISA AUD KAISERCRAFT PTY LTD 454947 NORTH IPSWICHAU A88815486 ATM
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -22.65
+ 202201000009
+ BUDGET DIRECT
+ 08JAN22 ATMA896 07:39:53 VISA AUD BUDGET DIRECT TOOWONG AU ATM
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -49.25
+ 202201000010
+ HUNGRY JACKS
+ 08JAN22 ATMA896 07:36:03 VISA AUD Hungry Jacks 508403 Springfield AU A88804914 ATM
+
+
+ CREDIT
+ 20220107
+ 20220107
+ 0.32
+ 202200700001
+ 2% CASHBACK - ENJOY
+ SPOTLIGHT \SPRI 07JAN22 OTLIGH 11:34:29 2% Cashback - Enjoy 999999 GFIELD 36 8313 Z@MF33325 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220107
+ 20220107
+ -16.00
+ 202200700002
+ SPOTLIGHT \SPRI
+ 07JAN22 127038 11:34:29 8313 EFTPOS SPOTLIGHT \SPRI NGFIELD AU A88828477 ATM
+
+
+ CREDIT
+ 20220107
+ 20220107
+ 1.20
+ 202200700003
+ 2% CASHBACK - ENJOY
+ MR TOYS 05JAN22 785391 16:21:49 2% Cashback - Enjoy 785391 IPSWICH 36 8313 Z@MF02726 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220107
+ 20220107
+ -59.99
+ 202200700004
+ MR TOYS
+ 07JAN22 ATMA896 07:34:02 8313 VISA AUD MR TOYS 785391 IPSWICH AU A88808421 ATM
+
+
+ DEBIT
+ 20220106
+ 20220106
+ -1173.71
+ 202200600001
+ TRANSFER
+ TO 000-000-000 IB1305543 INTERNET BANKING
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 1173.40
+ 202200600002
+ TRANSFER
+ WAGES SYSTEM GENERATED
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 0.13
+ 202200600003
+ TRANSFER
+ 1017781448571 PAYPAL AUSTRALIA 0756483 Z@LC11302 SYSTEM GENERATED
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 0.18
+ 202200600004
+ TRANSFER
+ 1017781448572 PAYPAL AUSTRALIA 0756482 Z@LC11301 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220106
+ 20220106
+ -628.81
+ 202200600005
+ TRANSFER
+ TO 000-000-000 IB1004824 INTERNET BANKING
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 0.62
+ 202200600006
+ 2% CASHBACK - ENJOY
+ WOOLWORTHS/PINE ST & THE 05JAN22 890305 16:35:10 2% Cashback - Enjoy 890305 IPSWICH 36 8313 Z@MF14627 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220106
+ 20220106
+ -30.76
+ 202200600007
+ WOOLWORTHS/PINE ST & THE
+ 06JAN22 ATMA896 08:04:01 8313 VISA AUD WOOLWORTHS/PINE ST & THE 890305 IPSWICH AU A88838793 ATM
+
+
+ CREDIT
+ 20220105
+ 20220105
+ 6160.46
+ 202200500001
+ TRANSFER
+ Savings Transfer Z@LC04023 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220105
+ 20220105
+ -1280.00
+ 202200500002
+ FROSTEEZ
+ 05JAN22 002584 11:07:56 8316 EFTPOS FROSTEEZ DURACK AU A88824667 ATM
+
+
+ CREDIT
+ 20220104
+ 20220104
+ 5000.00
+ 202200400001
+ TRANSFER
+ Fund Transfer SYSTEM GENERATED
+
+
+ CREDIT
+ 20220104
+ 20220104
+ 768.49
+ 202200400002
+ TRANSFER
+ 1592204 PEXA217198219D04 0667142 Z@LC09127 SYSTEM GENERATED
+
+
+
+ 7562.67
+ 20220118225636
+
+
+
+ 7399.79
+ 20220118225636
+
+
+
+
+
+
diff --git a/src/tests/sampleTrans2.qfx b/src/tests/sampleTrans2.qfx
new file mode 100644
index 0000000..0928130
--- /dev/null
+++ b/src/tests/sampleTrans2.qfx
@@ -0,0 +1,825 @@
+OFXHEADER:100
+DATA:OFXSGML
+VERSION:102
+SECURITY:NONE
+ENCODING:USASCII
+CHARSET:1252
+COMPRESSION:NONE
+OLDFILEUID:NONE
+NEWFILEUID:NONE
+
+
+
+
+
+ 0
+ INFO
+
+ 20220120234820
+
+ ENG
+
+ Bank 1
+ 00000
+
+ 00000
+ XXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+
+
+ 0
+
+ 0
+ INFO
+
+
+ AUD
+
+ 000000001
+ 123456 123456789
+ MST
+
+
+ 20211223
+ 20220121
+
+ DEBIT
+ 20220120
+ 20220120
+ -60.00
+ 202202000001
+ PENDING: Brisbane Manly
+ Newstead A960 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -0.01
+ 202201700001
+ PENDING: PAYPAL
+ 4029357733 A960 ATM
+
+
+ DEBIT
+ 20220116
+ 20220116
+ -0.01
+ 202201600001
+ PENDING: GOOGLE *TEMPORARY HOLD
+ g.co/helppay# A960 ATM
+
+
+ CREDIT
+ 20220121
+ 20220121
+ 0.36
+ 202202100001
+ 2% CASHBACK - ENJOY
+ ORION FRUIT MARKET 20JAN22 444687 17:49:15 2% Cashback - Enjoy 444687 SPRINGFI 36 8313 Z@MF26916 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220121
+ 20220121
+ -17.98
+ 202202100002
+ ORION FRUIT MARKET
+ 21JAN22 ATMA896 08:51:15 8313 VISA AUD ORION FRUIT MARKET 444687 SPRINGFIELD AU A88872440 ATM
+
+
+ DEBIT
+ 20220121
+ 20220121
+ -236.83
+ 202202100003
+ WOOLWORTHS/SPRINGFIELD P
+ 21JAN22 ATMA896 07:24:10 8313 VISA AUD WOOLWORTHS/SPRINGFIELD P 271578ASPRINGFIELD AU A88809128 ATM
+
+
+ CREDIT
+ 20220120
+ 20220120
+ 1173.41
+ 202202000001
+ TRANSFER
+ WAGES SYSTEM GENERATED
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.70
+ 202201900001
+ 2% CASHBACK - ENJOY
+ Guzman y Gomez 18JAN22 558820 20:06:25 2% Cashback - Enjoy 558820 Augustin 36 8313 Z@MF40743 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -35.10
+ 202201900002
+ GUZMAN Y GOMEZ
+ 19JAN22 ATMA896 09:25:07 8313 VISA AUD Guzman y Gomez 558820 Augustine HeiAU A88803378 ATM
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -127.75
+ 202201900003
+ 1300 SMILES LTD
+ 19JAN22 ATMA896 09:18:34 8316 VISA AUD 1300 SMILES LTD 345787 SPRINGFIELD LAU A88875645 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 1.04
+ 202201900004
+ 2% CASHBACK - ENJOY
+ GOLDEN PRAWN 15JAN22 619377 18:41:21 2% Cashback - Enjoy 619377 BONGAREE 36 8316 Z@MF16897 SYSTEM GENERATED
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.12
+ 202201900005
+ 2% CASHBACK - ENJOY
+ GOLDEN PRAWN 15JAN22 316718 18:47:54 2% Cashback - Enjoy 316718 BONGAREE 36 8316 Z@MF16895 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -52.20
+ 202201900006
+ GOLDEN PRAWN
+ 19JAN22 ATMA896 08:27:13 8316 VISA AUD GOLDEN PRAWN 619377 BONGAREE AU A88843015 ATM
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -6.00
+ 202201900007
+ GOLDEN PRAWN
+ 19JAN22 ATMA896 08:27:13 8316 VISA AUD GOLDEN PRAWN 316718 BONGAREE AU A88843014 ATM
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -38.95
+ 202201900008
+ PAYPAL *OZSALEPTYLI
+ 19JAN22 ATMA896 08:01:37 8316 VISA AUD PAYPAL *OZSALEPTYLI 637484 4029357733 AU A88826216 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.33
+ 202201900009
+ 2% CASHBACK - ENJOY
+ PASHELL PTY LTD 15JAN22 612537 12:37:17 2% Cashback - Enjoy 612537 BONGAREE 36 8313 Z@MF07258 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -16.50
+ 202201900010
+ PASHELL PTY LTD
+ 19JAN22 ATMA896 07:50:25 8313 VISA AUD PASHELL PTY LTD 612537 BONGAREE AU A88818248 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.78
+ 202201900011
+ 2% CASHBACK - ENJOY
+ MCDONALDS IPSWICH CBD 16JAN22 121470 13:07:09 2% Cashback - Enjoy 121470 IPSWICH 36 8313 Z@MF05798 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -39.25
+ 202201900012
+ MCDONALDS IPSWICH CBD
+ 19JAN22 ATMA896 07:47:49 8313 VISA AUD MCDONALDS IPSWICH CBD 121470 IPSWICH AU A88814498 ATM
+
+
+ CREDIT
+ 20220119
+ 20220119
+ 0.49
+ 202201900013
+ 2% CASHBACK - ENJOY
+ SCOOPY'S FAMILY CAFE 15JAN22 113492 17:55:19 2% Cashback - Enjoy 113492 BONGAREE 36 8316 Z@MF01573 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220119
+ 20220119
+ -24.70
+ 202201900014
+ SCOOPY'S FAMILY CAFE
+ 19JAN22 ATMA896 07:35:17 8316 VISA AUD SCOOPY'S FAMILY CAFE 113492 BONGAREE AU A88803426 ATM
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -409.26
+ 202201800001
+ TRANSFER
+ Loan Payment From: 000-000000-000 TO: 000-000000-000 ZAL102098 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -31.80
+ 202201800002
+ PAYPAL *EBAY AU
+ 18JAN22 ATMA896 08:41:03 8316 VISA AUD PAYPAL *EBAY AU 630721 4029357733 AU A88825889 ATM
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -14.99
+ 202201800003
+ PAYPAL *EBAY AU
+ 18JAN22 ATMA896 08:40:46 8316 VISA AUD PAYPAL *EBAY AU 125007 4029357733 AU A88825446 ATM
+
+
+ DEBIT
+ 20220118
+ 20220118
+ -16.89
+ 202201800004
+ HUNGRY JACKS
+ 18JAN22 ATMA896 07:33:30 8316 VISA AUD Hungry Jacks 826946 Springfield AU A88803533 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 1.71
+ 202201700001
+ 2% CASHBACK - ENJOY
+ WOOLWORTHS/SPRINGFIELD P 16JAN22 628920 15:13:10 2% Cashback - Enjoy 628920 SPRINGFI 36 8313 Z@MF96719 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -85.71
+ 202201700002
+ WOOLWORTHS/SPRINGFIELD P
+ 17JAN22 ATMA896 09:08:49 8313 VISA AUD WOOLWORTHS/SPRINGFIELD P 628920ASPRINGFIELD AU A88849865 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -50.00
+ 202201700003
+ PAYPAL *WCI INT AU
+ 17JAN22 ATMA896 08:53:08 8316 VISA AUD PAYPAL *WCI INT AU 512078 4029357733 AU A88815885 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.34
+ 202201700004
+ 2% CASHBACK - ENJOY
+ SPRINGFIELD LAKE BAK 14JAN22 696107 09:58:40 2% Cashback - Enjoy 696107 SPRINGFI 36 8313 Z@MF54064 SYSTEM GENERATED
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.90
+ 202201700005
+ 2% CASHBACK - ENJOY
+ ALDI STORES - SPRINGFI 13JAN22 274552 09:40:26 2% Cashback - Enjoy 274552 SPRINGFI 36 8313 Z@MF54063 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -17.00
+ 202201700006
+ SPRINGFIELD LAKE BAK
+ 16JAN22 ATMA896 08:28:15 8313 VISA AUD SPRINGFIELD LAKE BAK 696107 SPRINGFIELD LAU A88842807 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -45.09
+ 202201700007
+ ALDI STORES - SPRINGFI
+ 16JAN22 ATMA896 08:28:15 8313 VISA AUD ALDI STORES - SPRINGFI 274552 SPRINGFIELD AU A88842806 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.57
+ 202201700008
+ 2% CASHBACK - ENJOY
+ WOOLWORTHS/GOODWIN DR & 15JAN22 107268 12:33:50 2% Cashback - Enjoy 107268 BRIBIE I 36 8316 Z@MF37374 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -28.69
+ 202201700009
+ WOOLWORTHS/GOODWIN DR &
+ 16JAN22 ATMA896 07:26:34 8316 VISA AUD WOOLWORTHS/GOODWIN DR & 107268HBRIBIE ISLANDAU A88897768 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 0.98
+ 202201700010
+ 2% CASHBACK - ENJOY
+ SPRINGER LOW VOLTAGE 15JAN22 RINGER 11:15:35 2% Cashback - Enjoy 999999 LAWNTON 36 8316 Z@MF31151 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -49.00
+ 202201700011
+ SPRINGER LOW VOLTAGE
+ 15JAN22 002422 11:15:35 8316 EFTPOS SPRINGER LOW VOLTAGE LAWNTON AU A88828243 ATM
+
+
+ CREDIT
+ 20220117
+ 20220117
+ 1.57
+ 202201700012
+ 2% CASHBACK - ENJOY
+ COLES 4533 14JAN22 802693 16:25:16 2% Cashback - Enjoy 802693 SPRINGFI 36 8313 Z@MF25759 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -78.70
+ 202201700013
+ COLES 4533
+ 15JAN22 ATMA896 09:09:11 8313 VISA AUD COLES 4533 802693 SPRINGFIELD AU A88871150 ATM
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -371.06
+ 202201700014
+ TRANSFER
+ TO 000-000000-000 Loan INTERNET BANKING
+
+
+ DEBIT
+ 20220117
+ 20220117
+ -1047.22
+ 202201700015
+ TRANSFER
+ TO 000-000000-000 Loan INTERNET BANKING
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -23.15
+ 202201400001
+ ALDI STORES - DARRA
+ 14JAN22 127196 18:39:44 8316 EFTPOS ALDI STORES - DARRA DARRA AU A88892226 ATM
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -2680.93
+ 202201400002
+ TRANSFER
+ TO 000-000000-000 INTERNET BANKING
+
+
+ CREDIT
+ 20220114
+ 20220114
+ 4519.71
+ 202201400003
+ TRANSFER
+ Pay SYSTEM GENERATED
+
+
+ CREDIT
+ 20220114
+ 20220114
+ 0.95
+ 202201400004
+ 2% CASHBACK - ENJOY
+ OFP PTY LTD 13JAN22 585252 09:07:49 2% Cashback - Enjoy 585252 SPRINGFI 36 8313 Z@MF23729 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -47.50
+ 202201400005
+ OFP PTY LTD
+ 14JAN22 ATMA896 08:52:21 8313 VISA AUD OFP PTY LTD 585252 SPRINGFIELD CAU A88863534 ATM
+
+
+ DEBIT
+ 20220114
+ 20220114
+ -111.15
+ 202201400006
+ 7-ELEVEN 4079
+ 14JAN22 ATMA896 08:46:15 8316 VISA AUD 7-ELEVEN 4079 448002 JINDALEE AU A88856728 ATM
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -675.00
+ 202201300001
+ RAINBOW MUSIC
+ 13JAN22 ATMA896 08:49:41 8313 VISA AUD RAINBOW MUSIC 866033 SPRINGFIELD LAU A88871114 ATM
+
+
+ CREDIT
+ 20220113
+ 20220113
+ 1.09
+ 202201300002
+ 2% CASHBACK - ENJOY
+ PETBARN 13JAN22 TBARN 09:49:36 2% Cashback - Enjoy 999999 SPRINGFI 36 8313 Z@MF20235 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -54.39
+ 202201300003
+ PETBARN
+ 13JAN22 013366 09:49:36 8313 EFTPOS PETBARN SPRINGFIELD CAU A88816881 ATM
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -474.90
+ 202201300004
+ ADEL TRAILER HIRE
+ 13JAN22 ATMA896 08:29:33 8316 VISA AUD ADEL TRAILER HIRE 863776 GLENGOWRIE AU A88847532 ATM
+
+
+ DEBIT
+ 20220113
+ 20220113
+ -16.49
+ 202201300001
+ PAYPAL *SUPERCHEAP
+ 13JAN22 ATMA896 07:51:21 8316 VISA AUD PAYPAL *SUPERCHEAP 659085 4029357733 AU A88827581 ATM
+
+
+ CREDIT
+ 20220112
+ 20220112
+ 0.22
+ 202201200001
+ 2% CASHBACK - ENJOY
+ SPINGFIELD D/N PHARMA 12JAN22 INGFIE 21:05:14 2% Cashback - Enjoy 999999 Springfi 36 8316 Z@MF40585 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220112
+ 20220112
+ -10.99
+ 202201200002
+ SPINGFIELD D/N PHARMA
+ 12JAN22 107246 21:05:14 8316 EFTPOS SPINGFIELD D/N PHARMA Springfield AU A88898388 ATM
+
+
+ CREDIT
+ 20220112
+ 20220112
+ 0.84
+ 202201200003
+ 2% CASHBACK - ENJOY
+ COLES 4533 11JAN22 866854 18:40:32 2% Cashback - Enjoy 866854 SPRINGFI 36 8316 Z@MF33176 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220112
+ 20220112
+ -42.20
+ 202201200004
+ COLES 4533
+ 12JAN22 ATMA896 09:14:05 8316 VISA AUD COLES 4533 866854 SPRINGFIELD AU A88884369 ATM
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -409.26
+ 202201100001
+ TRANSFER
+ Loan Payment From: 000-000000-000 TO: 000-000000-000 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -1086.41
+ 202201100002
+ TRANSFER
+ TO 000-000000-000 INTERNET BANKING
+
+
+ CREDIT
+ 20220111
+ 20220111
+ 1724.85
+ 202201100003
+ TRANSFER
+ PayrollSYSTEM GENERATED
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -111.35
+ 202201100004
+ WOOLWORTHS/SPRINGFIELD P
+ 11JAN22 ATMA896 09:15:14 8313 VISA AUD WOOLWORTHS/SPRINGFIELD P 855223ASPRINGFIELD AU A88887965 ATM
+
+
+ DEBIT
+ 20220111
+ 20220111
+ -26.00
+ 202201100005
+ AFTERPAY
+ 11JAN22 ATMA896 08:25:58 8316 VISA AUD Afterpay 410015 afterpay.com AU A88829480 ATM
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -99.00
+ 202201000001
+ TRANSFER
+ AUSSIE BROADBAND SYSTEM GENERATED
+
+
+ CREDIT
+ 20220110
+ 20220110
+ 0.68
+ 202201000002
+ 2% CASHBACK - ENJOY
+ SPRINGFIELD LAKE BAK 08JAN22 827190 13:50:10 2% Cashback - Enjoy 827190 SPRINGFI 36 8313 Z@MF73432 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -33.75
+ 202201000003
+ SPRINGFIELD LAKE BAK
+ 10JAN22 ATMA896 09:55:44 8313 VISA AUD SPRINGFIELD LAKE BAK 827190 SPRINGFIELD LAU A88892952 ATM
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -173.68
+ 202201000004
+ WOOLWORTHS/SPRINGFIELD P
+ 08JAN22 ATMA896 09:11:44 8313 VISA AUD WOOLWORTHS/SPRINGFIELD P 308996ASPRINGFIELD AU A88869052 ATM
+
+
+ CREDIT
+ 20220110
+ 20220110
+ 0.64
+ 202201000005
+ 2% CASHBACK - ENJOY
+ FOREST LKE DRUG STORE 05JAN22 591481 15:37:09 2% Cashback - Enjoy 591481 FOREST L 36 8313 Z@MF15821 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -31.98
+ 202201000006
+ FOREST LKE DRUG STORE
+ 08JAN22 ATMA896 08:53:44 8313 VISA AUD FOREST LKE DRUG STORE 591481 FOREST LAKE AU A88844754 ATM
+
+
+ CREDIT
+ 20220110
+ 20220110
+ 0.36
+ 202201000007
+ 2% CASHBACK - ENJOY
+ KAISERCRAFT PTY LTD 05JAN22 454947 16:26:14 2% Cashback - Enjoy 454947 NORTH IP 36 8313 Z@MF03993 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -17.99
+ 202201000008
+ KAISERCRAFT PTY LTD
+ 08JAN22 ATMA896 07:43:44 8313 VISA AUD KAISERCRAFT PTY LTD 454947 NORTH IPSWICHAU A88815486 ATM
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -22.65
+ 202201000009
+ BUDGET DIRECT
+ AUD BUDGET DIRECT
+
+
+ DEBIT
+ 20220110
+ 20220110
+ -49.25
+ 202201000010
+ HUNGRY JACKS
+ 08JAN22 ATMA896 07:36:03 8316 VISA AUD Hungry Jacks 508403 Springfield AU A88804914 ATM
+
+
+ CREDIT
+ 20220107
+ 20220107
+ 0.32
+ 202200700001
+ 2% CASHBACK - ENJOY
+ SPOTLIGHT \SPRI 07JAN22 OTLIGH 11:34:29 2% Cashback - Enjoy 999999 GFIELD 36 8313 Z@MF33325 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220107
+ 20220107
+ -16.00
+ 202200700002
+ SPOTLIGHT \SPRI
+ 07JAN22 127038 11:34:29 8313 EFTPOS SPOTLIGHT \SPRI NGFIELD AU A88828477 ATM
+
+
+ CREDIT
+ 20220107
+ 20220107
+ 1.20
+ 202200700003
+ 2% CASHBACK - ENJOY
+ MR TOYS 05JAN22 785391 16:21:49 2% Cashback - Enjoy 785391 IPSWICH 36 8313 Z@MF02726 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220107
+ 20220107
+ -59.99
+ 202200700004
+ MR TOYS
+ 07JAN22 ATMA896 07:34:02 8313 VISA AUD MR TOYS 785391 IPSWICH AU A88808421 ATM
+
+
+ DEBIT
+ 20220106
+ 20220106
+ -1173.71
+ 202200600001
+ TRANSFER
+ TO 000-000000-000 INTERNET BANKING
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 1173.40
+ 202200600002
+ TRANSFER
+ WAGES SYSTEM GENERATED
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 0.13
+ 202200600003
+ TRANSFER
+ PAYPAL AUSTRALIA Z@LC11302 SYSTEM GENERATED
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 0.18
+ 202200600004
+ TRANSFER
+ PAYPAL AUSTRALIA SYSTEM GENERATED
+
+
+ DEBIT
+ 20220106
+ 20220106
+ -628.81
+ 202200600005
+ TRANSFER
+ TO 000-000000-000 IB1004824 INTERNET BANKING
+
+
+ CREDIT
+ 20220106
+ 20220106
+ 0.62
+ 202200600006
+ 2% CASHBACK - ENJOY
+ WOOLWORTHS/PINE ST & THE 05JAN22 890305 16:35:10 2% Cashback - Enjoy 890305 IPSWICH 36 8313 Z@MF14627 SYSTEM GENERATED
+
+
+ DEBIT
+ 20220106
+ 20220106
+ -30.76
+ 202200600007
+ WOOLWORTHS/PINE ST & THE
+ 06JAN22 ATMA896 08:04:01 8313 VISA AUD WOOLWORTHS/PINE ST & THE 890305 IPSWICH AU A88838793 ATM
+
+
+ CREDIT
+ 20220105
+ 20220105
+ 6160.46
+ 202200500001
+ TRANSFER
+ Savings Transfer SYSTEM GENERATED
+
+
+ DEBIT
+ 20220105
+ 20220105
+ -1280.00
+ 202200500002
+ FROSTEEZ
+ 05JAN22 002584 11:07:56 8316 EFTPOS FROSTEEZ DURACK AU A88824667 ATM
+
+
+ CREDIT
+ 20220104
+ 20220104
+ 5000.00
+ 202200400001
+ TRANSFER
+ Fund Transfer SYSTEM GENERATED
+
+
+ CREDIT
+ 20220104
+ 20220104
+ 768.49
+ 202200400002
+ TRANSFER
+ SYSTEM GENERATED
+
+
+
+ 8319.48
+ 20220120234820
+
+
+
+ 8259.46
+ 20220120234820
+
+
+
+
+
+
diff --git a/src/tests/test_converter.py b/src/tests/test_converter.py
new file mode 100644
index 0000000..7c959ee
--- /dev/null
+++ b/src/tests/test_converter.py
@@ -0,0 +1,45 @@
+from ..converter import Handler
+
+from pathlib import Path
+from ofxparse import OfxParser
+from datetime import datetime
+from decimal import Decimal, getcontext
+
+import os
+
+class TestConverter:
+ def test_get_statement_from_qfx(self, mongodb):
+
+ test_file = Path(os.getcwd()) / 'src' / 'tests' / 'sampleTrans1.qfx'
+
+ with open(test_file, 'r') as file:
+ qfx = OfxParser.parse(file, fail_fast=False)
+
+ handler = Handler(mongodb)
+
+ statement, account = handler.get_statement_from_qfx(qfx)
+
+ assert account == 'HSBC Everyday Global'
+ assert len(statement) == mongodb['imported_transactions'].find({}).count()
+
+
+ def test_line_to_moneybrilliant(self):
+ samples = [
+ {'id': '202201900001', 'date': '20220119', 'memo': 'GOLDEN PRAWN 15JAN22... GENERATED', 'amount': 1.04, 'name': 'HSBC Everyday Global', 'payee': '2% CASHBACK - ENJOY', 'type': 'credit'},
+ {'id': '202201900003', 'date': '20220119', 'memo': '19JAN22 ATMA896 08:2...843015 ATM', 'amount': -52.20, 'name': 'HSBC Everyday Global', 'payee': 'GOLDEN PRAWN', 'type': 'debit'},
+ {'id': '202201400001', 'date': '20220114', 'memo': '14JAN22 127196 18:3...892226 ATM', 'amount': -23.15, 'name': 'HSBC Everyday Global', 'payee': 'ALDI STORES - DARRA', 'type': 'debit'}
+ ]
+
+ sample = samples[0]
+ sample['date'] = datetime.strptime(sample['date'], "%Y%m%d")
+ sample['amount'] = round(Decimal(sample['amount']), 2)
+ result = Handler.line_to_moneybrilliant(sample)
+
+ assert len(result) == 5
+ assert result['date'] == '19/01/2022'
+ assert result['memo'] == 'GOLDEN PRAWN 15JAN22... GENERATED'
+ assert result['category'] == 'Uncategorised'
+ assert result['amount'] == Decimal('1.04')
+ assert result['name'] == 'HSBC Everyday Global'
+
+