diff --git a/modules/bnporc/module.py b/modules/bnporc/module.py index 6f99addd5132364cc2db79ed0aeda8d0b2bf973a..da2e194a6c2310978b88c6d4519b64efc6fae7cc 100644 --- a/modules/bnporc/module.py +++ b/modules/bnporc/module.py @@ -30,7 +30,7 @@ from weboob.capabilities.messages import CapMessages, Thread from weboob.capabilities.contact import CapContact from weboob.capabilities.profile import CapProfile -from weboob.capabilities.base import find_object +from weboob.capabilities.base import find_object, strict_find_object from weboob.tools.backend import Module, BackendConfig from weboob.tools.value import ValueBackendPassword, Value, ValueBool @@ -119,7 +119,9 @@ def init_transfer(self, transfer, **params): else: account = find_object(self.iter_accounts(), id=transfer.account_id, error=AccountNotFound) - recipient = find_object(self.iter_transfer_recipients(account.id), id=transfer.recipient_id, error=RecipientNotFound) + recipient = strict_find_object(self.iter_transfer_recipients(account.id), iban=transfer.recipient_iban) + if not recipient: + recipient = strict_find_object(self.iter_transfer_recipients(account.id), id=transfer.recipient_id, error=RecipientNotFound) assert account.id.isdigit() # quantize to show 2 decimals. diff --git a/modules/bnporc/pp/browser.py b/modules/bnporc/pp/browser.py index 87aabecad72123fb1f064fc50a00cfe240925f50..20332e94ee4578bd4eb2cd23ec874d8b1fc1410a 100644 --- a/modules/bnporc/pp/browser.py +++ b/modules/bnporc/pp/browser.py @@ -327,11 +327,18 @@ def iter_recipients(self, origin_account_id): except TransferError: return + # avoid recipient with same iban + seen = set() for recipient in self.page.transferable_on(origin_account_ibancrypte=origin_account_id): - yield recipient + if recipient.iban not in seen: + seen.add(recipient.iban) + yield recipient + if self.page.can_transfer_to_recipients(origin_account_id): for recipient in self.recipients.go(data=JSON({'type': 'TOUS'})).iter_recipients(): - yield recipient + if recipient.iban not in seen: + seen.add(recipient.iban) + yield recipient @need_login def new_recipient(self, recipient, **params):