diff --git a/addons/account/models/account_bank_statement.py b/addons/account/models/account_bank_statement.py index 2e470c69ec8..0b7d783587b 100644 --- a/addons/account/models/account_bank_statement.py +++ b/addons/account/models/account_bank_statement.py @@ -772,9 +772,12 @@ class AccountBankStatementLine(models.Model): liquidity_lines, suspense_lines, other_lines = st_line._seek_for_lines() # Compute is_reconciled - if not st_line.id or suspense_lines: + if not st_line.id: # New record: The journal items are not yet there. st_line.is_reconciled = False + elif suspense_lines: + # In case of the statement line comes from an older version, it could have a residual amount of zero. + st_line.is_reconciled = all(suspense_line.reconciled for suspense_line in suspense_lines) elif st_line.currency_id.is_zero(st_line.amount): st_line.is_reconciled = True else: diff --git a/addons/account/models/account_reconcile_model.py b/addons/account/models/account_reconcile_model.py index a5899e26eef..df8c0e8fe06 100644 --- a/addons/account/models/account_reconcile_model.py +++ b/addons/account/models/account_reconcile_model.py @@ -445,6 +445,12 @@ class AccountReconcileModel(models.Model): # First associate with each rec models all the statement lines for which it is applicable lines_with_partner_per_model = defaultdict(lambda: []) for st_line in st_lines: + + # Statement lines created in old versions could have a residual amount of zero. In that case, don't try to + # match anything. + if not st_line.amount_residual: + continue + mapped_partner = (partner_map and partner_map.get(st_line.id) and self.env['res.partner'].browse(partner_map[st_line.id])) or st_line.partner_id for rec_model in available_models: