From fd9e4a604219e93573729b499a876249bc9e2c60 Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Fri, 26 Aug 2022 13:23:54 +0200
Subject: [PATCH] [add] federation & cae filter on bordereau

---
 models/scop_bordereau_cg.py | 48 +++++++++++++++++++++++++++++++++++++
 views/scop_bordereau_cg.xml | 21 ++++++++++++++++
 2 files changed, 69 insertions(+)

diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index 73e8a11..fbc1de3 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -228,6 +228,26 @@ class Bordereau(models.Model):
         compute="_compute_has_outstanding",
         store=True,
     )
+    is_cae = fields.Boolean(
+        string="CAE",
+        related="partner_id.cae",
+        search="_search_is_cae",
+    )
+    is_federation_com = fields.Boolean(
+        string="Fédération de la Communication",
+        related="partner_id.is_federation_com",
+        search="_search_is_federation_com",
+    )
+    is_federation_btp = fields.Boolean(
+        string="Fédération du BTP",
+        related="partner_id.is_federation_btp",
+        search="_search_is_federation_btp",
+    )
+    is_federation_indus = fields.Boolean(
+        string="Fédération de l'Industrie",
+        related="partner_id.is_federation_indus",
+        search="_search_is_federation_indus",
+    )
 
     # ------------------------------------------------------
     # Compute
@@ -424,6 +444,34 @@ class Bordereau(models.Model):
 
             r.details = detail
 
+    def _search_is_cae(self, operator, value):
+        if operator not in ("=", "!="):
+            return []
+        else:
+            partner_ids = self.env["res.partner"].search([("cae", operator, value)])
+            return [("partner_id", "in", partner_ids.ids)]
+
+    def _search_is_federation_com(self, operator, value):
+        if operator not in ("=", "!="):
+            return []
+        else:
+            partner_ids = self.env["res.partner"].search([("is_federation_com", operator, value)])
+            return [("partner_id", "in", partner_ids.ids)]
+
+    def _search_is_federation_btp(self, operator, value):
+        if operator not in ("=", "!="):
+            return []
+        else:
+            partner_ids = self.env["res.partner"].search([("is_federation_btp", operator, value)])
+            return [("partner_id", "in", partner_ids.ids)]
+
+    def _search_is_federation_indus(self, operator, value):
+        if operator not in ("=", "!="):
+            return []
+        else:
+            partner_ids = self.env["res.partner"].search([("is_federation_indus", operator, value)])
+            return [("partner_id", "in", partner_ids.ids)]
+
     # ------------------------------------------------------
     # Button functions
     # ------------------------------------------------------
diff --git a/views/scop_bordereau_cg.xml b/views/scop_bordereau_cg.xml
index 366c5dc..7c99dae 100644
--- a/views/scop_bordereau_cg.xml
+++ b/views/scop_bordereau_cg.xml
@@ -467,6 +467,27 @@
                         string="Assiette VA"
                         domain="[('type_assiette', '=', 'va')]"
                     />
+                    <separator />
+                    <filter
+                        name="is_cae"
+                        string="CAE"
+                        domain="[('is_cae', '=', True)]"
+                    />
+                    <filter
+                        name="is_cae"
+                        string="Fédération Communication"
+                        domain="[('is_federation_com', '=', True)]"
+                    />
+                    <filter
+                        name="is_cae"
+                        string="Fédération BTP"
+                        domain="[('is_federation_btp', '=', True)]"
+                    />
+                    <filter
+                        name="is_federation_indus"
+                        string="Fédération Industrie"
+                        domain="[('is_cae', '=', True)]"
+                    />
                     <group string="Group By">
                         <filter
                             name="by_year"
-- 
GitLab