diff --git a/addons/membership/models/partner.py b/addons/membership/models/partner.py index 3a13a1e1d33..907efb32b88 100644 --- a/addons/membership/models/partner.py +++ b/addons/membership/models/partner.py @@ -44,12 +44,19 @@ class Partner(models.Model): 'member_lines.account_invoice_line.invoice_id.partner_id', 'free_member', 'member_lines.date_to', 'member_lines.date_from', - 'associate_member.membership_state') + 'associate_member') def _compute_membership_state(self): values = self._membership_state() for partner in self: partner.membership_state = values[partner.id] + # Do not depend directly on "associate_member.membership_state" or we might end up in an + # infinite loop. Since we still need this dependency somehow, we explicitly search for the + # "parent members" and trigger a recompute. + parent_members = self.search([('associate_member', 'in', self.ids)]) - self + if parent_members: + parent_members._recompute_todo(self._fields['membership_state']) + @api.depends('member_lines.account_invoice_line.invoice_id.state', 'member_lines.account_invoice_line.invoice_id.invoice_line_ids', 'member_lines.account_invoice_line.invoice_id.payment_ids',