diff --git a/weboob/backends/bnporc/pages/account_history.py b/weboob/backends/bnporc/pages/account_history.py
index 904be673..4774fb97 100644
--- a/weboob/backends/bnporc/pages/account_history.py
+++ b/weboob/backends/bnporc/pages/account_history.py
@@ -18,16 +18,20 @@
# along with weboob. If not, see .
+import re
from datetime import date
from weboob.tools.browser import BasePage
from weboob.capabilities.bank import Operation
+from weboob.capabilities.base import NotAvailable
__all__ = ['AccountHistory']
class AccountHistory(BasePage):
+ LABEL_PATTERNS = [(u'^CHEQUEN°(?P.*)', u'CHEQUE', u'N°%(no)s')]
+
def on_loaded(self):
self.operations = []
@@ -44,11 +48,21 @@ class AccountHistory(BasePage):
if child.text: label += child.text
if child.tail: label += child.tail
if tds[1].tail: label += tds[1].tail
+
label = label.strip()
+ category = NotAvailable
+ for pattern, _cat, _lab in self.LABEL_PATTERNS:
+ m = re.match(pattern, label)
+ if m:
+ category = _cat % m.groupdict()
+ label = _lab % m.groupdict()
+ break
+ else:
+ if ' ' in label:
+ category, useless, label = [part.strip() for part in label.partition(' ')]
+
amount = tds[2].text.replace('.', '').replace(',', '.')
- (category, useless, label) = label.partition(' ')
- category = category.strip()
- label = label.strip()
+
# if we don't have exactly one '.', this is not a floatm try the next
operation = Operation(len(self.operations))
if amount.count('.') != 1: