From a3eb457218210e0818002db153223e514833b9bf Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Wed, 18 Oct 2023 20:03:40 +0200
Subject: [PATCH] [UPD] _compute_last_membership_invoice_date function

---
 .pre-commit-config.yaml | 23 ++++++++++++-----------
 models/res_partner.py   | 15 ++++++++-------
 views/res_partner.xml   |  6 ++++--
 3 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 1c6434b..4acca68 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -27,6 +27,11 @@ repos:
         entry: found forbidden files; remove them
         language: fail
         files: "\\.rej$"
+      - id: en-po-files
+        name: en.po files cannot exist
+        entry: found a en.po file
+        language: fail
+        files: '[a-zA-Z0-9_]*/i18n/en\.po$'
   - repo: https://github.com/oca/maintainer-tools
     rev: ab1d7f6
     hooks:
@@ -46,7 +51,7 @@ repos:
           - --remove-duplicate-keys
           - --remove-unused-variables
   - repo: https://github.com/psf/black
-    rev: 20.8b1
+    rev: 22.3.0
     hooks:
       - id: black
   - repo: https://github.com/pre-commit/mirrors-prettier
@@ -96,32 +101,28 @@ repos:
       - id: pyupgrade
         args: ["--keep-percent-format"]
   - repo: https://github.com/PyCQA/isort
-    rev: 5.5.1
+    rev: 5.12.0
     hooks:
       - id: isort
         name: isort except __init__.py
         args:
           - --settings=.
         exclude: /__init__\.py$
-  - repo: https://gitlab.com/PyCQA/flake8
+  - repo: https://github.com/PyCQA/flake8
     rev: 3.8.3
     hooks:
       - id: flake8
         name: flake8
         additional_dependencies: ["flake8-bugbear==20.1.4"]
-  - repo: https://github.com/PyCQA/pylint
-    rev: pylint-2.5.3
+  - repo: https://github.com/OCA/pylint-odoo
+    rev: 7.0.2
     hooks:
-      - id: pylint
+      - id: pylint_odoo
         name: pylint with optional checks
         args:
           - --rcfile=.pylintrc
           - --exit-zero
         verbose: true
-        additional_dependencies: &pylint_deps
-          - pylint-odoo==3.5.0
-      - id: pylint
-        name: pylint with mandatory checks
+      - id: pylint_odoo
         args:
           - --rcfile=.pylintrc-mandatory
-        additional_dependencies: *pylint_deps
diff --git a/models/res_partner.py b/models/res_partner.py
index 3eabbe0..da72449 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -45,10 +45,9 @@ class ResPartner(models.Model):
         default=False,
     )
     is_membership_archived = fields.Boolean("Membre archivé")
-
     last_membership_invoice_date = fields.Date(
         string="Date de dernière facture d'adhésion",
-        compute='_compute_last_membership_invoice_date'
+        compute="_compute_last_membership_invoice_date",
     )
 
     # ------------------------------------------------------
@@ -101,11 +100,12 @@ class ResPartner(models.Model):
             if partner.parent_id and not partner.is_company:
                 partner.membership_state = partner.parent_id.membership_state
 
-    @api.depends('member_lines')
+    @api.depends("member_lines")
     def _compute_last_membership_invoice_date(self):
         for partner in self:
             invoices = partner.member_lines.filtered(
-                lambda line: line.state == 'invoiced' or 'paid'
+                lambda line: line.account_invoice_id
+                and line.account_invoice_id.state == "posted"
             ).mapped("date")
             last_invoice_date = max(invoices, default=False)
             partner.last_membership_invoice_date = last_invoice_date
@@ -118,6 +118,7 @@ class ResPartner(models.Model):
         res = super(ResPartner, self)._onchange_parent_id()
         self.is_membership_archived = self.parent_id.is_membership_archived
         return res
+
     # ------------------------------------------------------
     # CRUD methods (ORM overrides)
     # ------------------------------------------------------
@@ -131,11 +132,11 @@ class ResPartner(models.Model):
             # if partner has child, update all childs
             if partner.child_ids:
                 partner.child_ids.update(
-                    {
-                        "is_membership_archived": partner.is_membership_archived
-                    })
+                    {"is_membership_archived": partner.is_membership_archived}
+                )
 
         return res
+
     # ------------------------------------------------------
     # Actions
     # ------------------------------------------------------
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 42eea96..3ff2550 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -139,7 +139,6 @@
                 <xpath expr="//field[@name='membership_start']" position="after">
                     <field
                         name="last_membership_invoice_date"
-                        readonly="1"
                         attrs="{'invisible':[('last_membership_invoice_date','=',False)]}"
                     />
                 </xpath>
@@ -176,7 +175,10 @@
                                 <field name="membership_is_delegate" />
                                 <field name="membership_is_mandate" />
                                 <field name="membership_is_contact" />
-                                <field name="is_membership_archived" widget="boolean_toggle" />
+                                <field
+                                    name="is_membership_archived"
+                                    widget="boolean_toggle"
+                                />
                             </group>
                         </group>
                     </page>
-- 
GitLab