From c2baffa4d8f8ec4c16a13ebb1974624eb6f71144 Mon Sep 17 00:00:00 2001
From: Quentin <quentin@l-filament.com>
Date: Tue, 17 Oct 2023 09:55:03 +0200
Subject: [PATCH] =?UTF-8?q?[ADD]=20Champ=20Date=20de=20derni=C3=A8re=20fac?=
 =?UTF-8?q?ture=20d'adh=C3=A9sion?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 models/res_partner.py | 14 ++++++++++++++
 views/res_partner.xml |  7 +++++++
 2 files changed, 21 insertions(+)

diff --git a/models/res_partner.py b/models/res_partner.py
index c653572..3eabbe0 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -46,6 +46,11 @@ class ResPartner(models.Model):
     )
     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'
+    )
+
     # ------------------------------------------------------
     # SQL Constraints
     # ------------------------------------------------------
@@ -96,6 +101,15 @@ 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')
+    def _compute_last_membership_invoice_date(self):
+        for partner in self:
+            invoices = partner.member_lines.filtered(
+                lambda line: line.state == 'invoiced' or 'paid'
+            ).mapped("date")
+            last_invoice_date = max(invoices, default=False)
+            partner.last_membership_invoice_date = last_invoice_date
+
     # ------------------------------------------------------
     # Onchange / Constraints
     # ------------------------------------------------------
diff --git a/views/res_partner.xml b/views/res_partner.xml
index eefa010..42eea96 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -136,6 +136,13 @@
                 >
                     <field name="is_membership_archived" widget="boolean_toggle" />
                 </xpath>
+                <xpath expr="//field[@name='membership_start']" position="after">
+                    <field
+                        name="last_membership_invoice_date"
+                        readonly="1"
+                        attrs="{'invisible':[('last_membership_invoice_date','=',False)]}"
+                    />
+                </xpath>
                 <xpath expr="//field[@name='member_lines']" position="before">
                     <hr />
                     <group>
-- 
GitLab