From 00f7b7199b97e16f7e94a6d3d78c4a8cf0d8d412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Silvant?= <hsilvant@scop.coop> Date: Fri, 11 Mar 2022 08:03:48 +0100 Subject: [PATCH] Ajout des action RSE sur les coop --- models/__init__.py | 1 + models/res_partner.py | 19 +++++++++++ models/scop_action_rse.py | 56 +++++++++++++++++++++++++++++++ security/ir.model.access.csv | 3 +- views/res_partner.xml | 15 +++++++++ views/res_partner_cooperative.xml | 2 ++ 6 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 models/scop_action_rse.py diff --git a/models/__init__.py b/models/__init__.py index 13c9b78..3737614 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -15,3 +15,4 @@ from . import scop_period from . import scop_questionnaire from . import scop_revision from . import union_regionale +from . import scop_action_rse \ No newline at end of file diff --git a/models/res_partner.py b/models/res_partner.py index f962286..f871676 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -354,6 +354,17 @@ class ScopPartner(models.Model): inverse_name='partner_id', string='Liste des Révisions') + # Action RSE + action_rse_ids = fields.One2many( + comodel_name='scop.action.rse', + inverse_name='partner_id', + string='Liste des Actions RSE') + + is_rse = fields.Boolean( + string="Engagement RSE", + compute="_compute_is_rse", + store=True) + # Historique scop_period_ids = fields.One2many( comodel_name='scop.period', @@ -751,6 +762,14 @@ class ScopPartner(models.Model): # ------------------------------------------------------ # Computed Fields # ------------------------------------------------------ + @api.depends('action_rse_ids') + def _compute_is_rse(self): + """ + Est on une coop RSE + """ + for partner in self: + partner.is_rse = len(partner.action_rse_ids) != 0 + @api.depends('siret') def _compute_from_siret(self): for company in self: diff --git a/models/scop_action_rse.py b/models/scop_action_rse.py new file mode 100644 index 0000000..7c4b1a0 --- /dev/null +++ b/models/scop_action_rse.py @@ -0,0 +1,56 @@ +# © 2019 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from datetime import datetime,date +from odoo import models, fields, api +from odoo.exceptions import ValidationError + + +class ScopRevision(models.Model): + _name = "scop.action.rse" + _description = "Actions RSE engagées" + _order = 'partner_id, action_category, action_date' + + partner_id = fields.Many2one( + comodel_name='res.partner', + string='Organisme', + domain=[('is_company', '=', True)], + ondelete='cascade', index=True) + + action_date = fields.Date( + string="Début de l'action", + index=True, + track_visibility='onchange') + + action_category = fields.Selection( + [('1', "1 - La gouvernance de l’organisation"), + ('2', "2 - Les droits de l’homme"), + ('3', '3 - Les relations et les conditions de travail'), + ('4', "4 - L’environnement"), + ('5', '5 - La loyauté des pratiques dans les affaires'), + ('6', '6 - Les questions relatives aux consommateurs'), + ('7', '7 - Les communautés et le territoire')], + string='Catégorie RSE', + track_visibility='onchange') + + action_manager = fields.Text( + string="Référent de l'action", + track_visibility='onchange') + + action_description = fields.Text( + string="Description de l'action", + track_visibility='onchange') + + action_measure = fields.Text( + string="Indicateurs de suivi", + track_visibility='onchange') + + # ------------------------------------------------------ + # Contraintes SQL + # ------------------------------------------------------ + # Unicité de l'action par organisme et par date + _sql_constraints = [ + ('Action RSE', + 'unique(partner_id, action_category,action_date)', + "Une action RSE a déjà été enregistrée à cette date"), + ] diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index c5af899..63d8136 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -75,4 +75,5 @@ admin_res_partner_naf,admin_res_partner_naf,model_res_partner_naf,group_cg_admin base.access_res_country_state_group_user,res_country_state group_user,base.model_res_country_state,base.group_partner_manager,1,0,0,0 admin_res_country_state,res_country_state_admin,base.model_res_country_state,group_cg_administrator,1,1,1,1 access_res_partner_filiere,access_res_partner_filiere,model_res_partner_filiere,base.group_user,1,1,1,0 -admin_res_partner_filiere,admin_res_partner_filiere,model_res_partner_filiere,group_cg_administrator,1,1,1,1 \ No newline at end of file +admin_res_partner_filiere,admin_res_partner_filiere,model_res_partner_filiere,group_cg_administrator,1,1,1,1 +access_action_rse_group_user,access_action_rse_group_user,model_scop_action_rse,base.group_user,1,1,1,1 diff --git a/views/res_partner.xml b/views/res_partner.xml index 37035dd..c7e84b6 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -423,6 +423,9 @@ <field name="is_union_sociale_update_date" readonly="True"/> <field name="is_federation_com" invisible="True"/> <field name="is_federation_indus" invisible="True"/> + <br/> + <field name="is_rse"/> + <br/> <field name="activity_federation_com_ids" groups="cgscop_partner.group_federation_com" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('is_federation_com', '!=', True)]}" widget="many2many_tags"/> <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> @@ -703,12 +706,24 @@ </tree> </field> </page> + <page name='scop_rse' string="Actions RSE" attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status', '!=', '6_suivi')]}"> + <field name="action_rse_ids" widget="one2many"> + <tree string="Actions RSE" editable="top" > + <field name="action_category" required="1"/> + <field name="action_date" required="1"/> + <field name="action_manager" required="1"/> + <field name="action_description" required="1"/> + <field name="action_measure" required="1"/> + </tree> + </field> + </page> <page name='scop_xnet' string="Extranet" attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status', '!=', '6_suivi')]}"> <group string="Annuaire"> <field name="secteur_id" /> <field name="activity_desc" /> </group> </page> + </xpath> </field> diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml index 30e4e00..73b2c7f 100644 --- a/views/res_partner_cooperative.xml +++ b/views/res_partner_cooperative.xml @@ -44,6 +44,8 @@ <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="[('cae', '=', True)]"/> <separator/> + <filter string="Engagement RSE" name="is_rse" domain="[('is_rse', '=', 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