From e77ea625bcb19dddc62f75102a6bd9cff83712fa Mon Sep 17 00:00:00 2001
From: jordan <jordan@le-filament.com>
Date: Wed, 15 Dec 2021 15:51:17 +0100
Subject: [PATCH] [add] compute has_outstanding to add filter on tree view

---
 models/scop_bordereau_cg.py | 16 +++++++++++-----
 views/scop_bordereau_cg.xml |  2 ++
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index 8d91837..20e5a17 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -192,7 +192,8 @@ class Bordereau(models.Model):
     )
     has_outstanding = fields.Boolean(
         string='Paiements en circulation',
-        compute='_compute_has_outstanding')
+        compute='_compute_has_outstanding', store=True
+    )
 
     # ------------------------------------------------------
     # Compute
@@ -310,11 +311,15 @@ class Bordereau(models.Model):
             else:
                 bordereau.is_liasse_previ = False
 
+    @api.depends('invoice_ids.residual')
     @api.multi
     def _compute_has_outstanding(self):
         for r in self:
-            if r.invoice_ids.filtered(lambda i: i.has_outstanding is True):
-                r.has_outstanding = True
+            if r.invoice_ids:
+                if r.invoice_ids.filtered(lambda i: i.has_outstanding is True):
+                    r.has_outstanding = True
+                else:
+                    r.has_outstanding = False
             else:
                 r.has_outstanding = False
 
@@ -331,7 +336,8 @@ class Bordereau(models.Model):
                            + str(contrib.get('type_contribution_id')[1])
                            + '</td><td style="width: 100%;">'
                            + str(
-                            contrib.get('amount_total_signed')) + ' €</td>')
+                            contrib.get('amount_total_signed')) +
+                           ' €</td></tr>')
             detail += "</table><table class='o_group o_inner_group'>"
             for i in range(1, 5):
                 amount_echeance = sum(self.invoice_ids.filtered(
@@ -340,7 +346,7 @@ class Bordereau(models.Model):
                 detail += '<tr><td class="o_td_label font-weight-bold">' \
                           + 'Trimestre ' + str(i) \
                           + '</td><td style="width: 100%;">' \
-                          + str(amount_echeance) + ' €</td>'
+                          + str(amount_echeance) + ' €</td></tr>'
             detail += '</table>'
             r.details = detail
 
diff --git a/views/scop_bordereau_cg.xml b/views/scop_bordereau_cg.xml
index e7685d1..c2134d9 100644
--- a/views/scop_bordereau_cg.xml
+++ b/views/scop_bordereau_cg.xml
@@ -197,6 +197,8 @@
                             domain="[('state', '=', 'validated')]"/>
                     <filter name="state_paid" string="Payé"
                             domain="[('state', '=', 'paid')]"/>
+                    <filter name="has_outstanding" string="Paiements en cours"
+                            domain="[('has_outstanding', '=', True)]"/>
                     <separator/>
                     <filter name="current_year" string="Campagne année en cours"
                             domain="[('year', '=', (context_today()).strftime('%Y'))]"/>
-- 
GitLab