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:
Python dependencies
None
System dependencies
None
Required by
None
Description

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
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_ids One2many → res.partner.relation.all
    auto_join=True comodel_name='res.partner.relation.all' copy=False inverse_name='this_partner_id' selectable=False string='All relations with current partner'
  • relation_count Integer
    compute='_compute_relation_count' string='Relation Count'
  • search_relation_date Date
    compute=<expr> search='_search_relation_date' string='Relation valid'
  • search_relation_partner_category_id Many2one → res.partner.category
    comodel_name='res.partner.category' compute=<expr> search='_search_related_partner_category_id' string='Has relation with a partner in category'
  • search_relation_partner_id Many2one → res.partner
    comodel_name='res.partner' compute=<expr> search='_search_related_partner_id' string='Has relation with'
  • search_relation_type_id Many2one → res.partner.relation.type.selection
    comodel_name='res.partner.relation.type.selection' compute=<expr> search='_search_relation_type_id' string='Has relation of type'
Public methods (2)
  • get_partner_type(self)
    @api.multi
    Get 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.model
    Inject searching for current relation date if we search for relation properties and no explicit date was given.

New fields (5)
  • date_end Date
    args: 'Ending date'
  • date_start Date
    args: 'Starting date'
  • left_partner_id Many2one → res.partner
    auto_join=True comodel_name='res.partner' ondelete='cascade' required=True string='Source Partner'
  • right_partner_id Many2one → res.partner
    auto_join=True comodel_name='res.partner' ondelete='cascade' required=True string='Destination Partner'
  • type_id Many2one → res.partner.relation.type
    auto_join=True comodel_name='res.partner.relation.type' required=True string='Type'
Public methods (1)
  • create(self, vals)
    @api.model
    Override create to correct values, before being stored.

New fields (9)
  • active Boolean
    help='Records with date_end in the past are inactive' string='Active'
  • any_partner_id Many2many → res.partner
    comodel_name='res.partner' compute=<expr> search='_search_any_partner_id' string='Partner'
  • date_end Date
    args: 'Ending date'
  • date_start Date
    args: 'Starting date'
  • other_partner_id Many2one → res.partner
    comodel_name='res.partner' required=True string='Other Partner'
  • record_type Selection
    readonly=True selection=_RECORD_TYPES string='Record Type'
  • relation_id Many2one → res.partner.relation
    comodel_name='res.partner.relation' readonly=True string='Relation'
  • this_partner_id Many2one → res.partner
    comodel_name='res.partner' required=True string='One Partner'
  • type_selection_id Many2one → res.partner.relation.type.selection
    comodel_name='res.partner.relation.type.selection' required=True string='Relation Type'
Public methods (6)
  • create(self, vals)
    @api.model
    Divert 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.multi
    divert non-problematic creates to underlying table
  • write(self, vals)
    @api.multi
    divert non-problematic writes to underlying table

New fields (9)
  • allow_self Boolean
    default=False help='This relation can be set up with the same partner left and right' string='Reflexive'
  • contact_type_left Selection
    selection='get_partner_types' string='Left partner type'
  • contact_type_right Selection
    selection='get_partner_types' string='Right partner type'
  • handle_invalid_onchange Selection
    default='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=True selection=HANDLE_INVALID_ONCHANGE string='Invalid relation handling'
  • is_symmetric Boolean
    default=False help='This relation is the same from right to left as from left to right' old_name='symmetric' string='Symmetric'
  • name Char
    required=True string='Name' translate=True
  • name_inverse Char
    required=True string='Inverse name' translate=True
  • partner_category_left Many2one → res.partner.category
    comodel_name='res.partner.category' string='Left partner category'
  • partner_category_right Many2one → res.partner.category
    comodel_name='res.partner.category' string='Right partner category'
Public methods (4)
  • check_existing(self, vals)
    @api.multi
    Check wether records exist that do not fit new criteria.
  • get_partner_types(self)
    @api.model
    A 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.multi
    Handle existing relations if conditions change.

New fields (9)
  • allow_self Boolean
    string='Reflexive'
  • contact_type_other Selection
    selection=ResPartnerRelationType.get_partner_types.im_func string="Other record's partner type"
  • contact_type_this Selection
    selection=ResPartnerRelationType.get_partner_types.im_func string="Current record's partner type"
  • is_inverse Boolean
    help='Inverse relations are from right to left partner.' string='Is reverse type?'
  • is_symmetric Boolean
    string='Symmetric'
  • name Char
    args: 'Name'
  • partner_category_other Many2one → res.partner.category
    comodel_name='res.partner.category' string="Other record's category"
  • partner_category_this Many2one → res.partner.category
    comodel_name='res.partner.category' string="Current record's category"
  • type_id Many2one → res.partner.relation.type
    comodel_name='res.partner.relation.type' string='Type'
Public methods (2)
  • name_get(self)
    @api.multi
    Get name or name_inverse from underlying model.
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
    Search for name or inverse name in underlying model.

Loading…