diff --git a/modules/caissedepargne/cenet/browser.py b/modules/caissedepargne/cenet/browser.py index 2905abfe42d1c849b35b8514d13c19ba28f1e4ef..4df46b8cda32baa98776df00264c098bd57f701c 100644 --- a/modules/caissedepargne/cenet/browser.py +++ b/modules/caissedepargne/cenet/browser.py @@ -185,8 +185,10 @@ def get_history(self, account): if tr.type is FrenchTransaction.TYPE_CARD_SUMMARY: if find_object(card_tr_list, label=tr.label, amount=tr.amount, raw=tr.raw, date=tr.date, rdate=tr.rdate): - self.logger.warning('Duplicate transaction: %s' % tr) + self.logger.warning('Duplicated transaction: %s', tr) + items.pop() continue + card_tr_list.append(tr) tr.deleted = True tr_dict = [tr_dict for tr_dict in data_out if tr_dict['Libelle'] == tr.label] diff --git a/modules/caissedepargne/cenet/pages.py b/modules/caissedepargne/cenet/pages.py index 15f44efc2a7d627f149d2cb5189fe649055bf050..028a004fa708ec7bec61dc5e16b638681f02ae2b 100644 --- a/modules/caissedepargne/cenet/pages.py +++ b/modules/caissedepargne/cenet/pages.py @@ -26,7 +26,7 @@ from weboob.browser.filters.standard import Date, CleanDecimal, CleanText, Format, Field, Env, Regexp, Currency from weboob.browser.filters.json import Dict from weboob.capabilities import NotAvailable -from weboob.capabilities.bank import Account, Transaction, Loan +from weboob.capabilities.bank import Account, Loan from weboob.capabilities.contact import Advisor from weboob.capabilities.profile import Profile from weboob.capabilities.bill import DocumentTypes, Subscription, Document @@ -34,6 +34,39 @@ from weboob.exceptions import BrowserUnavailable +class Transaction(FrenchTransaction): + PATTERNS = [(re.compile('^CB (?P.*?) FACT (?P
\d{2})(?P\d{2})(?P\d{2})', re.IGNORECASE), + FrenchTransaction.TYPE_CARD), + (re.compile('^RET(RAIT)? DAB (?P
\d+)-(?P\d+)-.*', re.IGNORECASE), + FrenchTransaction.TYPE_WITHDRAWAL), + (re.compile('^RET(RAIT)? DAB (?P.*?) (?P
\d{2})(?P\d{2})(?P\d{2}) (?P\d{2})H(?P\d{2})', re.IGNORECASE), + FrenchTransaction.TYPE_WITHDRAWAL), + (re.compile('^VIR(EMENT)?(\.PERIODIQUE)? (?P.*)', re.IGNORECASE), + FrenchTransaction.TYPE_TRANSFER), + (re.compile('^PRLV (?P.*)', re.IGNORECASE), + FrenchTransaction.TYPE_ORDER), + (re.compile('^CHEQUE.*', re.IGNORECASE), FrenchTransaction.TYPE_CHECK), + (re.compile('^(CONVENTION \d+ )?COTIS(ATION)? (?P.*)', re.IGNORECASE), + FrenchTransaction.TYPE_BANK), + (re.compile(r'^\* (?P.*)', re.IGNORECASE), + FrenchTransaction.TYPE_BANK), + (re.compile('^REMISE (?P.*)', re.IGNORECASE), + FrenchTransaction.TYPE_DEPOSIT), + (re.compile('^(?P.*)( \d+)? QUITTANCE .*', re.IGNORECASE), + FrenchTransaction.TYPE_ORDER), + (re.compile('^CB [\d\*]+ TOT DIF .*', re.IGNORECASE), + FrenchTransaction.TYPE_CARD_SUMMARY), + (re.compile('^CB [\d\*]+ (?P.*)', re.IGNORECASE), + FrenchTransaction.TYPE_CARD), + (re.compile('^CB (?P.*?) (?P
\d{2})(?P\d{2})(?P\d{2})', re.IGNORECASE), + FrenchTransaction.TYPE_CARD), + (re.compile('\*CB (?P.*?) (?P
\d{2})(?P\d{2})(?P\d{2})', re.IGNORECASE), + FrenchTransaction.TYPE_CARD), + (re.compile('^FAC CB (?P.*?) (?P
\d{2})/(?P\d{2})', re.IGNORECASE), + FrenchTransaction.TYPE_CARD), + ] + + class LoginPage(JsonPage): def get_response(self): return self.doc @@ -187,14 +220,12 @@ class CenetAccountHistoryPage(LoggedPage, CenetJsonPage): 'CHEQUE': Transaction.TYPE_CHECK, 'REMISE CHEQUE': Transaction.TYPE_CASH_DEPOSIT, 'PRLV': Transaction.TYPE_ORDER, - 'CB': Transaction.TYPE_CARD } TR_TYPES_API = { 'VIR': Transaction.TYPE_TRANSFER, 'PE': Transaction.TYPE_ORDER, # PRLV 'CE': Transaction.TYPE_CHECK, # CHEQUE - 'CB': Transaction.TYPE_CARD, 'DE': Transaction.TYPE_CASH_DEPOSIT, # APPRO 'PI': Transaction.TYPE_CASH_DEPOSIT, # REMISE CHEQUE } @@ -291,39 +322,6 @@ def on_load(self): raise BrowserUnavailable(CleanText('//div[@id="message_error_hs"]')(self.doc)) -class Transaction(FrenchTransaction): - PATTERNS = [(re.compile('^CB (?P.*?) FACT (?P
\d{2})(?P\d{2})(?P\d{2})', re.IGNORECASE), - FrenchTransaction.TYPE_CARD), - (re.compile('^RET(RAIT)? DAB (?P
\d+)-(?P\d+)-.*', re.IGNORECASE), - FrenchTransaction.TYPE_WITHDRAWAL), - (re.compile('^RET(RAIT)? DAB (?P.*?) (?P
\d{2})(?P\d{2})(?P\d{2}) (?P\d{2})H(?P\d{2})', re.IGNORECASE), - FrenchTransaction.TYPE_WITHDRAWAL), - (re.compile('^VIR(EMENT)?(\.PERIODIQUE)? (?P.*)', re.IGNORECASE), - FrenchTransaction.TYPE_TRANSFER), - (re.compile('^PRLV (?P.*)', re.IGNORECASE), - FrenchTransaction.TYPE_ORDER), - (re.compile('^CHEQUE.*', re.IGNORECASE), FrenchTransaction.TYPE_CHECK), - (re.compile('^(CONVENTION \d+ )?COTIS(ATION)? (?P.*)', re.IGNORECASE), - FrenchTransaction.TYPE_BANK), - (re.compile(r'^\* (?P.*)', re.IGNORECASE), - FrenchTransaction.TYPE_BANK), - (re.compile('^REMISE (?P.*)', re.IGNORECASE), - FrenchTransaction.TYPE_DEPOSIT), - (re.compile('^(?P.*)( \d+)? QUITTANCE .*', re.IGNORECASE), - FrenchTransaction.TYPE_ORDER), - (re.compile('^CB [\d\*]+ TOT DIF .*', re.IGNORECASE), - FrenchTransaction.TYPE_CARD_SUMMARY), - (re.compile('^CB [\d\*]+ (?P.*)', re.IGNORECASE), - FrenchTransaction.TYPE_CARD), - (re.compile('^CB (?P.*?) (?P
\d{2})(?P\d{2})(?P\d{2})', re.IGNORECASE), - FrenchTransaction.TYPE_CARD), - (re.compile('\*CB (?P.*?) (?P
\d{2})(?P\d{2})(?P\d{2})', re.IGNORECASE), - FrenchTransaction.TYPE_CARD), - (re.compile('^FAC CB (?P.*?) (?P
\d{2})/(?P\d{2})', re.IGNORECASE), - FrenchTransaction.TYPE_CARD), - ] - - class SubscriptionPage(LoggedPage, CenetJsonPage): @method class iter_subscription(DictElement):