diff --git a/weboob/tools/capabilities/bank/transactions.py b/weboob/tools/capabilities/bank/transactions.py index 5a0a7a4cff9f22fca4eccf0901d9e8f65bef8291..b008b5c2b81be3d6ac10624a650673d256164e2f 100644 --- a/weboob/tools/capabilities/bank/transactions.py +++ b/weboob/tools/capabilities/bank/transactions.py @@ -66,7 +66,24 @@ def set_amount(self, credit='', debit=''): else: self.amount = Decimal('0') - def parse(self, date, raw): + def parse_date(self, date): + if date is None: + return NotAvailable + + if not isinstance(date, (datetime.date, datetime.datetime)): + if date.isdigit() and len(date) == 8: + date = datetime.date(int(date[4:8]), int(date[2:4]), int(date[0:2])) + elif '/' in date: + date = datetime.date(*reversed([int(x) for x in date.split('/')])) + if not isinstance(date, (datetime.date, datetime.datetime)): + self._logger.warning('Unable to parse date %r' % date) + date = NotAvailable + elif date.year < 100: + date = date.replace(year=2000 + date.year) + + return date + + def parse(self, date, raw, vdate=None): """ Parse date and raw strings to create datetime.date objects, determine the type of transaction, and create a simplified label @@ -87,19 +104,9 @@ def parse(self, date, raw): * category: part of label representing the category * yy, mm, dd, HH, MM: date and time parts """ - if not isinstance(date, (datetime.date, datetime.datetime)): - if date.isdigit() and len(date) == 8: - date = datetime.date(int(date[4:8]), int(date[2:4]), int(date[0:2])) - elif '/' in date: - date = datetime.date(*reversed([int(x) for x in date.split('/')])) - if not isinstance(date, (datetime.date, datetime.datetime)): - self._logger.warning('Unable to parse date %r' % date) - date = NotAvailable - elif date.year < 100: - date = date.replace(year=2000 + date.year) - - self.date = date - self.rdate = date + self.date = self.parse_date(date) + self.vdate = self.parse_date(vdate) + self.rdate = self.date self.raw = to_unicode(raw.replace(u'\n', u' ').strip()) self.category = NotAvailable