diff --git a/modules/ing/api/accounts_page.py b/modules/ing/api/accounts_page.py
index fd91e8225b7806ef8bbebbd1126b99adb7dbdafb..f3dccbda911b0f482e90572b82add63f23a41613 100644
--- a/modules/ing/api/accounts_page.py
+++ b/modules/ing/api/accounts_page.py
@@ -19,13 +19,31 @@
from __future__ import unicode_literals
+import re
+
from weboob.browser.pages import LoggedPage, JsonPage
from weboob.browser.elements import method, DictElement, ItemElement
from weboob.browser.filters.json import Dict
from weboob.browser.filters.standard import (
- CleanText, CleanDecimal, Date, Eval,
+ CleanText, CleanDecimal, Date, Eval, Lower, Format, Field,
)
-from weboob.capabilities.bank import Account, Transaction
+from weboob.capabilities.bank import Account
+from weboob.tools.capabilities.bank.transactions import FrenchTransaction
+
+
+class Transaction(FrenchTransaction):
+ PATTERNS = [(re.compile(u'^retrait dab (?P
\d{2})/(?P\d{2})/(?P\d{4}) (?P.*)'), FrenchTransaction.TYPE_WITHDRAWAL),
+ # Withdrawal in foreign currencies will look like "retrait 123 currency"
+ (re.compile(u'^retrait (?P.*)'), FrenchTransaction.TYPE_WITHDRAWAL),
+ (re.compile(u'^carte (?P\d{2})/(?P\d{2})/(?P\d{4}) (?P.*)'), FrenchTransaction.TYPE_CARD),
+ (re.compile(u'^virement (sepa )?(emis vers|recu|emis)? (?P.*)'), FrenchTransaction.TYPE_TRANSFER),
+ (re.compile(u'^remise cheque(?P.*)'), FrenchTransaction.TYPE_DEPOSIT),
+ (re.compile(u'^cheque (?P.*)'), FrenchTransaction.TYPE_CHECK),
+ (re.compile(u'^prelevement (?P.*)'), FrenchTransaction.TYPE_ORDER),
+ (re.compile(u'^prlv sepa (?P.*?) : .*'), FrenchTransaction.TYPE_ORDER),
+ (re.compile(u'^prélèvement sepa en faveur de (?P.*)'), FrenchTransaction.TYPE_ORDER),
+ (re.compile(u'^commission sur (?P.*)'), FrenchTransaction.TYPE_BANK),
+ ]
class AccountsPage(LoggedPage, JsonPage):
@@ -56,10 +74,12 @@ class item(ItemElement):
klass = Transaction
obj_id = Eval(str, Dict('id'))
- obj_label = CleanText(Dict('detail'))
obj_amount = CleanDecimal(Dict('amount'))
obj_date = Date(Dict('effectiveDate'))
+ def obj_raw(self):
+ return Transaction.Raw(Lower(Dict('detail')))(self) or Format('%s %s', Field('date'), Field('amount'))(self)
+
class ComingPage(LoggedPage, JsonPage):
@method
@@ -69,7 +89,9 @@ class iter_coming(DictElement):
class item(ItemElement):
klass = Transaction
- obj_label = Dict('label')
obj_amount = CleanDecimal(Dict('amount'))
obj_date = Date(Dict('effectiveDate'))
obj_vdate = Date(Dict('operationDate'))
+
+ def obj_raw(self):
+ return Transaction.Raw(Lower(Dict('label')))(self) or Format('%s %s', Field('date'), Field('amount'))(self)