TIP: You can type at any time to perform a new search.
Partner relations
partner_relations · OCA/partner-contact
- Repository
- OCA/partner-contact · module folder · Try on Runboat
- Module version
- 1.1.2
- Category
- Customer Relationship Management
- Folder size
- 0.26 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- None
- Last tracking update
- 2026-08-07 07:03:08
- Authors
- Camptocamp, Odoo Community Association (OCA), Therp BV
- Maintainers
- Camptocamp, Odoo Community Association (OCA), Therp BV
- Committers
- Yannick Vaucher, eLBati, Stéphane Bidoul, Sandy Carter, Holger Brunn, Pedro M. Baeza, Fekete Mihai, Stéphane Bidoul (ACSONE), Weblate, luc-demeyer, OCA Transbot, Charbel Jacquin, oca-travis, Antonio Espinosa, Jonathan Nemry (ACSONE)
- Odoo dependencies
-
odoo/odoo:- base
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
Code Analysis ⓘ
Views touched (6)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
form_res_partner_relation_type |
res.partner.relation.type | form | New | |
search_res_partner_relation_all |
res.partner.relation.all | search | New | |
tree_res_partner_relation_all |
res.partner.relation.all | tree | New | |
tree_res_partner_relation_type |
res.partner.relation.type | tree | New | |
view_partner_form |
partner_relations.view_partner_form | res.partner | form | Inherits base.view_partner_form |
view_res_partner_filter |
partner_relations.view_partner_filter | res.partner | Inherits base.view_res_partner_filter |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (6)
-
relation_all_idsOne2many → res.partner.relation.allauto_join=Truecomodel_name='res.partner.relation.all'copy=Falseinverse_name='this_partner_id'selectable=Falsestring='All relations with current partner' -
relation_countIntegercompute='_compute_relation_count'string='Relation Count' -
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_related_partner_category_id'string='Has relation with a partner in category' -
search_relation_partner_idMany2one → res.partnercomodel_name='res.partner'compute=<expr>search='_search_related_partner_id'string='Has relation with' -
search_relation_type_idMany2one → res.partner.relation.type.selectioncomodel_name='res.partner.relation.type.selection'compute=<expr>search='_search_relation_type_id'string='Has relation of type'
-
get_partner_type(self)@api.multiGet partner type for relation. :return: 'c' for company or 'p' for person :rtype: str -
search(self, args, offset=0, limit=None, order=None, count=False)@api.modelInject searching for current relation date if we search for relation properties and no explicit date was given.
New fields (5)
-
date_endDateargs: 'Ending date' -
date_startDateargs: 'Starting date' -
left_partner_idMany2one → res.partnerauto_join=Truecomodel_name='res.partner'ondelete='cascade'required=Truestring='Source Partner' -
right_partner_idMany2one → res.partnerauto_join=Truecomodel_name='res.partner'ondelete='cascade'required=Truestring='Destination Partner' -
type_idMany2one → res.partner.relation.typeauto_join=Truecomodel_name='res.partner.relation.type'required=Truestring='Type'
-
create(self, vals)@api.modelOverride create to correct values, before being stored.
New fields (9)
-
activeBooleanhelp='Records with date_end in the past are inactive'string='Active' -
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' -
other_partner_idMany2one → res.partnercomodel_name='res.partner'required=Truestring='Other Partner' -
record_typeSelectionreadonly=Trueselection=_RECORD_TYPESstring='Record Type' -
relation_idMany2one → res.partner.relationcomodel_name='res.partner.relation'readonly=Truestring='Relation' -
this_partner_idMany2one → res.partnercomodel_name='res.partner'required=Truestring='One Partner' -
type_selection_idMany2one → res.partner.relation.type.selectioncomodel_name='res.partner.relation.type.selection'required=Truestring='Relation Type'
-
create(self, vals)@api.modelDivert non-problematic creates to underlying table. Create a res.partner.relation but return the converted id. -
name_get(self)@api.multi -
onchange_partner_id(self)@api.onchange('this_partner_id', 'other_partner_id')Set domain on type_selection_id based on partner(s) selected. -
onchange_type_selection_id(self)@api.onchange('type_selection_id')Add domain on partners according to category and contact_type. -
unlink(self)@api.multidivert non-problematic creates to underlying table -
write(self, vals)@api.multidivert non-problematic writes to underlying table
New fields (9)
-
allow_selfBooleandefault=Falsehelp='This relation can be set up with the same partner left and right'string='Reflexive' -
contact_type_leftSelectionselection='get_partner_types'string='Left partner type' -
contact_type_rightSelectionselection='get_partner_types'string='Right partner type' -
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'old_name='symmetric'string='Symmetric' -
nameCharrequired=Truestring='Name'translate=True -
name_inverseCharrequired=Truestring='Inverse name'translate=True -
partner_category_leftMany2one → res.partner.categorycomodel_name='res.partner.category'string='Left partner category' -
partner_category_rightMany2one → res.partner.categorycomodel_name='res.partner.category'string='Right partner category'
-
check_existing(self, vals)@api.multiCheck wether records exist that do not fit new criteria. -
get_partner_types(self)@api.modelA partner can be an organisation or an individual. -
onchange_is_symmetric(self)@api.onchange('is_symmetric')Set right side to left side if symmetric. -
write(self, vals)@api.multiHandle existing relations if conditions change.
New fields (9)
-
allow_selfBooleanstring='Reflexive' -
contact_type_otherSelectionselection=ResPartnerRelationType.get_partner_types.im_funcstring="Other record's partner type" -
contact_type_thisSelectionselection=ResPartnerRelationType.get_partner_types.im_funcstring="Current record's partner type" -
is_inverseBooleanhelp='Inverse relations are from right to left partner.'string='Is reverse type?' -
is_symmetricBooleanstring='Symmetric' -
nameCharargs: 'Name' -
partner_category_otherMany2one → res.partner.categorycomodel_name='res.partner.category'string="Other record's category" -
partner_category_thisMany2one → res.partner.categorycomodel_name='res.partner.category'string="Current record's category" -
type_idMany2one → res.partner.relation.typecomodel_name='res.partner.relation.type'string='Type'
-
name_get(self)@api.multiGet name or name_inverse from underlying model. -
name_search(self, name='', args=None, operator='ilike', limit=100)@api.modelSearch for name or inverse name in underlying model.
Loading…