diff --git a/partner_relations/model/res_partner_relation.py b/partner_relations/model/res_partner_relation.py index 99dbcfbb7..35bc71ddf 100644 --- a/partner_relations/model/res_partner_relation.py +++ b/partner_relations/model/res_partner_relation.py @@ -82,6 +82,7 @@ class ResPartnerRelation(models.Model): ), } + allow_self = fields.Boolean(related='type_id.allow_self') left_contact_type = fields.Selection( lambda s: s.env['res.partner.relation.type']._get_partner_types(), 'Left Partner Type', @@ -287,9 +288,10 @@ class ResPartnerRelation(models.Model): :raises exceptions.Warning: When constraint is violated """ if self.left_partner_id == self.right_partner_id: - raise exceptions.Warning( - _('Partners cannot have a relation with themselves.') - ) + if not self.allow_self: + raise exceptions.Warning( + _('Partners cannot have a relation with themselves.') + ) @api.one @api.constrains('left_partner_id', 'right_partner_id', 'active') diff --git a/partner_relations/model/res_partner_relation_type.py b/partner_relations/model/res_partner_relation_type.py index d7e68fbe2..e47041e61 100644 --- a/partner_relations/model/res_partner_relation_type.py +++ b/partner_relations/model/res_partner_relation_type.py @@ -57,6 +57,9 @@ class ResPartnerRelationType(models.Model): 'res.partner.category', 'Right partner category', ) + allow_self = fields.Boolean( + 'Allow both sides to be the same' + ) @api.model def _get_partner_types(self): diff --git a/partner_relations/view/res_partner_relation_type.xml b/partner_relations/view/res_partner_relation_type.xml index d0a3c0746..415dbe154 100644 --- a/partner_relations/view/res_partner_relation_type.xml +++ b/partner_relations/view/res_partner_relation_type.xml @@ -9,6 +9,7 @@ + @@ -19,6 +20,7 @@
+