From c4e70e2b9fc43cac53cf2900dc743bc47ce9e894 Mon Sep 17 00:00:00 2001
From: odoo <benjamin@le-filament.com>
Date: Sun, 22 Mar 2020 13:35:12 +0100
Subject: [PATCH] =?UTF-8?q?[cgscop=20#155]=20ajout=20champs=20bool=C3=A9en?=
 =?UTF-8?q?=20et=20filtre=20sur=20les=20f=C3=A9d=C3=A9s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 models/res_partner.py             | 47 +++++++++++++++++++++++++++++++
 views/res_partner_cooperative.xml |  5 ++++
 2 files changed, 52 insertions(+)

diff --git a/models/res_partner.py b/models/res_partner.py
index df69e7d..148ee20 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -193,6 +193,26 @@ class ScopPartner(models.Model):
                 ('organization_subtype_id.name', '=', 'Incubateur')],
         on_delete='restrict')
     is_ag_constitution = fields.Boolean('AG constitutive réalisée')
+    is_federation_com = fields.Boolean(
+        string='Fédération de la Communication',
+        compute='_compute_federation',
+        store=True,
+        default=False)
+    is_federation_btp = fields.Boolean(
+        string='Fédération du BTP',
+        compute='_compute_federation',
+        store=True,
+        default=False)
+    is_federation_indus = fields.Boolean(
+        string="Fédération de l'Industrie",
+        compute='_compute_federation',
+        store=True,
+        default=False)
+    is_federation_cae = fields.Boolean(
+        string='Fédération des CAE',
+        compute='_compute_federation',
+        store=True,
+        default=False)
 
     # Contacts
     director_ids = fields.One2many(
@@ -656,6 +676,33 @@ class ScopPartner(models.Model):
             if partner.member_number:
                 partner.member_number_int = int(partner.member_number)
 
+    @api.depends('membership_period_ids',
+                 'membership_period_ids.end')
+    @api.multi
+    def _compute_federation(self):
+        for partner in self:
+            if partner.is_cooperative:
+                partner.is_federation_com = partner._get_federation(
+                    'cgscop_partner.membership_type_2')
+                partner.is_federation_btp = partner._get_federation(
+                    'cgscop_partner.membership_type_4')
+                partner.is_federation_indus = partner._get_federation(
+                    'cgscop_partner.membership_type_3')
+                partner.is_federation_cae = partner._get_federation(
+                    'cgscop_partner.membership_type_5')
+
+    def _get_federation(self, external_id):
+        member_type_id = self.env.ref(external_id).id
+        partner_id = self.id
+        membership_period = self.env['scop.membership.period'].search([
+            ('partner_id', '=', partner_id),
+            ('type_id', '=', member_type_id),
+            ('end', '=', False)])
+        if membership_period:
+            return True
+        else:
+            return False
+
     @api.depends('questionnaire_ids', 'questionnaire_ids.staff_count',
                  'questionnaire_ids.effective_date')
     @api.multi
diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml
index 739e6ba..5983126 100644
--- a/views/res_partner_cooperative.xml
+++ b/views/res_partner_cooperative.xml
@@ -33,6 +33,11 @@
                     <filter string="Activités du Jour" name="activities_today" domain="[('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
                     <filter string="Activités futures" name="activities_upcoming_all" domain="[('activity_ids.date_deadline', '&gt;', context_today().strftime('%Y-%m-%d'))]"/>
                     <separator/>
+                    <filter string="Fédération de la Com" name="is_federation_com" domain="[('is_federation_com', '=', True)]"/>
+                    <filter string="Fédération de l'Industrie" name="is_federation_indus" domain="[('is_federation_indus', '=', True)]"/>
+                    <filter string="Fédération du BTP" name="is_federation_btp" domain="[('is_federation_btp', '=', True)]"/>
+                    <filter string="Fédération des CAE" name="is_federation_cae" domain="[('is_federation_cae', '=', True)]"/>
+                    <separator/>
                     <group expand="0" name="group_by" string="Group By">
                        <filter name="project_status" string="Statut" domain="[]" context="{'group_by' : 'project_status'}"/>
                        <filter name="cooperative_form_id" string="Forme Coopérative" domain="[]" context="{'group_by' : 'cooperative_form_id'}"/>
-- 
GitLab