From 1a5cffb7a6e75a843eec7fb2f6e9cb95c3ecb412 Mon Sep 17 00:00:00 2001
From: "CGSCOP\\hsilvant" <hsilvant@scop.coop>
Date: Mon, 24 Mar 2025 19:41:42 +0100
Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20notion=20d'engagement=20trans?=
 =?UTF-8?q?ition=20=C3=A9co.=20J'ai=20cach=C3=A9=20la=20partie=20rse=20qui?=
 =?UTF-8?q?=20ne=20sert=20pas=20pour=20le=20moment?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 __manifest__.py                   |  1 +
 datas/scop_action_te_data.xml     | 42 +++++++++++++++++++++++++++++++
 models/__init__.py                |  1 +
 models/res_partner.py             | 16 +++++++++---
 models/scop_action_te.py          | 18 +++++++++++++
 security/ir.model.access.csv      |  2 ++
 views/menus.xml                   |  9 +++++++
 views/res_partner.xml             | 15 +++++++++--
 views/res_partner_cooperative.xml |  2 +-
 views/scop_config_views.xml       | 22 ++++++++++++++++
 10 files changed, 122 insertions(+), 6 deletions(-)
 create mode 100644 datas/scop_action_te_data.xml
 create mode 100644 models/scop_action_te.py

diff --git a/__manifest__.py b/__manifest__.py
index 57ca4ee..4d9ef25 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -42,6 +42,7 @@
         "datas/scop_contribution_type_data.xml",
         "datas/scop_membership_reason_end_data.xml",
         "datas/scop_membership_type_data.xml",
+        "datas/scop_action_te_data.xml",
         # Wizards
         "wizard/scop_address_wizard.xml",
         "wizard/scop_period_wizard.xml",
diff --git a/datas/scop_action_te_data.xml b/datas/scop_action_te_data.xml
new file mode 100644
index 0000000..90b817b
--- /dev/null
+++ b/datas/scop_action_te_data.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" ?>
+<odoo>
+<!--    TODO: Déplacer dans scop_cotisation-->
+    <data noupdate="1">
+        <record id="te001" model="scop.action.te">
+            <field name="name">Agriculture et Alimentation résilientes</field>
+        </record>
+
+        <record id="te002" model="scop.action.te">
+            <field name="name">Accompagnement à la transformation écologique</field>
+        </record>
+
+        <record id="te003" model="scop.action.te">
+            <field name="name">Bâtiment durable</field>
+        </record>
+
+        <record id="te004" model="scop.action.te">
+            <field name="name">Protection environnement et biodiversité</field>
+        </record>
+
+        <record id="te005" model="scop.action.te">
+            <field name="name">Communication et numérique responsables</field>
+        </record>
+
+        <record id="te006" model="scop.action.te">
+            <field name="name">Education à l'environnement</field>
+        </record>
+
+        <record id="te007" model="scop.action.te">
+            <field name="name">Gestion des ressources et déchets</field>
+        </record>
+
+        <record id="te008" model="scop.action.te">
+            <field name="name">Energies</field>
+        </record>
+
+        <record id="te009" model="scop.action.te">
+            <field name="name">Mobilité responsable</field>
+        </record>
+
+    </data>
+</odoo>
diff --git a/models/__init__.py b/models/__init__.py
index d7bc2bd..6992f60 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -17,4 +17,5 @@ from . import res_partner
 from . import res_users
 from . import scop_contribution
 from . import scop_action_rse
+from . import scop_action_te
 from . import union_regionale
diff --git a/models/res_partner.py b/models/res_partner.py
index 36d254d..b160309 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -538,8 +538,14 @@ class ScopPartner(models.Model):
         inverse_name="partner_id",
         string="Liste des Actions RSE",
     )
+    action_te_ids = fields.Many2many(
+        "scop.action.te",
+        column1="partner_id",
+        column2="action_id",
+        string="Actions transition éco.",
+    )
     is_rse = fields.Boolean(
-        string="Engagement RSE", compute="_compute_is_rse", store=True, default=False
+        string="Engagement TE", compute="_compute_is_rse", store=True, default=False
     )
 
     # Historique
@@ -1121,14 +1127,18 @@ class ScopPartner(models.Model):
                 ):
                     partner.contact_legality = "customer"
 
-    @api.depends("action_rse_ids")
+    @api.depends("action_rse_ids","action_te_ids")
     def _compute_is_rse(self):
         """
-        Est on une coop RSE
+        Est on une coop RSE/TE
         """
         for partner in self:
+            partner.is_rse = False
+
             if len(partner.action_rse_ids) != 0:
                 partner.is_rse = True
+            if len(partner.action_te_ids) != 0:
+                partner.is_rse = True
 
     @api.depends(
         "membership_period_ids",
diff --git a/models/scop_action_te.py b/models/scop_action_te.py
new file mode 100644
index 0000000..64ea45a
--- /dev/null
+++ b/models/scop_action_te.py
@@ -0,0 +1,18 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import fields, models
+
+class ScopActionTe(models.Model):
+    _name = "scop.action.te"
+    _description = "Actions transition écologique"
+    _order = "name"
+
+    name = fields.Char(
+        string="Nom"
+    )
+    color = fields.Integer(
+        string="Couleur"
+    )
+    active = fields.Boolean(
+        default=True
+    )
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index b2cc49b..1f17fee 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -84,3 +84,5 @@ access_res_partner_mvt_mandate,access_res_partner_mvt_mandate,model_res_partner_
 admin_res_partner_mvt_mandate,admin_res_partner_mvt_mandate,model_res_partner_mvt_mandate,group_cg_administrator,1,1,1,1
 access_res_partner_mvt_vip,access_res_partner_mvt_vip,model_res_partner_mvt_vip,base.group_user,1,1,1,0
 admin_res_partner_mvt_vip,admin_res_partner_mvt_vip,model_res_partner_mvt_vip,group_cg_administrator,1,1,1,1
+access_action_te_group_user,access_action_te_group_user,model_scop_action_te,base.group_user,1,0,0,0
+admin_action_te_group_user,admin_action_te_group_user,model_scop_action_te,group_cg_administrator,1,1,1,1
diff --git a/views/menus.xml b/views/menus.xml
index 9d64e4d..6867c69 100644
--- a/views/menus.xml
+++ b/views/menus.xml
@@ -312,6 +312,15 @@
             groups="cgscop_partner.group_cg_administrator,cgscop_partner.group_ur_list_modif"
             sequence="10"
         />
+
+        <menuitem
+            id="menu_scop_action_te"
+            parent="contacts.res_partner_menu_config"
+            action="action_scop_action_te"
+            groups="cgscop_partner.group_cg_administrator"
+            sequence="10"
+        />
+
         <menuitem
             id="menu_scop_federation"
             name="Fédération"
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 52710ef..9a14e96 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -1753,10 +1753,20 @@
                     </page>
                     <page
                         name='scop_rse'
-                        string="Actions RSE"
+                        string="Actions Transition éco."
                         attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status', 'not in', ['4_suivi', '6_decede'])]}"
                     >
-                        <field name="action_rse_ids" widget="one2many">
+                        <group>
+                            <field
+                                name="action_te_ids"
+                                widget="many2many_tags"
+                                options="{'color_field': 'color', 'no_create': True}"
+                            />
+                        </group>
+                        <field name="action_rse_ids"
+                               widget="one2many"
+                               invisible="1"
+                               >
                             <tree string="Actions RSE" editable="top">
                                 <field name="action_category" required="1" />
                                 <field name="action_date" required="1" />
@@ -1766,6 +1776,7 @@
                             </tree>
                         </field>
                     </page>
+
                     <page
                         name='scop_xnet'
                         string="Extranet"
diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml
index bebbe4e..253269d 100644
--- a/views/res_partner_cooperative.xml
+++ b/views/res_partner_cooperative.xml
@@ -130,7 +130,7 @@
                     <separator />
                     <separator />
                     <filter
-                        string="Engagement RSE"
+                        string="Engagement TE"
                         name="is_rse"
                         domain="[('is_rse', '=', True)]"
                     />
diff --git a/views/scop_config_views.xml b/views/scop_config_views.xml
index 5906224..5f257ab 100644
--- a/views/scop_config_views.xml
+++ b/views/scop_config_views.xml
@@ -484,5 +484,27 @@
                 </field>
             </field>
         </record>
+
+
+        <!-- Actions TE -->
+        <record id="view_scop_action_te_tree" model="ir.ui.view">
+            <field name="name">scop.action.te.tree</field>
+            <field name="model">scop.action.te</field>
+            <field name="arch" type="xml">
+                <tree string="Actions transition écologique" editable="top">
+                    <field name="name" />
+                </tree>
+            </field>
+        </record>
+
+        <record
+            id="action_scop_action_te" model="ir.actions.act_window"
+        >
+            <field name="name">Actions transition écologique</field>
+            <field name="res_model">scop.action.te</field>
+            <field name="view_mode">tree</field>
+            <field name="help">Affiche et gère la liste des Actions TE</field>
+        </record>
+
     </data>
 </odoo>
-- 
GitLab