Repository
odoo/odoo · module folder
Module version
1.1
Category
Sales/Sales
Folder size
1.79 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
https://www.odoo.com/app/crm
Last tracking update
2026-08-15 22:44:17
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, 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
Odoo dependencies
odoo/odoo:
- web
- bus
Python dependencies
None
System dependencies
None
Required by
crm, partner_delivery_info, partner_multi_relation, sale, sale_invoice_blocking, sale_manual_delivery, sales_team_operating_unit, sales_team_security, stock_buffer_sales_analysis
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 form 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 kanban 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 list 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
HTTP endpoints (0)

No HTTP endpoints found for this module.

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)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…