From 27ea112420a0e252c9f1a0f57700b104d0d90901 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Mon, 8 Jan 2024 18:49:34 +0100 Subject: [PATCH] [FIX] membership_extension: Don't return early Don't return before consuming whole recordset. --- .../models/membership_line.py | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/membership_extension/models/membership_line.py b/membership_extension/models/membership_line.py index 18646c40b..8b14461a0 100644 --- a/membership_extension/models/membership_line.py +++ b/membership_extension/models/membership_line.py @@ -43,16 +43,18 @@ def _onchange_membership_date(self): self.date_to = date_to def _compute_state(self): - for line in self: - if isinstance(line.id, models.NewId) or not line.account_invoice_id: - line.state = line.state or "none" - elif ( - line.account_invoice_id.state == "posted" - and line.account_invoice_id.payment_state == "reversed" - ): - line.state = "canceled" - else: - return super(MembershipLine, line)._compute_state() + no_invoice_lines = self.filtered( + lambda line: isinstance(line.id, models.NewId) + or not line.account_invoice_id + ) + cancelled_lines = self.filtered( + lambda line: line.account_invoice_id.state == "posted" + and line.account_invoice_id.payment_state == "reversed" + ) + cancelled_lines.state = "cancelled" + for line in no_invoice_lines: + line.state = line.state or "none" + return super(MembershipLine, self - no_invoice_lines)._compute_state() # Empty method _inverse_state def _inverse_state(self):