From d104ff1fefb152e3046a3774760cc1d1483e5ddf Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Tue, 15 Feb 2022 09:44:50 +0100 Subject: [PATCH] [add] reflexive relation on membership --- models/res_partner.py | 35 +++++++++++++++++++++++++++++++++++ views/res_partner.xml | 11 +++++++++++ 2 files changed, 46 insertions(+) diff --git a/models/res_partner.py b/models/res_partner.py index ec0c27d..d7133bd 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -26,6 +26,24 @@ class ResPartner(models.Model): string='Contact Délégué', domain="[('parent_id', '=', id)]" ) + membership_is_delegate = fields.Boolean( + string='Personne Délégué', + compute='_compute_membership_is_delegate', + store=True, + default=False + ) + membership_is_mandate = fields.Boolean( + string='Personne Mandataire', + compute='_compute_membership_is_mandate', + store=True, + default=False + ) + membership_is_contact = fields.Boolean( + string='Personne Contact Adhésion', + compute='_compute_membership_is_contact', + store=True, + default=False + ) # ------------------------------------------------------ # SQL Constraints @@ -38,6 +56,23 @@ class ResPartner(models.Model): # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ + @api.depends('parent_id', 'parent_id.membership_delegate_id') + def _compute_membership_is_delegate(self): + for partner in self: + if partner.parent_id.membership_delegate_id == partner: + partner.membership_is_delegate = True + + @api.depends('parent_id', 'parent_id.membership_mandate_id') + def _compute_membership_is_mandate(self): + for partner in self: + if partner.parent_id.membership_mandate_id == partner: + partner.membership_is_mandate = True + + @api.depends('parent_id', 'parent_id.membership_contact_id') + def _compute_membership_is_contact(self): + for partner in self: + if partner.parent_id.membership_contact_id == partner: + partner.membership_is_contact = True # ------------------------------------------------------ # Onchange / Constraints diff --git a/views/res_partner.xml b/views/res_partner.xml index dc60dcc..458f6a5 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -76,6 +76,17 @@ </group> </group> </xpath> + <xpath expr="//page[@name='internal_notes']" position="after"> + <page name="membership_contact" string="Membre" attrs="{'invisible': ['|', ('is_company', '=', True), ('parent_id', '=', False)]}"> + <group> + <group> + <field name="membership_is_delegate"/> + <field name="membership_is_mandate"/> + <field name="membership_is_contact"/> + </group> + </group> + </page> + </xpath> </field> </record> -- GitLab