[IMP] iap: add automatic deletion of accounts without token

Since the accounts without token are useless and could create errors
afterwards, we should delete them and automatically create a new one
with a new token in case force_create is set to True.

closes odoo/odoo#99155

X-original-commit: 637df81a22bf4adbb685f78a59072b110c30a546
Signed-off-by: Florian Daloze (fda) <fda@odoo.com>
Signed-off-by: Alex Thuyls (alt) <alt@odoo.com>
This commit is contained in:
alt-odoo
2022-08-30 08:18:50 +02:00
parent 2367fb1116
commit 2a16219ad0
+11
View File
@@ -31,6 +31,17 @@ class IapAccount(models.Model):
('company_ids', '=', False)
]
accounts = self.search(domain, order='id desc')
accounts_without_token = accounts.filtered(lambda acc: not acc.account_token)
if accounts_without_token:
with self.pool.cursor() as cr:
# In case of a further error that will rollback the database, we should
# use a different SQL cursor to avoid undo the accounts deletion.
# Flush the pending operations to avoid a deadlock.
self.flush()
IapAccount = self.with_env(self.env(cr=cr))
IapAccount.search(domain + [('account_token', '=', False)]).unlink()
accounts = accounts - accounts_without_token
if not accounts:
with self.pool.cursor() as cr:
# Since the account did not exist yet, we will encounter a NoCreditError,