Sales Teams

sales_team
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/sales_team
VERSION
VERSION 1.1
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Julien Castiaux, Romeo Fragomeli, Victor Feyens, Tiffany Chang (tic), Gorash, Valentin Chevalier, Renaud Thiry, Victor Piryns (pivi), amdi-odoo, Dylan Kiss (dyki), Noe Antoine, Andrzej(pian), nihp-odoo, guce, yagp-odoo, Krzysztof Magusiak (krma), saurabh
WEBSITE
WEBSITEhttps://www.odoo.com/app/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams with CRM and/or Sales
=======================================================================
 

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
crm_team_member_view_form crm.team.member.view.form crm.team.member form New
crm_team_member_view_form_from_team crm.team.member.view.form.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_form
crm_team_member_view_kanban crm.team.member.view.kanban crm.team.member kanban New
crm_team_member_view_kanban_from_team crm.team.member.view.kanban.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_kanban
crm_team_member_view_search crm.team.member.view.search crm.team.member search New
crm_team_member_view_tree crm.team.member.view.list crm.team.member list New
crm_team_member_view_tree_from_team crm.team.member.view.list.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_tree
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.view.kanban crm.team kanban New
crm_team_view_kanban_dashboard crm.team.view.kanban.dashboard crm.team kanban New
crm_team_view_search crm.team.view.search crm.team search New
crm_team_view_tree crm.team.list crm.team list New
sales_team_crm_tag_view_form sales.team.crm.tag.view.form crm.tag form New
sales_team_crm_tag_view_tree sales.team.crm.tag.view.list crm.tag list New
Models touched (4)

New fields (2)
  • color Integer
    default=_get_default_color args: 'Color'
  • name Char
    required=True translate=True args: 'Tag Name'
Public methods (0)

No public methods.

New fields (16)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    default=_get_default_color help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    index=True string='Company' args: 'res.company'
  • crm_team_member_all_ids One2many → crm.team.member
    context={'active_test': False} string='Sales Team Members (incl. inactive)' args: 'crm.team.member', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    context={'active_test': True} help='Add members to automatically assign their documents to this sales team.' string='Sales Team Members' args: 'crm.team.member', 'crm_team_id'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_company_ids Many2many → res.company
    compute='_compute_member_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • member_ids Many2many → res.users
    compute='_compute_member_ids' domain="['&', ('share', '=', False), ('company_ids', 'in', member_company_ids)]" help='Users assigned to this team.' inverse='_inverse_member_ids' search='_search_member_ids' string='Salespersons' args: 'res.users'
  • member_warning Text
    compute='_compute_member_warning' args: 'Membership Issue Warning'
  • name Char
    required=True translate=True args: 'Sales Team'
  • sequence Integer
    default=10 args: 'Sequence'
  • user_id Many2one → res.users
    check_company=True domain=[('share', '!=', True)] string='Team Leader' args: 'res.users'
Public methods (3)
  • action_primary_channel_button(self)
    Skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options.
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (13)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    related='user_id.company_id' string='Company' args: 'res.company'
  • crm_team_id Many2one → crm.team
    check_company=False default=False group_expand='_read_group_expand_full' index=True ondelete='cascade' required=True string='Sales Team' args: 'crm.team'
  • email Char
    related='user_id.email' string='Email'
  • image_128 Image
    max_height=128 max_width=128 related='user_id.image_128' args: 'Image (128)'
  • image_1920 Image
    max_height=1920 max_width=1920 related='user_id.image_1920' args: 'Image'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_warning Text
    compute='_compute_member_warning'
  • name Char
    readonly=False related='user_id.display_name' string='Name'
  • phone Char
    related='user_id.phone' string='Phone'
  • user_company_ids Many2many → res.company
    compute='_compute_user_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • user_id Many2one → res.users
    check_company=True domain="[('share', '=', False), ('id', 'not in', user_in_teams_ids), ('company_ids', 'in', user_company_ids)]" index=True ondelete='cascade' required=True string='Salesperson' args: 'res.users'
  • user_in_teams_ids Many2many → res.users
    compute='_compute_user_in_teams_ids' help='UX: Give users not to add in the currently chosen team to avoid duplicates' args: 'res.users'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Specific behavior implemented on create * mono membership mode: other user memberships are automatically archived (a warning already told it in form view); * creating a membership already existing as archived: do nothing as people can manage them from specific menu "Members"; Also remove autofollow on create. No need to follow team members when creating them as chatter is mainly used for information purpose (tracked fields).
  • write(self, vals)
    Specific behavior about active. If you change user_id / team_id user get warnings in form view and a raise in constraint check. We support archive / activation of memberships that toggles other memberships. But we do not support manual creation or update of user_id / team_id. This either works, either crashes). Indeed supporting it would lead to complex code with low added value. Users should create or remove members, and maybe archive / activate them. Updating manually memberships by modifying user_id or team_id is advanced and does not benefit from our support.

New fields (3)
  • crm_team_ids Many2many → crm.team
    check_company=True compute='_compute_crm_team_ids' copy=False readonly=True search='_search_crm_team_ids' string='Sales Teams' args: 'crm.team', 'crm_team_member', 'user_id', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    string='Sales Team Members' args: 'crm.team.member', 'user_id'
  • sale_team_id Many2one → crm.team
    compute='_compute_sale_team_id' help='Main user sales team. Used notably for pipeline, or to set sales team in invoicing or subscription.' readonly=True store=True string='User Sales Team' args: 'crm.team'
Public methods (1)
  • action_archive(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/sales_team
VERSION
VERSION 1.1
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Simonis, Aaron Bohy, Odoo Online, Victor Feyens, Tiffany Chang (tic), Gorash, Didier (did), Renaud Thiry, Louis Wicket (wil), amdi-odoo, Gauthier Wala (gawa), Pierre-Yves Dufays, Dylan Kiss (dyki), omra-odoo, Andrzej(pian), Maryam Kia, Jérémy Hennecart (jeh), Lina (liew), nihp-odoo, sami odoo, Louis (wil), Shaan Thakkar (THSH), Krzysztof Magusiak (krma)
WEBSITE
WEBSITEhttps://www.odoo.com/app/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams with CRM and/or Sales
=======================================================================
 

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
crm_team_member_view_form crm.team.member.view.form crm.team.member form New
crm_team_member_view_form_from_team crm.team.member.view.form.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_form
crm_team_member_view_kanban crm.team.member.view.kanban crm.team.member kanban New
crm_team_member_view_kanban_from_team crm.team.member.view.kanban.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_kanban
crm_team_member_view_search crm.team.member.view.search crm.team.member search New
crm_team_member_view_tree crm.team.member.view.list crm.team.member list New
crm_team_member_view_tree_from_team crm.team.member.view.list.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_tree
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.view.kanban crm.team kanban New
crm_team_view_kanban_dashboard crm.team.view.kanban.dashboard crm.team kanban New
crm_team_view_search crm.team.view.search crm.team search New
crm_team_view_tree crm.team.list crm.team list New
sales_team_crm_tag_view_form sales.team.crm.tag.view.form crm.tag form New
sales_team_crm_tag_view_tree sales.team.crm.tag.view.list crm.tag list New
Models touched (4)

New fields (2)
  • color Integer
    default=_get_default_color args: 'Color'
  • name Char
    required=True translate=True args: 'Tag Name'
Public methods (0)

No public methods.

New fields (17)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    index=True string='Company' args: 'res.company'
  • crm_team_member_all_ids One2many → crm.team.member
    context={'active_test': False} string='Sales Team Members (incl. inactive)' args: 'crm.team.member', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    context={'active_test': True} help='Add members to automatically assign their documents to this sales team.' string='Sales Team Members' args: 'crm.team.member', 'crm_team_id'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_company_ids Many2many → res.company
    compute='_compute_member_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • member_ids Many2many → res.users
    compute='_compute_member_ids' domain="['&', ('share', '=', False), ('company_ids', 'in', member_company_ids)]" help='Users assigned to this team.' inverse='_inverse_member_ids' search='_search_member_ids' string='Salespersons' args: 'res.users'
  • member_warning Text
    compute='_compute_member_warning' args: 'Membership Issue Warning'
  • name Char
    required=True translate=True args: 'Sales Team'
  • sequence Integer
    default=10 args: 'Sequence'
  • user_id Many2one → res.users
    check_company=True string='Team Leader' args: 'res.users'
Public methods (3)
  • action_primary_channel_button(self)
    Skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options.
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (14)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    related='user_id.company_id' string='Company' args: 'res.company'
  • crm_team_id Many2one → crm.team
    check_company=False default=False group_expand='_read_group_expand_full' index=True ondelete='cascade' required=True string='Sales Team' args: 'crm.team'
  • email Char
    related='user_id.email' string='Email'
  • image_128 Image
    max_height=128 max_width=128 related='user_id.image_128' args: 'Image (128)'
  • image_1920 Image
    max_height=1920 max_width=1920 related='user_id.image_1920' args: 'Image'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_warning Text
    compute='_compute_member_warning'
  • mobile Char
    related='user_id.mobile' string='Mobile'
  • name Char
    readonly=False related='user_id.display_name' string='Name'
  • phone Char
    related='user_id.phone' string='Phone'
  • user_company_ids Many2many → res.company
    compute='_compute_user_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • user_id Many2one → res.users
    check_company=True domain="[('share', '=', False), ('id', 'not in', user_in_teams_ids), ('company_ids', 'in', user_company_ids)]" index=True ondelete='cascade' required=True string='Salesperson' args: 'res.users'
  • user_in_teams_ids Many2many → res.users
    compute='_compute_user_in_teams_ids' help='UX: Give users not to add in the currently chosen team to avoid duplicates' args: 'res.users'
Public methods (2)
  • create(self, values_list)
    @api.model_create_multi
    Specific behavior implemented on create * mono membership mode: other user memberships are automatically archived (a warning already told it in form view); * creating a membership already existing as archived: do nothing as people can manage them from specific menu "Members"; Also remove autofollow on create. No need to follow team members when creating them as chatter is mainly used for information purpose (tracked fields).
  • write(self, values)
    Specific behavior about active. If you change user_id / team_id user get warnings in form view and a raise in constraint check. We support archive / activation of memberships that toggles other memberships. But we do not support manual creation or update of user_id / team_id. This either works, either crashes). Indeed supporting it would lead to complex code with low added value. Users should create or remove members, and maybe archive / activate them. Updating manually memberships by modifying user_id or team_id is advanced and does not benefit from our support.

New fields (3)
  • crm_team_ids Many2many → crm.team
    check_company=True compute='_compute_crm_team_ids' copy=False readonly=True search='_search_crm_team_ids' string='Sales Teams' args: 'crm.team', 'crm_team_member', 'user_id', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    string='Sales Team Members' args: 'crm.team.member', 'user_id'
  • sale_team_id Many2one → crm.team
    compute='_compute_sale_team_id' help='Main user sales team. Used notably for pipeline, or to set sales team in invoicing or subscription.' readonly=True store=True string='User Sales Team' args: 'crm.team'
Public methods (1)
  • action_archive(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/sales_team
VERSION
VERSION 1.1
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Aaron Bohy, Jeremy Kersten, Yannick Tivisse, Odoo Online, Adrien Dieudonne, Jorge Pinna Puissant, Aurélien Warnon, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, sofiagvaladze, Florian Charlier, Patrick Hoste, niyasraphy, Louis Wicket (wil), miad-odoo, amdi-odoo, Pierre-Yves Dufays, Maruan Aguerdouh (magm), Carsten Wolff (cawo), Dylan Kiss (dyki), Bruno Boi, Jérémy Hennecart (jeh), Louis (wil), Vincent Sevestre
WEBSITE
WEBSITEhttps://www.odoo.com/app/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams with CRM and/or Sales
=======================================================================
 

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
crm_team_member_view_form crm.team.member.view.form crm.team.member form New
crm_team_member_view_form_from_team crm.team.member.view.form.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_form
crm_team_member_view_kanban crm.team.member.view.kanban crm.team.member kanban New
crm_team_member_view_kanban_from_team crm.team.member.view.kanban.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_kanban
crm_team_member_view_search crm.team.member.view.search crm.team.member search New
crm_team_member_view_tree crm.team.member.view.tree crm.team.member tree New
crm_team_member_view_tree_from_team crm.team.member.view.tree.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_tree
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.view.kanban crm.team kanban New
crm_team_view_kanban_dashboard crm.team.view.kanban.dashboard crm.team kanban New
crm_team_view_search crm.team.view.search crm.team search New
crm_team_view_tree crm.team.tree crm.team tree New
res_partner_view_team res.partner.view.team res.partner xpath Inherits base.view_partner_form
sales_team_crm_tag_view_form sales.team.crm.tag.view.form crm.tag form New
sales_team_crm_tag_view_tree sales.team.crm.tag.view.tree crm.tag tree New
Models touched (5)

New fields (2)
  • color Integer
    default=_get_default_color args: 'Color'
  • name Char
    required=True translate=True args: 'Tag Name'
Public methods (0)

No public methods.

New fields (17)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> index=True string='Company' args: 'res.company'
  • crm_team_member_all_ids One2many → crm.team.member
    context={'active_test': False} string='Sales Team Members (incl. inactive)' args: 'crm.team.member', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    context={'active_test': True} help='Add members to automatically assign their documents to this sales team.' string='Sales Team Members' args: 'crm.team.member', 'crm_team_id'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_company_ids Many2many → res.company
    compute='_compute_member_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • member_ids Many2many → res.users
    compute='_compute_member_ids' domain="['&', ('share', '=', False), ('company_ids', 'in', member_company_ids)]" help='Users assigned to this team.' inverse='_inverse_member_ids' search='_search_member_ids' string='Salespersons' args: 'res.users'
  • member_warning Text
    compute='_compute_member_warning' args: 'Membership Issue Warning'
  • name Char
    required=True translate=True args: 'Sales Team'
  • sequence Integer
    default=10 args: 'Sequence'
  • user_id Many2one → res.users
    check_company=True string='Team Leader' args: 'res.users'
Public methods (3)
  • action_primary_channel_button(self)
    Skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options.
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (14)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    related='user_id.company_id' string='Company' args: 'res.company'
  • crm_team_id Many2one → crm.team
    check_company=True default=False group_expand='_read_group_crm_team_id' index=True ondelete='cascade' required=True string='Sales Team' args: 'crm.team'
  • email Char
    related='user_id.email' string='Email'
  • image_128 Image
    max_height=128 max_width=128 related='user_id.image_128' args: 'Image (128)'
  • image_1920 Image
    max_height=1920 max_width=1920 related='user_id.image_1920' args: 'Image'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_warning Text
    compute='_compute_member_warning'
  • mobile Char
    related='user_id.mobile' string='Mobile'
  • name Char
    readonly=False related='user_id.display_name' string='Name'
  • phone Char
    related='user_id.phone' string='Phone'
  • user_company_ids Many2many → res.company
    compute='_compute_user_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • user_id Many2one → res.users
    check_company=True domain="[('share', '=', False), ('id', 'not in', user_in_teams_ids), ('company_ids', 'in', user_company_ids)]" index=True ondelete='cascade' required=True string='Salesperson' args: 'res.users'
  • user_in_teams_ids Many2many → res.users
    compute='_compute_user_in_teams_ids' help='UX: Give users not to add in the currently chosen team to avoid duplicates' args: 'res.users'
Public methods (2)
  • create(self, values_list)
    @api.model_create_multi
    Specific behavior implemented on create * mono membership mode: other user memberships are automatically archived (a warning already told it in form view); * creating a membership already existing as archived: do nothing as people can manage them from specific menu "Members"; Also remove autofollow on create. No need to follow team members when creating them as chatter is mainly used for information purpose (tracked fields).
  • write(self, values)
    Specific behavior about active. If you change user_id / team_id user get warnings in form view and a raise in constraint check. We support archive / activation of memberships that toggles other memberships. But we do not support manual creation or update of user_id / team_id. This either works, either crashes). Indeed supporting it would lead to complex code with low added value. Users should create or remove members, and maybe archive / activate them. Updating manually memberships by modifying user_id or team_id is advanced and does not benefit from our support.

New fields (1)
  • team_id Many2one → crm.team
    help='If set, this Sales Team will be used for sales and assignments related to this partner' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (3)
  • crm_team_ids Many2many → crm.team
    check_company=True compute='_compute_crm_team_ids' copy=False readonly=True search='_search_crm_team_ids' string='Sales Teams' args: 'crm.team', 'crm_team_member', 'user_id', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    string='Sales Team Members' args: 'crm.team.member', 'user_id'
  • sale_team_id Many2one → crm.team
    compute='_compute_sale_team_id' help='Main user sales team. Used notably for pipeline, or to set sales team in invoicing or subscription.' readonly=True store=True string='User Sales Team' args: 'crm.team'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/sales_team
VERSION
VERSION 1.1
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Aaron Bohy, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Victor Feyens, Nikunj Ladava, Tiffany Chang (tic), mafo-odoo, Florian Charlier, Patrick Hoste, niyasraphy, Louis Wicket (wil), Carsten Wolff (cawo), stefanorigano (SRI), Jérémy Hennecart (jeh)
WEBSITE
WEBSITEhttps://www.odoo.com/app/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams with CRM and/or Sales
=======================================================================
 

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
crm_team_member_view_form crm.team.member.view.form crm.team.member form New
crm_team_member_view_form_from_team crm.team.member.view.form.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_form
crm_team_member_view_kanban crm.team.member.view.kanban crm.team.member kanban New
crm_team_member_view_kanban_from_team crm.team.member.view.kanban.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_kanban
crm_team_member_view_search crm.team.member.view.search crm.team.member search New
crm_team_member_view_tree crm.team.member.view.tree crm.team.member tree New
crm_team_member_view_tree_from_team crm.team.member.view.tree.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_tree
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.view.kanban crm.team kanban New
crm_team_view_kanban_dashboard crm.team.view.kanban.dashboard crm.team kanban New
crm_team_view_search crm.team.view.search crm.team search New
crm_team_view_tree crm.team.tree crm.team tree New
res_partner_view_team res.partner.view.team res.partner xpath Inherits base.view_partner_form
sales_team_crm_tag_view_form sales.team.crm.tag.view.form crm.tag form New
sales_team_crm_tag_view_tree sales.team.crm.tag.view.tree crm.tag tree New
Models touched (5)

New fields (2)
  • color Integer
    default=_get_default_color args: 'Color'
  • name Char
    required=True translate=True args: 'Tag Name'
Public methods (0)

No public methods.

New fields (17)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> index=True string='Company' args: 'res.company'
  • crm_team_member_all_ids One2many → crm.team.member
    context={'active_test': False} string='Sales Team Members (incl. inactive)' args: 'crm.team.member', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    context={'active_test': True} help='Add members to automatically assign their documents to this sales team.' string='Sales Team Members' args: 'crm.team.member', 'crm_team_id'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_company_ids Many2many → res.company
    compute='_compute_member_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • member_ids Many2many → res.users
    compute='_compute_member_ids' domain="['&', ('share', '=', False), ('company_ids', 'in', member_company_ids)]" help='Users assigned to this team.' inverse='_inverse_member_ids' search='_search_member_ids' string='Salespersons' args: 'res.users'
  • member_warning Text
    compute='_compute_member_warning' args: 'Membership Issue Warning'
  • name Char
    required=True translate=True args: 'Sales Team'
  • sequence Integer
    default=10 args: 'Sequence'
  • user_id Many2one → res.users
    check_company=True string='Team Leader' args: 'res.users'
Public methods (3)
  • action_primary_channel_button(self)
    Skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options.
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (14)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    related='user_id.company_id' string='Company' args: 'res.company'
  • crm_team_id Many2one → crm.team
    check_company=True default=False group_expand='_read_group_crm_team_id' index=True ondelete='cascade' required=True string='Sales Team' args: 'crm.team'
  • email Char
    related='user_id.email' string='Email'
  • image_128 Image
    max_height=128 max_width=128 related='user_id.image_128' args: 'Image (128)'
  • image_1920 Image
    max_height=1920 max_width=1920 related='user_id.image_1920' args: 'Image'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_warning Text
    compute='_compute_member_warning'
  • mobile Char
    related='user_id.mobile' string='Mobile'
  • name Char
    readonly=False related='user_id.display_name' string='Name'
  • phone Char
    related='user_id.phone' string='Phone'
  • user_company_ids Many2many → res.company
    compute='_compute_user_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • user_id Many2one → res.users
    check_company=True domain="[('share', '=', False), ('id', 'not in', user_in_teams_ids), ('company_ids', 'in', user_company_ids)]" index=True ondelete='cascade' required=True string='Salesperson' args: 'res.users'
  • user_in_teams_ids Many2many → res.users
    compute='_compute_user_in_teams_ids' help='UX: Give users not to add in the currently chosen team to avoid duplicates' args: 'res.users'
Public methods (2)
  • create(self, values_list)
    @api.model_create_multi
    Specific behavior implemented on create * mono membership mode: other user memberships are automatically archived (a warning already told it in form view); * creating a membership already existing as archived: do nothing as people can manage them from specific menu "Members"; Also remove autofollow on create. No need to follow team members when creating them as chatter is mainly used for information purpose (tracked fields).
  • write(self, values)
    Specific behavior about active. If you change user_id / team_id user get warnings in form view and a raise in constraint check. We support archive / activation of memberships that toggles other memberships. But we do not support manual creation or update of user_id / team_id. This either works, either crashes). Indeed supporting it would lead to complex code with low added value. Users should create or remove members, and maybe archive / activate them. Updating manually memberships by modifying user_id or team_id is advanced and does not benefit from our support.

New fields (1)
  • team_id Many2one → crm.team
    help='If set, this Sales Team will be used for sales and assignments related to this partner' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (3)
  • crm_team_ids Many2many → crm.team
    check_company=True compute='_compute_crm_team_ids' copy=False readonly=True search='_search_crm_team_ids' string='Sales Teams' args: 'crm.team', 'crm_team_member', 'user_id', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    string='Sales Team Members' args: 'crm.team.member', 'user_id'
  • sale_team_id Many2one → crm.team
    compute='_compute_sale_team_id' help='Main user sales team. Used notably for pipeline, or to set sales team in invoicing or subscription.' readonly=True store=True string='User Sales Team' args: 'crm.team'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/sales_team
VERSION
VERSION 1.1
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Xavier-Do, Julien Mougenot, Touati Djamel (otd), Nicolas Galler, ijas ahammed, Michael Mattiello (mcm), niyasraphy, Munaf Khan, Maruan Aguerdouh (magm), Carsten Wolff (cawo), Leonardo Pavan Rocha, MAHAMADASIF ANSARI
WEBSITE
WEBSITEhttps://www.odoo.com/app/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams with CRM and/or Sales
=======================================================================
 

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
crm_team_member_view_form crm.team.member.view.form crm.team.member form New
crm_team_member_view_form_from_team crm.team.member.view.form.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_form
crm_team_member_view_kanban crm.team.member.view.kanban crm.team.member kanban New
crm_team_member_view_kanban_from_team crm.team.member.view.kanban.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_kanban
crm_team_member_view_search crm.team.member.view.search crm.team.member search New
crm_team_member_view_tree crm.team.member.view.tree crm.team.member tree New
crm_team_member_view_tree_from_team crm.team.member.view.tree.from.team crm.team.member xpath Inherits sales_team.crm_team_member_view_tree
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.view.kanban crm.team kanban New
crm_team_view_kanban_dashboard crm.team.view.kanban.dashboard crm.team kanban New
crm_team_view_search crm.team.view.search crm.team search New
crm_team_view_tree crm.team.tree crm.team tree New
res_partner_view_team res.partner.view.team res.partner xpath Inherits base.view_partner_form
sales_team_crm_tag_view_form sales.team.crm.tag.view.form crm.tag form New
sales_team_crm_tag_view_tree sales.team.crm.tag.view.tree crm.tag tree New
Models touched (5)

New fields (2)
  • color Integer
    default=_get_default_color args: 'Color'
  • name Char
    required=True translate=True args: 'Tag Name'
Public methods (0)

No public methods.

New fields (17)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> index=True string='Company' args: 'res.company'
  • crm_team_member_all_ids One2many → crm.team.member
    context={'active_test': False} string='Sales Team Members (incl. inactive)' args: 'crm.team.member', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    context={'active_test': True} help='Add members to automatically assign their documents to this sales team.' string='Sales Team Members' args: 'crm.team.member', 'crm_team_id'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_company_ids Many2many → res.company
    compute='_compute_member_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • member_ids Many2many → res.users
    compute='_compute_member_ids' domain="['&', ('share', '=', False), ('company_ids', 'in', member_company_ids)]" help='Users assigned to this team.' inverse='_inverse_member_ids' search='_search_member_ids' string='Salespersons' args: 'res.users'
  • member_warning Text
    compute='_compute_member_warning' args: 'Membership Issue Warning'
  • name Char
    required=True translate=True args: 'Sales Team'
  • sequence Integer
    default=10 args: 'Sequence'
  • user_id Many2one → res.users
    check_company=True string='Team Leader' args: 'res.users'
Public methods (3)
  • action_primary_channel_button(self)
    Skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options.
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (14)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    related='user_id.company_id' string='Company' args: 'res.company'
  • crm_team_id Many2one → crm.team
    check_company=True default=False index=True ondelete='cascade' required=True string='Sales Team' args: 'crm.team'
  • email Char
    related='user_id.email' string='Email'
  • image_128 Image
    max_height=128 max_width=128 related='user_id.image_128' args: 'Image (128)'
  • image_1920 Image
    max_height=1920 max_width=1920 related='user_id.image_1920' args: 'Image'
  • is_membership_multi Boolean
    compute='_compute_is_membership_multi' help='If True, users may belong to several sales teams. Otherwise membership is limited to a single sales team.' args: 'Multiple Memberships Allowed'
  • member_warning Text
    compute='_compute_member_warning'
  • mobile Char
    related='user_id.mobile' string='Mobile'
  • name Char
    readonly=False related='user_id.display_name' string='Name'
  • phone Char
    related='user_id.phone' string='Phone'
  • user_company_ids Many2many → res.company
    compute='_compute_user_company_ids' help='UX: Limit to team company or all if no company' args: 'res.company'
  • user_id Many2one → res.users
    check_company=True domain="[('share', '=', False), ('id', 'not in', user_in_teams_ids), ('company_ids', 'in', user_company_ids)]" index=True ondelete='cascade' required=True string='Salesperson' args: 'res.users'
  • user_in_teams_ids Many2many → res.users
    compute='_compute_user_in_teams_ids' help='UX: Give users not to add in the currently chosen team to avoid duplicates' args: 'res.users'
Public methods (2)
  • create(self, values_list)
    @api.model_create_multi
    Specific behavior implemented on create * mono membership mode: other user memberships are automatically archived (a warning already told it in form view); * creating a membership already existing as archived: do nothing as people can manage them from specific menu "Members";
  • write(self, values)
    Specific behavior about active. If you change user_id / team_id user get warnings in form view and a raise in constraint check. We support archive / activation of memberships that toggles other memberships. But we do not support manual creation or update of user_id / team_id. This either works, either crashes). Indeed supporting it would lead to complex code with low added value. Users should create or remove members, and maybe archive / activate them. Updating manually memberships by modifying user_id or team_id is advanced and does not benefit from our support.

New fields (1)
  • team_id Many2one → crm.team
    help='If set, this Sales Team will be used for sales and assignments related to this partner' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (3)
  • crm_team_ids Many2many → crm.team
    check_company=True compute='_compute_crm_team_ids' copy=False readonly=True search='_search_crm_team_ids' string='Sales Teams' args: 'crm.team', 'crm_team_member', 'user_id', 'crm_team_id'
  • crm_team_member_ids One2many → crm.team.member
    string='Sales Team Members' args: 'crm.team.member', 'user_id'
  • sale_team_id Many2one → crm.team
    compute='_compute_sale_team_id' help='Main user sales team. Used notably for pipeline, or to set sales team in invoicing or subscription.' readonly=True store=True string='User Sales Team' args: 'crm.team'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/sales_team
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Nicolas Martinelli, Aaron Bohy, GitHub, Yannick Tivisse, Xavier-Do, Victor Feyens, Sébastien Theys, Touati Djamel (otd), Nicolas Galler, Pierre Collinet (pic)
WEBSITE
WEBSITEhttps://www.odoo.com/page/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams with CRM and/or Sales
=======================================================================
 

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
assets_backend sales_team assets ir.ui.view qweb Inherits web.assets_backend
crm_team_salesteams_search Sales Teams - Search crm.team search New
crm_team_salesteams_view_kanban crm.team.dashboard crm.team kanban New
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.kanban crm.team kanban New
crm_team_view_tree crm.team.tree crm.team tree New
res_partner_view_team res.partner.view.team res.partner xpath Inherits base.view_partner_form
sales_team_crm_tag_view_form sales.team.crm.tag.view.form crm.tag form New
sales_team_crm_tag_view_tree sales.team.crm.tag.view.tree crm.tag tree New
Models touched (4)

New fields (2)
  • color Integer
    default=_get_default_color args: 'Color'
  • name Char
    required=True translate=True args: 'Tag Name'
Public methods (0)

No public methods.

New fields (12)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> index=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • member_ids One2many → res.users
    check_company=True domain=[('share', '=', False)] help='Add members to automatically assign their documents to this sales team. You can only be member of one team.' string='Channel Members' args: 'res.users', 'sale_team_id'
  • name Char
    required=True translate=True args: 'Sales Team'
  • sequence Integer
    default=10 args: 'Sequence'
  • user_id Many2one → res.users
    check_company=True string='Team Leader' args: 'res.users'
Public methods (4)
  • action_primary_channel_button(self)
    Skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options.
  • create(self, values)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • team_id Many2one → crm.team
    help='If set, this Sales Team will be used for sales and assignments related to this partner' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (1)
  • sale_team_id Many2one → crm.team
    help='Sales Team the user is member of. Used to compute the members of a Sales Team through the inverse one2many' args: 'crm.team', "User's Sales Team"
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/sales_team
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Xavier Morel, Nicolas Martinelli, Damien Bouvy, Yannick Tivisse, Pierre Masereel, Adrien Dieudonne, Adrian Torres, Xavier-Do, Sébastien Theys, Nicolas Galler, Mathieu Duckerts-Antoine, qmo-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/page/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams  with CRM and/or Sales
===========================================================================
 

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
assets_backend sales_team assets ir.ui.view qweb Inherits web.assets_backend
crm_team_salesteams_search Sales Teams - Search crm.team search New
crm_team_salesteams_view_kanban crm.team.dashboard crm.team kanban New
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.kanban crm.team kanban New
crm_team_view_tree crm.team.tree crm.team tree New
res_partner_view_team res.partner.view.team res.partner xpath Inherits base.view_partner_form
Models touched (3)

New fields (12)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> index=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • member_ids One2many → res.users
    check_company=True domain=<expr> help='Add members to automatically assign their documents to this sales team. You can only be member of one team.' string='Channel Members' args: 'res.users', 'sale_team_id'
  • name Char
    required=True translate=True args: 'Sales Team'
  • sequence Integer
    default=10 args: 'Sequence'
  • user_id Many2one → res.users
    check_company=True string='Team Leader' args: 'res.users'
Public methods (4)
  • action_primary_channel_button(self)
    skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options
  • create(self, values)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • team_id Many2one → crm.team
    help='If set, this Sales Team will be used for sales and assignations related to this partner' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (1)
  • sale_team_id Many2one → crm.team
    help='Sales Team the user is member of. Used to compute the members of a Sales Team through the inverse one2many' args: 'crm.team', "User's Sales Team"
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/sales_team
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Aaron Bohy, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, RomainLibert, Nans Lefebvre, XavierDo, Xavier-Do, Kinjal Mehta, Andrius Laukavičius
WEBSITE
WEBSITEhttps://www.odoo.com/page/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Teams  with CRM and/or Sales
===========================================================================
 

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
assets_backend sales_team assets ir.ui.view qweb Inherits web.assets_backend
crm_team_salesteams_search Case Teams - Search crm.team search New
crm_team_salesteams_view_kanban crm.team.dashboard crm.team kanban New
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.kanban crm.team kanban New
crm_team_view_tree crm.team.tree crm.team tree New
Models touched (3)

New fields (17)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the Sales Team without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • dashboard_graph_group Selection
    default='day' help="How this channel's dashboard graph will group the results." string='Group by' args: [('day', 'Day'), ('week', 'Week'), ('month', 'Month'), ('user', 'Salesperson')]
  • dashboard_graph_model Selection
    help='The graph this channel will display in the Dashboard.\n' string='Content' args: []
  • dashboard_graph_period Selection
    default='month' help="The time period this channel's dashboard graph will consider." string='Scale' args: [('week', 'Last Week'), ('month', 'Last Month'), ('year', 'Last Year')]
  • dashboard_graph_type Selection
    compute='_compute_dashboard_graph' help='The type of graph this channel will display in the dashboard.' string='Type' args: [('line', 'Line'), ('bar', 'Bar')]
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • member_ids One2many → res.users
    string='Channel Members' args: 'res.users', 'sale_team_id'
  • name Char
    required=True translate=True args: 'Sales Team'
  • reply_to Char
    help="The email address put in the 'Reply-To' of all emails sent by Odoo about cases in this Sales Team" string='Reply-To'
  • team_type Selection
    default='sales' help='The type of this channel, it will define the resources this channel uses.' required=True string='Team Type' args: [('sales', 'Sales'), ('website', 'Website')]
  • user_id Many2one → res.users
    string='Team Leader' args: 'res.users'
Public methods (3)
  • action_primary_channel_button(self)
    skeleton function to be overloaded It will return the adequate action depending on the Sales Team's options
  • create(self, values)
    @api.model
  • write(self, values)
    @api.multi

New fields (1)
  • team_id Many2one → crm.team
    help='If set, this Sales Team will be used for sales and assignations related to this partner' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (1)
  • sale_team_id Many2one → crm.team
    help='Sales Team the user is member of. Used to compute the members of a Sales Team through the inverse one2many' args: 'crm.team', "User's Sales Team"
Public methods (1)
  • create(self, vals)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/sales_team
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Goffin Simon, Nicolas Martinelli, Jérome Maes, Géry Debongnie, Aaron Bohy, ged-odoo, GitHub, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Denis Vermylen (dve), DVE, Adrien Dieudonne, Denis Vermylen
WEBSITE
WEBSITEhttps://www.odoo.com/page/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Channels  with CRM and/or Sales
===========================================================================
 

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
assets_backend sales_team assets ir.ui.view qweb Inherits web.assets_backend
crm_team_salesteams_search Case Teams - Search crm.team search New
crm_team_salesteams_view_kanban crm.team.dashboard crm.team kanban New
crm_team_view_form crm.team.form crm.team form New
crm_team_view_kanban crm.team.kanban crm.team kanban New
crm_team_view_tree crm.team.tree crm.team tree New
Models touched (3)

New fields (17)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the sales channel without removing it.'
  • color Integer
    help='The color of the channel' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' args: 'res.currency'
  • dashboard_button_name Char
    compute='_compute_dashboard_button_name' string='Dashboard Button'
  • dashboard_graph_data Text
    compute='_compute_dashboard_graph'
  • dashboard_graph_group Selection
    default='day' help="How this channel's dashboard graph will group the results." string='Group by' args: [('day', 'Day'), ('week', 'Week'), ('month', 'Month'), ('user', 'Salesperson')]
  • dashboard_graph_model Selection
    help='The graph this channel will display in the Dashboard.\n' string='Content' args: []
  • dashboard_graph_period Selection
    default='month' help="The time period this channel's dashboard graph will consider." string='Scale' args: [('week', 'Last Week'), ('month', 'Last Month'), ('year', 'Last Year')]
  • dashboard_graph_type Selection
    compute='_compute_dashboard_graph' help='The type of graph this channel will display in the dashboard.' string='Type' args: [('line', 'Line'), ('bar', 'Bar')]
  • favorite_user_ids Many2many → res.users
    default=_get_default_favorite_user_ids string='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id'
  • is_favorite Boolean
    compute='_compute_is_favorite' help='Favorite teams to display them in the dashboard and access them easily.' inverse='_inverse_is_favorite' string='Show on dashboard'
  • member_ids One2many → res.users
    string='Channel Members' args: 'res.users', 'sale_team_id'
  • name Char
    required=True translate=True args: 'Sales Channel'
  • reply_to Char
    help="The email address put in the 'Reply-To' of all emails sent by Odoo about cases in this sales channel" string='Reply-To'
  • team_type Selection
    default='sales' help='The type of this channel, it will define the resources this channel uses.' required=True string='Channel Type' args: [('sales', 'Sales'), ('website', 'Website')]
  • user_id Many2one → res.users
    string='Channel Leader' args: 'res.users'
Public methods (3)
  • action_primary_channel_button(self)
    skeleton function to be overloaded It will return the adequate action depending on the sales channel's options
  • create(self, values)
    @api.model
  • write(self, values)
    @api.multi

New fields (1)
  • team_id Many2one → crm.team
    help='If set, this sales channel will be used for sales and assignations related to this partner' args: 'crm.team', 'Sales Channel'
Public methods (0)

No public methods.

New fields (1)
  • sale_team_id Many2one → crm.team
    help='Sales Channel the user is member of. Used to compute the members of a sales channel through the inverse one2many' args: 'crm.team', 'Sales Channel'
Public methods (1)
  • create(self, vals)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/sales_team
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Julien Legros, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Martin Geubelle
WEBSITE
WEBSITEhttps://www.odoo.com/page/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Team  with CRM and/or Sales 
=======================================================================
 

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
assets_backend sales_team assets ir.ui.view qweb Inherits web.assets_backend
crm_team_salesteams_search Case Teams - Search crm.team search New
crm_team_salesteams_view_kanban crm.team.dashboard crm.team kanban New
crm_team_view_form crm.team.form crm.team form New
crm_team_view_tree crm.team.tree crm.team tree New
view_sale_config_settings sale settings sale.config.settings form New
Models touched (4)

New fields (7)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the sales team without removing it.'
  • color Integer
    help='The color of the team' string='Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • member_ids One2many → res.users
    string='Team Members' args: 'res.users', 'sale_team_id'
  • name Char
    required=True translate=True args: 'Sales Team'
  • reply_to Char
    help="The email address put in the 'Reply-To' of all emails sent by Odoo about cases in this sales team" string='Reply-To'
  • user_id Many2one → res.users
    string='Team Leader' args: 'res.users'
Public methods (1)
  • create(self, values)
    @api.model

New fields (1)
  • team_id Many2one → crm.team
    help='If set, sale team used notably for sales and assignations related to this partner' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (1)
  • sale_team_id Many2one → crm.team
    help='Sales Team the user is member of. Used to compute the members of a sales team through the inverse one2many' args: 'crm.team', 'Sales Team'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/sales_team
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Christophe Simonis, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Damien Bouvy, Julien De Coster, Yannick Tivisse, qsm-odoo, Martin Geubelle
WEBSITE
WEBSITEhttps://www.odoo.com/page/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Team  with CRM and/or Sales 
=======================================================================
 

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
assets_backend sales_team assets ir.ui.view qweb Inherits web.assets_backend
crm_team_salesteams_search Case Teams - Search crm.team search New
crm_team_salesteams_view_kanban crm.team.dashboard crm.team sales_team_dashboard New
crm_team_view_form crm.team.form crm.team form New
crm_team_view_tree crm.team.tree crm.team tree New
Models touched (3)

New fields (0)

No new fields.

Public methods (1)
  • create(self, cr, uid, values, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/sales_team
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, Richard Mathot, Jeremy Kersten
WEBSITE
WEBSITEhttps://www.odoo.com/page/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - web_kanban_sparkline
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Using this application you can manage Sales Team  with CRM and/or Sales 
=======================================================================
 

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
assets_backend sales_team assets ir.ui.view qweb Inherits web.assets_backend
crm_case_section_salesteams_search Case Sections - Search crm.case.section search New
crm_case_section_salesteams_view_kanban crm.case.section.kanban crm.case.section kanban New
crm_case_section_view_form crm.case.section.form crm.case.section form New
crm_case_section_view_tree crm.case.section.tree crm.case.section tree New
res_user_form Users Preferences res.users data Inherits base.view_users_form
view_sale_config_settings crm settings sale.config.settings data Inherits base_setup.view_sale_config_settings
view_users_form_preferences res.users.preferences.form res.users data Inherits base.view_users_form_simple_modif
Models touched (3)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • set_group_multi_salesteams(self, cr, uid, ids, context=None)
    This method is automatically called by res_config as it begins with set. It is used to implement the 'one group or another' behavior. We have to perform some group manipulation by hand because in res_config.execute(), set_* methods are called after group_*; therefore writing on an hidden res_config file could not work. If group_multi_salesteams is checked: remove group_mono_salesteams from group_user, remove the users. Otherwise, just add group_mono_salesteams in group_user. The inverse logic about group_multi_salesteams is managed by the normal behavior of 'group_multi_salesteams' field.