annotate src/ofxstatement/plugins/us_hsbc/plugin.py @ 8:164da24a2997

Minor adjustments Made those changes a couple weeks ago, can't exactly remember why :s.
author Louis Opter <kalessin@kalessin.fr>
date Thu, 01 Dec 2016 17:14:11 -0800
parents 829eb62755b0
children 28548158a325
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
1 # Copyright (c) 2016, Louis Opter <louis@opter.org>
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
2 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
3 # This file is part of ofxstatement-us-hsbc.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
4 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
5 # ofxstatement-us-hsbc is free software: you can redistribute it and/or
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
6 # modify it under the terms of the GNU General Public License as
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
7 # published by the Free Software Foundation, either version 3 of the
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
8 # License, or (at your option) any later version.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
9 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
10 # ofxstatement-us-hsbc is distributed in the hope that it will be
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
11 # useful, but WITHOUT ANY WARRANTY; without even the implied warranty
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
12 # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
13 # GNU General Public License for more details.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
14 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
17
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
18 import contextlib
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
19 import csv
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
20 import datetime
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
21 import enum
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
22 import locale
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
23 import logging
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
24 import pdb
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
25 import sys
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
26
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
27 from decimal import Decimal, Decimal as D
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
28 from ofxstatement.parser import CsvStatementParser
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
29 from ofxstatement.plugin import Plugin
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
30 from ofxstatement.statement import StatementLine, generate_transaction_id
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
31 from typing import Any, Dict, Iterable, List
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
32 from typing.io import TextIO
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
33
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
34 from .record import CsvIndexes, Record
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
35 from .transactions import enrich
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
36
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
37
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
38 logger = logging.getLogger("ofxstatement.plugins.us_hsbc")
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
39
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
40
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
41 @contextlib.contextmanager
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
42 def _override_locale(category, value):
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
43 save = locale.getlocale(category)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
44 locale.setlocale(category, value)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
45 yield
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
46 locale.setlocale(category, save)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
47
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
48
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
49 class Parser(CsvStatementParser):
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
50
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
51 date_format = "%m/%d/%Y"
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
52
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
53 mappings: Dict[str, int] = {
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
54 "date": CsvIndexes.DATE.value,
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
55 "amount": CsvIndexes.AMOUNT.value,
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
56 }
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
57
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
58 _DESCRIPTION_PREFIX_TO_TRNTYPE: Dict[str, str] = {
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
59 "PURCHASE": "POS",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
60 "RETURN": "POS",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
61 "CASH WITHDRAWAL": "CASH",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
62 "CHECK": "CHECK",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
63 "CREDIT RECEIVED ON": "CREDIT",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
64 "MISCELLANEOUS CREDIT": "CREDIT",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
65 "CASH CONCENTRATION VENMO": "XFER",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
66 "DEPOSIT FROM": "DIRECTDEP",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
67 "DEPOSIT": "DEP",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
68 "INTEREST EARNED AND PAID": "INT",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
69 "ONLINE PAYMENT TO": "PAYMENT",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
70 "PAY TO": "PAYMENT",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
71 "PAYMENT -": "PAYMENT", # receiving a payment (e.g: on your CC account)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
72 "PAYMENT TO": "PAYMENT",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
73 "REBATE OF ATM SURCHARGE": "DEP",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
74 "SERVICE CHG": "SRVCHG",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
75 "ATM OR OTHER ELECTRONIC BANKING TRANSACTION": "ATM",
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
76 }
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
77
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
78 def __init__(self, fin: TextIO) -> None:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
79 super(Parser, self).__init__(fin)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
80
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
81 self.statement.currency = "USD"
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
82 self.statement.start_date = datetime.datetime.now() # timezones pls?
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
83 self.statement.end_date = self.statement.start_date
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
84
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
85 def split_records(self) -> Iterable[str]:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
86 return csv.reader(self.fin, delimiter=",", quotechar='"', strict=True)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
87
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
88 @classmethod
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
89 def _get_trntype(cls, record: Record) -> str:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
90 for prefix, trntype in cls._DESCRIPTION_PREFIX_TO_TRNTYPE.items():
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
91 if record.original_description.upper().startswith(prefix):
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
92 return trntype
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
93
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
94 if record.simple_description.upper() == "TRANSFER":
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
95 return "XFER"
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
96
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
97 logger.info(
8
164da24a2997 Minor adjustments
Louis Opter <kalessin@kalessin.fr>
parents: 7
diff changeset
98 "The transaction type for the following record couldn't be "
164da24a2997 Minor adjustments
Louis Opter <kalessin@kalessin.fr>
parents: 7
diff changeset
99 "determined and will default to OTHER: {}".format(record)
7
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
100 )
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
101
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
102 return "OTHER"
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
103
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
104 def parse_record(self, row: List[str]) -> StatementLine:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
105 if self.cur_record < 4: # starts at 1
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
106 logger.info("Skipping row: {}".format(row))
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
107 return None # skip (all) the csv headers
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
108
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
109 try:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
110 sl = super(Parser, self).parse_record(row)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
111 record = Record(row)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
112
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
113 if record.currency != "$":
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
114 logger.warning(
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
115 "Skipping record {} ({}) which doesn't appear to be in "
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
116 "USD".format(self.cur_record, ",".join(row))
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
117 )
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
118 return None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
119
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
120 sl.trntype = self._get_trntype(record)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
121 enrich(sl, record)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
122 sl.id = generate_transaction_id(sl)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
123
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
124 self.statement.start_date = min(sl.date, self.statement.start_date)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
125 self.statement.end_date = max(sl.date, self.statement.end_date)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
126 except Exception:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
127 logger.exception("Parsing failed:")
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
128 logger.info("Press {} to exit the debugger".format(
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
129 "^Z" if sys.platform.startswith("win32") else "^D"
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
130 ))
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
131 pdb.post_mortem()
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
132 sys.exit(1)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
133
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
134 return sl
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
135
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
136 @_override_locale(locale.LC_NUMERIC, "en_US")
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
137 def parse_decimal(self, value: str) -> Decimal:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
138 return D(locale.delocalize(value))
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
139
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
140
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
141 class HSBCUSAPlugin(Plugin):
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
142
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
143 DEFAULT_CHARSET = "latin1"
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
144
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
145 def get_parser(self, filename: str) -> Parser:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
146 encoding = self.settings.get("charset", HSBCUSAPlugin.DEFAULT_CHARSET)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
147
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
148 # XXX: how does this gets closed?
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
149 fin = open(filename, "r", encoding=encoding)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
150
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
151 parser = Parser(fin)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
152 parser.statement.bank_id = self.settings.get("routing_number")
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
153 parser.statement.account_id = self.settings.get("account_number")
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
154 parser.statement.account_type = self.settings.get("account_type", "CHECKING")
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
155
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
156 return parser