diff --git a/modules/cragr/api/browser.py b/modules/cragr/api/browser.py index ba1b28fdebca477f3579368b996dce9cdc0965ca..cee467c139c003a45dbc6acca75394b9b05efff2 100644 --- a/modules/cragr/api/browser.py +++ b/modules/cragr/api/browser.py @@ -563,6 +563,10 @@ def iter_debit_accounts(self): @need_login def iter_transfer_recipients(self, account, transfer_space_info=None): + if account.type in (account.TYPE_CARD, account.TYPE_LOAN, account.TYPE_LIFE_INSURANCE, + account.TYPE_PEA, account.TYPE_CONSUMER_CREDIT, account.TYPE_REVOLVING_CREDIT, ): + return + # avoid to call `get_account_transfer_space_info()` several time if transfer_space_info: space, operation, referer = transfer_space_info @@ -574,12 +578,16 @@ def iter_transfer_recipients(self, account, transfer_space_info=None): if not self.page.is_sender_account(account.id): return - for index, internal_rcpt in enumerate(self.page.iter_internal_recipient(account_id=account.id)): - internal_rcpt._index = index - yield internal_rcpt - # can't use 'ignore_duplicate' in DictElement because we need the 'index' to do transfer seen = set() + seen.add(account.iban) + + for index, internal_rcpt in enumerate(self.page.iter_internal_recipient()): + internal_rcpt._index = index + if internal_rcpt._is_recipient and (internal_rcpt.iban not in seen): + seen.add(internal_rcpt.iban) + yield internal_rcpt + for index, external_rcpt in enumerate(self.page.iter_external_recipient()): external_rcpt._index = index if external_rcpt.iban not in seen: diff --git a/modules/cragr/api/transfer_pages.py b/modules/cragr/api/transfer_pages.py index 8b2f9f9f6bbcd634b40d18c74327d7bab57f5e9f..707fe330de4ad14ab34a692c2dba64675baea279 100644 --- a/modules/cragr/api/transfer_pages.py +++ b/modules/cragr/api/transfer_pages.py @@ -27,7 +27,7 @@ Account, Recipient, Transfer, TransferBankError, ) from weboob.browser.filters.standard import ( - CleanDecimal, Env, Date, CleanText, + CleanDecimal, Date, CleanText, ) from weboob.browser.filters.json import Dict @@ -59,10 +59,12 @@ def obj_balance(self): @method class iter_internal_recipient(DictElement): + def store(self, obj): + return obj + class item(ItemElement): def condition(self): - return Dict('recipientOfTransfert', default=None)(self) and \ - Env('account_id')(self) != Dict('accountNumber', default=None)(self) + return Dict('accountNumber', default=None)(self) klass = Recipient @@ -71,6 +73,7 @@ def condition(self): obj_iban = Dict('ibanCode') obj_category = 'Interne' obj_enabled_at = date.today() + obj__is_recipient = Dict('recipientOfTransfert', default=False) @method class iter_external_recipient(DictElement):