TIP: You can type at any time to perform a new search.
Sales Teams
sales_team · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 1.1
- Category
- Sales/Sales
- Folder size
- 1.71 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://www.odoo.com/app/crm
- Last tracking update
- 2026-09-28 18:31:17
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Christophe Matthieu, Xavier-Do, Romeo Fragomeli, Victor Feyens, Adrien Dieudonné, Sébastien Theys, Julien Mougenot, David Beguin, Tiffany Chang (tic), Romain Estievenart, luvi, Renaud Thiry, Victor Piryns (pivi), Dylan Kiss (dyki), Chong Wang (cwg), Andrzej(pian), guce, Julien Launois (jula), Frantisek Binovsky, Julien Piron, Corentin Deruyck, Elisabeth Dickinson (edi)
Code Analysis
Views touched (14)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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)
-
colorIntegerdefault=_get_default_color args: 'Color' -
nameCharrequired=Truetranslate=True args: 'Tag Name'
No public methods.
New fields (16)
-
activeBooleandefault=Truehelp='If the active field is set to false, it will allow you to hide the Sales Team without removing it.' -
colorIntegerdefault=_get_default_colorhelp='The color of the channel'string='Color Index' -
company_idMany2one → res.companyindex=Truestring='Company' args: 'res.company' -
crm_team_member_all_idsOne2many → crm.team.membercontext={'active_test': False}string='Sales Team Members (incl. inactive)' args: 'crm.team.member', 'crm_team_id' -
crm_team_member_idsOne2many → crm.team.membercontext={'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_idMany2one → res.currencyreadonly=Truerelated='company_id.currency_id'string='Currency' args: 'res.currency' -
dashboard_button_nameCharcompute='_compute_dashboard_button_name'string='Dashboard Button' -
favorite_user_idsMany2many → res.usersdefault=_get_default_favorite_user_idsstring='Favorite Members' args: 'res.users', 'team_favorite_user_rel', 'team_id', 'user_id' -
is_favoriteBooleancompute='_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_multiBooleancompute='_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_idsMany2many → res.companycompute='_compute_member_company_ids'help='UX: Limit to team company or all if no company' args: 'res.company' -
member_idsMany2many → res.userscompute='_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_warningTextcompute='_compute_member_warning' args: 'Membership Issue Warning' -
nameCharrequired=Truetranslate=True args: 'Sales Team' -
sequenceIntegerdefault=10 args: 'Sequence' -
user_idMany2one → res.userscheck_company=Truedomain=[('share', '!=', True)]string='Team Leader' args: 'res.users'
-
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)
-
activeBooleandefault=Truestring='Active' -
company_idMany2one → res.companyrelated='user_id.company_id'string='Company' args: 'res.company' -
crm_team_idMany2one → crm.teamcheck_company=Falsedefault=Falsegroup_expand='_read_group_expand_full'index=Trueondelete='cascade'required=Truestring='Sales Team' args: 'crm.team' -
emailCharreadonly=Truerelated='user_id.email'string='Email' -
image_128Imagemax_height=128max_width=128related='user_id.image_128' args: 'Image (128)' -
image_1920Imagemax_height=1920max_width=1920related='user_id.image_1920' args: 'Image' -
is_membership_multiBooleancompute='_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_warningTextcompute='_compute_member_warning' -
nameCharreadonly=Falserelated='user_id.display_name'string='Name' -
phoneCharreadonly=Truerelated='user_id.phone'string='Phone' -
user_company_idsMany2many → res.companycompute='_compute_user_company_ids'help='UX: Limit to team company or all if no company' args: 'res.company' -
user_idMany2one → res.userscheck_company=Truedomain="[('share', '=', False), ('id', 'not in', user_in_teams_ids), ('company_ids', 'in', user_company_ids)]"index=Trueondelete='cascade'required=Truestring='Salesperson' args: 'res.users' -
user_in_teams_idsMany2many → res.userscompute='_compute_user_in_teams_ids'help='UX: Give users not to add in the currently chosen team to avoid duplicates' args: 'res.users'
-
create(self, vals_list)@api.model_create_multiSpecific 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_idsMany2many → crm.teamcheck_company=Truecompute='_compute_crm_team_ids'copy=Falsereadonly=Truesearch='_search_crm_team_ids'string='Sales Teams' args: 'crm.team', 'crm_team_member', 'user_id', 'crm_team_id' -
crm_team_member_idsOne2many → crm.team.memberstring='Sales Team Members' args: 'crm.team.member', 'user_id' -
sale_team_idMany2one → crm.teamcompute='_compute_sale_team_id'help='Main user sales team. Used notably for pipeline, or to set sales team in invoicing or subscription.'readonly=Truestore=Truestring='User Sales Team' args: 'crm.team'
-
action_archive(self)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…