diff --git a/datas/res_partner_federation_data.xml b/datas/res_partner_federation_data.xml index 03c1f98abaa39c21b3f6572f5d0a587ea3b1f62c..fc7382c7e01ffb1ea97bf9a5e0acd2b92b2c966a 100644 --- a/datas/res_partner_federation_data.xml +++ b/datas/res_partner_federation_data.xml @@ -2,23 +2,23 @@ <!-- Copyright 2019 Le Filament License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> - <data noupdate="1"> + <data noupdate="1"> - <record id="COM" model="res.partner.federation"> - <field name="name">Fed. des scop de la communication</field> - </record> + <record id="COM" model="res.partner.federation"> + <field name="name">Fed. des scop de la communication</field> + </record> - <record id="IND" model="res.partner.federation"> - <field name="name">Fed. des scop de l'industrie</field> - </record> + <record id="IND" model="res.partner.federation"> + <field name="name">Fed. des scop de l'industrie</field> + </record> - <record id="BTP" model="res.partner.federation"> - <field name="name">Fed. des scop du BTP</field> - </record> + <record id="BTP" model="res.partner.federation"> + <field name="name">Fed. des scop du BTP</field> + </record> - <record id="CAE" model="res.partner.federation"> - <field name="name">Fed. des CAE</field> - </record> + <record id="CAE" model="res.partner.federation"> + <field name="name">Fed. des CAE</field> + </record> - </data> + </data> </odoo> diff --git a/models/__init__.py b/models/__init__.py index fb998bbd6c9cac1231e3ec62b8d783687337e8ce..6de0dcbceccb8bfa5e655aea32276e9b93f18c99 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -14,4 +14,5 @@ from . import res_partner_newsletter from . import res_partner from . import res_users from . import scop_contribution +from . import scop_action_rse from . import union_regionale diff --git a/models/res_partner.py b/models/res_partner.py index e324d038595cc7585ffb2be7254e280577715682..a822e75dca71ca9b17b07eaffb6181254a6dd41b 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -419,6 +419,16 @@ class ScopPartner(models.Model): 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, default=False + ) + # Historique scop_period_ids = fields.One2many( comodel_name="scop.period", @@ -955,6 +965,15 @@ class ScopPartner(models.Model): ): partner.contact_legality = "customer" + @api.depends("action_rse_ids") + def _compute_is_rse(self): + """ + Est on une coop RSE + """ + for partner in self: + if len(partner.action_rse_ids) != 0: + partner.is_rse = True + # TODO: déplacer dans adhésions ? cotisations? @api.depends( "membership_period_ids", diff --git a/models/res_partner_lists.py b/models/res_partner_lists.py index b5c06fbcd60ba7e49d1d7951f925404ace7e21c4..ee63c0d499fff3c375d0f06bd1dc86de35c92ee6 100644 --- a/models/res_partner_lists.py +++ b/models/res_partner_lists.py @@ -88,7 +88,7 @@ class ResPartnerFederation(models.Model): _name = "res.partner.federation" _description = "Fédérations" - name = fields.Char('Fédération') + name = fields.Char("Fédération") class ScopPartnerNaf(models.Model): @@ -101,9 +101,8 @@ class ScopPartnerNaf(models.Model): ) id_riga = fields.Integer("ID RIGA") federation_id = fields.Many2one( - 'res.partner.federation', - string='Fédération', - ondelete='restrict') + "res.partner.federation", string="Fédération", ondelete="restrict" + ) class ResPartnerOrganizationType(models.Model): diff --git a/models/scop_action_rse.py b/models/scop_action_rse.py new file mode 100644 index 0000000000000000000000000000000000000000..633c78af4b3b292273cae253d4c5e2aa55771303 --- /dev/null +++ b/models/scop_action_rse.py @@ -0,0 +1,60 @@ +# © 2019 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +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 87c7938df975c0355835f99867b8c8f332f0792e..34e5bf77f2afb7758aac2e949f3e89adff050d1e 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -77,3 +77,4 @@ access_scop_membership_out_wizard,access_scop_membership_out_wizard,model_scop_m access_scop_status_wizard,access_scop_status_wizard,model_scop_status_wizard,base.group_user,1,1,1,1 access_res_partner_federation,access_res_partner_federation,model_res_partner_federation,base.group_user,1,0,0,0 admin_res_partner_federation,admin_res_partner_federation,model_res_partner_federation,cgscop_partner.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 6f3f9022214d916c23063f612b99d04d12c00620..65be7ae941ff66de8c35cf35cdac673a04745fb2 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -982,6 +982,9 @@ <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" @@ -1571,6 +1574,22 @@ </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" diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml index 45843d2c6b305fd4baf7afa823bd0cf09f65b14e..b240c8a6dd4975c91e5662d2cbd0905622d07127 100644 --- a/views/res_partner_cooperative.xml +++ b/views/res_partner_cooperative.xml @@ -145,6 +145,14 @@ domain="[('cae', '=', True)]" /> <separator /> + <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"