Show partner relations in own tab

partner_multi_relation_tabs
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/12.0/partner_multi_relation_tabs
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSRonald Portier, GitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Simone Orsi, Jan Verbeek, Stephan Keller, Radovan Skolnik
WEBSITE
WEBSITEhttps://github.com/OCA/partner-contact
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/partner-contact:
    - partner_multi_relation
OCA/web:
    - web_domain_field
    - web_tree_many2one_clickable
odoo/odoo:
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
form_res_partner_relation_type res.partner.relation.type field Inherits partner_multi_relation.form_res_partner_relation_type
form_res_partner_tab res.partner.tab form New
search_res_partner_relation_all res.partner.relation.all field Inherits partner_multi_relation.search_res_partner_relation_all
search_res_partner_relation_type res.partner.relation.type field Inherits partner_multi_relation.search_res_partner_relation_type
tree_res_partner_tab res.partner.tab tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (3)
  • add_field(self, tab)
    Add tab field to model. Will replace existing field if already present.
  • browse(self, arg=None, prefetch=None)
    @api.model
    Make sure tabs are always up to date.
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Override to add relation tabs to form.

New fields (1)
  • tab_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' readonly=True string='Show relation on tab'
Public methods (1)
  • onchange_partner_id(self)
    @api.onchange('this_partner_id', 'other_partner_id')
    Add tab if needed to type_selection_id domain. This method makes sure that when a relation is added to a tab, it is with a relation type meant to be placed on that tab.

New fields (2)
  • tab_left_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' help='Tab in which these relations will be visible on partner.' string='Tab for this relation'
  • tab_right_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' help='Tab in which inverse relations will be visible on partner.' string='Tab for inverse relation'
Public methods (0)

No public methods.

New fields (1)
  • tab_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' readonly=True string='Show relation on tab'
Public methods (0)

No public methods.

New fields (5)
  • code Char
    help='Language independent code for tab' required=True string='Code'
  • contact_type Selection
    selection='get_partner_types' string='Valid for partner type'
  • name Char
    help='Will provide title for tab in user language' index=True required=True string='Name' translate=True
  • partner_category_id Many2one → res.partner.category
    comodel_name='res.partner.category' string='Valid for partner category'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' help='This tab will only show for certain partners.\nDo not combine this with selection for contact type or category.' string='Partners with this tab'
Public methods (6)
  • create(self, vals)
    @api.model
    Create new tab.
  • get_partner_types(self)
    @api.model
    Partner types are defined by model res.partner.relation.type.
  • get_tabs(self)
    @api.model
    Convert information on tabs in database to array of objects.
  • unlink(self)
    @api.multi
    Unlink should first remove references.
  • update_types(self, vals=None)
    @api.multi
    Update types on write or unlink. If we have no vals, assume unlink.
  • write(self, vals)
    @api.multi
    Remove tab from types no longer satifying criteria.

New fields (1)
  • last_value Integer
Public methods (2)
  • get_sequence(self)
    @api.model@ormcache()
    Get last sequence for res_partner_tab_sequence.
  • increment_sequence(self)
    @api.model
    Set sequence, creating sequence object if needed.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/11.0/partner_multi_relation_tabs
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSHolger Brunn, OCA Transbot, oca-travis, OCA-git-bot
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/partner-contact:
    - partner_multi_relation
odoo/odoo:
    - contacts
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
form_res_partner_relation_type res.partner.relation.type field Inherits partner_multi_relation.form_res_partner_relation_type
form_res_partner_tab res.partner.tab form New
search_res_partner_relation_all res.partner.relation.all field Inherits partner_multi_relation.search_res_partner_relation_all
tree_res_partner_tab res.partner.tab tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (3)
  • add_field(self, tab)
    Add tab field to model. Will replace existing field if already present.
  • browse(self, arg=None, prefetch=None)
    @api.multi
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Override to add relation tabs to form.

New fields (1)
  • tab_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' readonly=True string='Show relation on tab'
Public methods (1)
  • onchange_partner_id(self)
    @api.onchange('this_partner_id', 'other_partner_id')
    Add tab if needed to type_selection_id domain. This method makes sure that when a relation is added to a tab, it is with a relation type meant to be placed on that tab.

New fields (2)
  • tab_left_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' help='Tab in which these relations will be visible on partner.' string='Tab for this relation'
  • tab_right_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' help='Tab in which inverse relations will be visible on partner.' string='Tab for inverse relation'
Public methods (0)

No public methods.

New fields (1)
  • tab_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' readonly=True string='Show relation on tab'
Public methods (0)

No public methods.

New fields (5)
  • code Char
    help='Language independent code for tab' required=True string='Code'
  • contact_type Selection
    selection='get_partner_types' string='Valid for partner type'
  • name Char
    help='Will provide title for tab in user language' required=True string='Name' translate=True
  • partner_category_id Many2one → res.partner.category
    comodel_name='res.partner.category' string='Valid for partner category'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' help='This tab will only show for certain partners.\nDo not combine this with selection for contact type or category.' string='Partners with this tab'
Public methods (5)
  • get_partner_types(self)
    @api.model
    Partner types are defined by model res.partner.relation.type.
  • get_tabs(self)
    @api.model
    Convert information on tabs in database to array of objects.
  • unlink(self)
    @api.multi
    Unlink should first remove references.
  • update_types(self, vals=None)
    @api.multi
    Update types on write or unlink. If we have no vals, assume unlink.
  • write(self, vals)
    @api.multi
    Remove tab from types no longer satifying criteria.
REPOSITORY
REPOSITORYOCA/partner-contact
GIT
GIThttps://github.com/OCA/partner-contact.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/partner-contact/tree/10.0/partner_multi_relation_tabs
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSRonald Portier, OCA Transbot, oca-travis, OCA-git-bot
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/partner-contact:
    - partner_multi_relation
OCA/web:
    - web_tree_many2one_clickable
odoo/odoo:
    - web
    - base
    - sales_team
    - mail
    - base_setup
    - web_kanban
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
form_res_partner_relation_type res.partner.relation.type field Inherits partner_multi_relation.form_res_partner_relation_type
form_res_partner_tab res.partner.tab form New
search_res_partner_relation_all res.partner.relation.all field Inherits partner_multi_relation.search_res_partner_relation_all
tree_res_partner_tab res.partner.tab tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (3)
  • add_field(self, tab)
    Add tab field to model. Will replace existing field if already present.
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Override to add relation tabs to form.
  • mapped(self, func)
    Handle situation where mapped refers to not yet added tab field.

New fields (1)
  • tab_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' readonly=True string='Show relation on tab'
Public methods (1)
  • onchange_partner_id(self)
    @api.onchange('this_partner_id', 'other_partner_id')
    Add tab if needed to type_selection_id domain. This method makes sure that when a relation is added to a tab, it is with a relation type meant to be placed on that tab.

New fields (2)
  • tab_left_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' help='Tab in which these relations will be visible on partner.' string='Tab for this relation'
  • tab_right_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' help='Tab in which inverse relations will be visible on partner.' string='Tab for inverse relation'
Public methods (0)

No public methods.

New fields (1)
  • tab_id Many2one → res.partner.tab
    comodel_name='res.partner.tab' readonly=True string='Show relation on tab'
Public methods (0)

No public methods.

New fields (5)
  • code Char
    help='Language independent code for tab' required=True string='Code'
  • contact_type Selection
    selection='get_partner_types' string='Valid for partner type'
  • name Char
    help='Will provide title for tab in user language' required=True string='Name' translate=True
  • partner_category_id Many2one → res.partner.category
    comodel_name='res.partner.category' string='Valid for partner category'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' help='This tab will only show for certain partners.\nDo not combine this with selection for contact type or category.' string='Partners with this tab'
Public methods (5)
  • get_partner_types(self)
    @api.model
    Partner types are defined by model res.partner.relation.type.
  • get_tabs(self)
    @api.model
    Convert information on tabs in database to array of objects.
  • unlink(self)
    @api.multi
    Unlink should first remove references.
  • update_types(self, vals=None)
    @api.multi
    Update types on write or unlink. If we have no vals, assume unlink.
  • write(self, vals)
    @api.multi
    Remove tab from types no longer satifying criteria.