From 84a751df5a618df21e90104649cd84648ebb8c37 Mon Sep 17 00:00:00 2001
From: Benjamin <benjamin@le-filament.com>
Date: Mon, 18 Jan 2021 18:30:13 +0100
Subject: [PATCH] [add] date_1st_sign and first_closeout only editable for
 administrative on 6_suivi

---
 models/res_partner.py | 11 +++++++++++
 views/res_partner.xml | 15 +++++++++++----
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/models/res_partner.py b/models/res_partner.py
index 066462a..9cc3d99 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -404,6 +404,10 @@ class ScopPartner(models.Model):
         domain=[('child_ids', '=', False)],
         on_delete='restrict',
         track_visibility='onchange')
+
+    # Droits utilisateurs
+    is_administrative = fields.Boolean(compute='_compute_is_administrative')
+
     # Hack pour la création de contacts depuis la fiche organisme
     parent_id_onchange = fields.Many2one('res.partner')
 
@@ -840,6 +844,13 @@ class ScopPartner(models.Model):
             else:
                 partner.organization_type_id = False
 
+    def _compute_is_administrative(self):
+        for partner in self:
+            if self.env.user.has_group('cgscop_partner.group_cg_administrative'):
+                partner.is_administrative = True
+            else:
+                partner.is_administrative = False
+
     # ------------------------------------------------------
     # Button Action
     # ------------------------------------------------------
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 45d9d91..1d0dd4e 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -409,10 +409,15 @@
                                 <field name="activity_federation_indus_ids" groups="cgscop_partner.group_federation_indus" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('is_federation_indus', '!=', True)]}" widget="many2many_tags"/>
                             </group>
                             <group string="Informations Activité">
+                                <field name="is_administrative" invisible="1"/>
                                 <field name="creation_origin_id" attrs="{'invisible': [('cooperative_form_id', '=', %(cgscop_partner.form_noncooperative)d)], 'required': [('is_cooperative', '=', True), ('cooperative_form_id', '!=', %(cgscop_partner.form_noncooperative)d)]}" options="{'no_open': True, 'no_create': True}"/>
                                 <field name="creation_suborigin_id" domain="[('parent_id', '=', creation_origin_id), ('child_ids', '=', False)]" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('cooperative_form_id', '=', %(cgscop_partner.form_noncooperative)d)]}" />
                                 <field name="is_ag_constitution" attrs="{'invisible': ['|', ('project_status', '!=', '3_accompagnement'), ('cooperative_form_id', '=', %(cgscop_partner.form_noncooperative)d)]}"/>
-                                <field name="date_1st_sign" attrs="{'invisible': ['|', '&amp;', ('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement')), ('is_ag_constitution', '!=', True), ('cooperative_form_id', '=', %(cgscop_partner.form_noncooperative)d)], 'required': ['|', ('project_status', 'in', ('4_adhesion', '5_cg', '6_suivi')), ('is_ag_constitution', '=', True), ('is_cooperative', '=', True), ('cooperative_form_id', '!=', %(cgscop_partner.form_noncooperative)d)]}"/>
+                                <field name="date_1st_sign"
+                                       attrs="{
+                                        'invisible': ['|', '&amp;', ('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement')), ('is_ag_constitution', '!=', True), ('cooperative_form_id', '=', %(cgscop_partner.form_noncooperative)d)],
+                                        'required': ['|', ('project_status', 'in', ('4_adhesion', '5_cg', '6_suivi')), ('is_ag_constitution', '=', True), ('is_cooperative', '=', True), ('cooperative_form_id', '!=', %(cgscop_partner.form_noncooperative)d)],
+                                        'readonly': [('project_status', '=', '6_suivi'), ('is_administrative', '!=', True)]}"/>
                                 <field name="registration_date" attrs="{'invisible': [('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement'))]}"/>
                                 <field name="social_object" attrs="{'required': [('is_cooperative', '=', True), ('project_status','in',('2_pre-diagnostic', '3_accompagnement','4_adhesion', '5_cg', '6_suivi'))]}"/>
                                 <field name="naf_id" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':['|', ('project_status','in',('4_adhesion', '5_cg'), '&amp;', ('write_date', '=', False), ('project_status', '=', '6_suivi'))], 'invisible': [('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement'))]}" options="{'no_open': True, 'no_create': True}"/>
@@ -426,8 +431,11 @@
                                     <field name="formatted_siret" class="oe_read_only" attrs="{'invisible': [('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement'))]}"/>
                                 </div>
                                 <field name="siren" readonly="1" attrs="{'invisible': [('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement'))]}"/>
-                                <field name="capital" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))], 'invisible': [('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement'))]}" widget="monetary"/>
-                                <field name="first_closeout" attrs="{'required':[('is_cooperative', '!=', False), ('project_status', 'in', ('4_adhesion', '5_cg', '6_suivi')), ('cooperative_form_id', '!=', %(cgscop_partner.form_noncooperative)d)], 'invisible': ['|', ('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement')), ('cooperative_form_id', '=', %(cgscop_partner.form_noncooperative)d)]}"/>
+                                <field name="capital" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))], 'invisible': [('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement'))],}" widget="monetary"/>
+                                <field name="first_closeout" attrs="{
+                                        'required':[('is_cooperative', '!=', False), ('project_status', 'in', ('4_adhesion', '5_cg', '6_suivi')), ('cooperative_form_id', '!=', %(cgscop_partner.form_noncooperative)d)],
+                                        'invisible': ['|', ('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement')), ('cooperative_form_id', '=', %(cgscop_partner.form_noncooperative)d)],
+                                        'readonly': [('project_status', '=', '6_suivi'), ('is_administrative', '!=', True)]}"/>
                                 <field name="closeout_month" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))], 'invisible': [('project_status', 'in', ('1_information', '2_pre-diagnostic', '3_accompagnement'))]}"/>
                                 <field name="is_seed_scop" attrs="{'invisible': [('project_status', '=', '1_information')]}"/>
                                 <field name="seed_end" attrs="{'invisible': [('is_seed_scop', '!=', True)], 'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi')),('is_seed_scop', '=', True)]}"/>
@@ -689,7 +697,6 @@
             </field>
         </record>
 
-
         <!-- ******************************
         ***    Custom Views
         ****************************** -->
-- 
GitLab