TIP: You can type at any time to perform a new search.
Partner Relations
partner_multi_relation · OCA/partner-contact
- Repository
- OCA/partner-contact · module folder · Try on Runboat
- Module version
- 1.1.0
- Category
- Customer Relationship Management
- Folder size
- 1.98 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/partner-contact
- Last tracking update
- 2026-08-07 09:06:26
- Authors
- Camptocamp, Odoo Community Association (OCA), Therp BV
- Maintainers
- Camptocamp, Odoo Community Association (OCA), Therp BV
- Committers
- Ronald Portier, Weblate, OCA-git-bot, oca-ci
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
This module aims to provide generic means to model relations between partners. Examples would be 'is sibling of' or 'is friend of', but also 'has contract X with' or 'is assistant of'. This way, you can encode your knowledge about your partners directly in your partner list.
Code Analysis ⓘ
Views touched (7)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
form_res_partner_relation |
res.partner.relation | form | New | |
form_res_partner_relation_type |
res.partner.relation.type | form | New | |
search_res_partner_relation |
res.partner.relation | search | New | |
tree_res_partner_relation |
res.partner.relation | list | New | |
tree_res_partner_relation_type |
res.partner.relation.type | list | New | |
view_partner_form |
partner_multi_relation.view_partner_form | res.partner | form | Inherits base.view_partner_form |
view_res_partner_filter |
partner_multi_relation.view_partner_filter | res.partner | Inherits base.view_res_partner_filter |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (3)
New fields (7)
-
relation_countIntegercompute='_compute_relation_count' -
relation_left_idsOne2many → res.partner.relationcomodel_name='res.partner.relation'copy=Falseinverse_name='left_partner_id'string='Left relations with current partner' -
relation_right_idsOne2many → res.partner.relationcomodel_name='res.partner.relation'copy=Falseinverse_name='right_partner_id'string='Right relations with current partner' -
search_relation_dateDatecompute=<expr>search='_search_relation_date'string='Relation valid' -
search_relation_partner_category_idMany2one → res.partner.categorycomodel_name='res.partner.category'compute=<expr>search='_search_relation_partner_category_id'string='Has relation with a partner in category' -
search_relation_partner_idMany2one → res.partnercomodel_name='res.partner'compute=<expr>search='_search_relation_partner_id'string='Has relation with' -
search_relation_type_idMany2one → res.partner.relation.typecomodel_name='res.partner.relation.type'compute=<expr>search='_search_relation_type_id'string='Has relation of type'
-
action_view_relations(self) -
search(self, domain, offset=0, limit=None, order=None)@api.modelInject searching for current relation date if we search for relation properties and no explicit date was given.
New fields (13)
-
activeBooleandefault=Truehelp='Records with date_end in the past should be inactive'readonly=True -
any_partner_idMany2many → res.partnercomodel_name='res.partner'compute=<expr>search='_search_any_partner_id'string='Partner' -
date_endDateargs: 'Ending date' -
date_startDateargs: 'Starting date' -
left_partner_idMany2one → res.partnerbypass_search_access=Truecomodel_name='res.partner'ondelete='cascade'required=Truestring='Source Partner' -
left_partner_id_domainBinarycompute='_compute_left_partner_id_domain'default=[] -
other_partner_idMany2one → res.partnercomodel_name='res.partner'compute='_compute_other_partner_id'help='Partner shown right when no currently active partner, or connected partnes as seen from current partner.' -
right_partner_idMany2one → res.partnerbypass_search_access=Truecomodel_name='res.partner'ondelete='cascade'required=Truestring='Destination Partner' -
right_partner_id_domainBinarycompute='_compute_right_partner_id_domain'default=[] -
this_partner_idMany2one → res.partnercomodel_name='res.partner'compute='_compute_this_partner_id'help='Partner shown left when no currently active partner' -
type_idMany2one → res.partner.relation.typebypass_search_access=Truecomodel_name='res.partner.relation.type'required=Truestring='Type' -
type_id_displayCharcompute='_compute_type_id_display'help='In current context relation is inverse' -
type_id_domainBinarycompute='_compute_type_id_domain'default=[]
-
create(self, vals_list)@api.model_create_multiOverride create to correct values, before being stored. -
default_get(self, fields_list)@api.model
New fields (9)
-
allow_selfBooleandefault=Falsehelp='This relation can be set up with the same partner left and right'string='Reflexive' -
handle_invalid_onchangeSelectiondefault='restrict'help='When adding relations criteria like partner type and category are checked.\nHowever when you change the criteria, there might be relations that do not fit the new criteria.\nSpecify how this situation should be handled.'required=Trueselection=HANDLE_INVALID_ONCHANGEstring='Invalid relation handling' -
is_symmetricBooleandefault=Falsehelp='This relation is the same from right to left as from left to right'string='Symmetric' -
left_partner_category_idMany2one → res.partner.categorycomodel_name='res.partner.category'string='Left partner category' -
left_partner_typeSelectionselection='get_partner_types'string='Left partner type' -
nameCharrequired=Truetranslate=True -
name_inverseCharrequired=Truestring='Inverse name'translate=True -
right_partner_category_idMany2one → res.partner.categorycomodel_name='res.partner.category'string='Right partner category' -
right_partner_typeSelectionselection='get_partner_types'string='Right partner type'
-
check_existing(self, vals)Check wether records exist that do not fit new criteria. -
create(self, vals_list)@api.model_create_multi -
get_partner_types(self)@api.modelA partner can be an organisation or an individual. -
unlink(self)Allow delete of relation type, even when connections exist. Relations can be deleted if relation type allows it, so existing relations do not prevent unlink of relation type. -
write(self, vals)Handle existing relations if conditions change.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…