diff --git a/models/__init__.py b/models/__init__.py index 13c9b782516f8d80212a4be4bb76db2bac7aba04..37376149da3ccaa26d5e55955234bb24e1332eed 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 f962286e794c18ec6b779cc0e132b8ef01061234..f871676f7bdf76cb7c242eacc8f47da30f510ba5 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 0000000000000000000000000000000000000000..7c4b1a07671b6b743d644413ad8427974e50fe19 --- /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 c5af899edc06e8a6c149746cf712eb772ca79a7c..63d8136a4e1ed08dd62c73bf124d5038a50e991a 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 37035dd1405468835e060fac98b36ec7e7aa00d0..c7e84b69c05aa9c2fd3825f78cf5a5c390958547 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 30e4e0083fffbd4fcdb08b065f35f58368a78908..73b2c7fc95599222d440a1836e55e2fc1adbf529 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'}"/>