CRM Phone Calls

crm_phonecall
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/19.0/crm_phonecall
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, eugenio
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - html_editor
    - calendar
    - resource
    - utm
    - contacts
    - digest
    - portal
    - http_routing
    - auth_signup
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to manage phone calls in order to analyze them.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_lead_view_form
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall list New
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall list New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings xpath Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner div Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.selecqt crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)

New fields (21)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company'
  • create_date Datetime
    string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    string='Last Action'
  • date_action_next Datetime
    string='Next Action'
  • date_closed Datetime
    string='Closed'
  • date_open Datetime
    string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' tracking=3 args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (7)
  • action_button_convert2opportunity(self)
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    Calculate duration based on phonecall date.
  • get_values_schedule_another_phonecall(self, vals)
  • redirect_phonecall_view(self)
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, vals, return_recordset=False)
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    Override to add case management: open/close dates.

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True
  • create_date Datetime
    index=True readonly=True
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    aggregator='avg' digits=(16, 2) help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    aggregator='avg' digits=(16, 2) help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    aggregator='avg' digits=(16, 2) readonly=True
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True
Public methods (1)
  • init(self)
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')]
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner'
  • phone Char
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall2phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (3)
  • action_schedule(self)
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.
  • get_vals_action_schedule(self)

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/18.0/crm_phonecall
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSPedro M. Baeza, Carlos Lopez, Weblate, OCA-git-bot, oca-ci, Angel Rivas, Bhavesh Heliconia, Heliconia Solutions
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - html_editor
    - calendar
    - resource
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to manage phone calls in order to analyze them.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_lead_view_form
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall list New
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall list New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings xpath Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner div Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.selecqt crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)

New fields (25)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_city Char
    related='partner_id.city'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • partner_state Char
    related='partner_id.state_id.name'
  • partner_zip Char
    related='partner_id.zip'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' tracking=3 args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (7)
  • action_button_convert2opportunity(self)
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    Calculate duration based on phonecall date.
  • get_values_schedule_another_phonecall(self, vals)
  • redirect_phonecall_view(self)
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, vals, return_recordset=False)
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    Override to add case management: open/close dates.

New fields (16)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    aggregator='avg' digits=(16, 2) help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    aggregator='avg' digits=(16, 2) help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    aggregator='avg' digits=(16, 2) readonly=True
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_city Char
    readonly=True args: 'City'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • partner_state Char
    readonly=True args: 'State'
  • partner_zip Char
    readonly=True args: 'ZIP'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')]
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall2phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (3)
  • action_schedule(self)
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.
  • get_vals_action_schedule(self)

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/17.0/crm_phonecall
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Antoni Marroig Campomar
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - onboarding
    - resource
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to manage phone calls in order to analyze them.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_lead_view_form
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings xpath Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner div Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)

New fields (22)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' tracking=3 args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (7)
  • action_button_convert2opportunity(self)
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    Calculate duration based on phonecall date.
  • get_values_schedule_another_phonecall(self, vals)
  • redirect_phonecall_view(self)
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, vals, return_recordset=False)
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    Override to add case management: open/close dates.

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')]
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall2phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (3)
  • action_schedule(self)
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.
  • get_vals_action_schedule(self)

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/16.0/crm_phonecall
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Stefan
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - utm
    - web_kanban_gauge
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_lead_view_form
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings div Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner div Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)

New fields (22)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' tracking=3 args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (7)
  • action_button_convert2opportunity(self)
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    Calculate duration based on phonecall date.
  • get_values_schedule_another_phonecall(self, vals)
  • redirect_phonecall_view(self)
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, vals, return_recordset=False)
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    Override to add case management: open/close dates.

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')]
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall2phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (3)
  • action_schedule(self)
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.
  • get_vals_action_schedule(self)

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/15.0/crm_phonecall
VERSION
VERSION 1.1.2
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, sergio-teruel, Víctor Martínez, Ruchir Shukla, Weblate, OCA-git-bot, oca-ci, josep-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - web_kanban_gauge
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_lead_view_form
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_inbound_phone_tree_view_no_editable CRM - Logged Phone Calls - Tree No Editable crm.phonecall tree Inherits crm_phonecall.crm_case_inbound_phone_tree_view
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings div Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner div Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)

New fields (22)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' tracking=3 args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (7)
  • action_button_convert2opportunity(self)
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    Calculate duration based on phonecall date.
  • get_values_schedule_another_phonecall(self, vals)
  • redirect_phonecall_view(self)
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, vals, return_recordset=False)
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    Override to add case management: open/close dates.

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')]
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall2phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (3)
  • action_schedule(self)
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.
  • get_vals_action_schedule(self)

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/14.0/crm_phonecall
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSVíctor Martínez, oca-travis, Weblate, OCA-git-bot, oca-ci, skeller1, RIDA YAHLA
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_lead_view_form
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_inbound_phone_tree_view_no_editable CRM - Logged Phone Calls - Tree No Editable crm.phonecall tree Inherits crm_phonecall.crm_case_inbound_phone_tree_view
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings div Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner button Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)

New fields (22)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' tracking=3 args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (10)
  • action_button_convert2opportunity(self)
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    Calculate duration based on phonecall date.
  • get_values_convert2opportunity(self)
  • get_values_schedule_another_phonecall(self, vals)
  • on_change_opportunity(self)
    @api.onchange('opportunity_id')
    Based on opportunity, changed contact, tags, partner, team.
  • on_change_partner_id(self)
    @api.onchange('partner_id')
    Contact number details should be change based on partner.
  • redirect_phonecall_view(self)
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, vals, return_recordset=False)
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    Override to add case management: open/close dates.

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True string='Create Date'
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True string='Duration'
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')] string='Action'
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.tag' relation='crm_phonecall2phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (3)
  • action_schedule(self)
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.
  • get_vals_action_schedule(self)

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/13.0/crm_phonecall
VERSION
VERSION 1.4.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSAlexandre Díaz, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Stephan Keller, skeller1, Manuel Marquez, Valentin Vinagre Urteaga, flachica, Fernando La Chica
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_lead_view_form
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_inbound_phone_tree_view_no_editable CRM - Logged Phone Calls - Tree No Editable crm.phonecall tree Inherits crm_phonecall.crm_case_inbound_phone_tree_view
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings div Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner button Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)

New fields (22)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' track_visibility='onchange' args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (10)
  • action_button_convert2opportunity(self)
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    Calculate duration based on phonecall date.
  • get_values_convert2opportunity(self)
  • get_values_schedule_another_phonecall(self, vals)
  • on_change_opportunity(self)
    @api.onchange('opportunity_id')
    Based on opportunity, changed contact, tags, partner, team.
  • on_change_partner_id(self)
    @api.onchange('partner_id')
    Contact number details should be change based on partner.
  • redirect_phonecall_view(self)
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, vals, return_recordset=False)
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    Override to add case management: open/close dates.

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True string='Create Date'
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True string='Duration'
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')] string='Action'
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall2phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (3)
  • action_schedule(self)
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.
  • get_vals_action_schedule(self)

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/12.0/crm_phonecall
VERSION
VERSION 1.6.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSDaniel Reis, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Iván Todorovich, Oihane Crucelaegui, Anand Kansagra, Stephan Keller
WEBSITE
WEBSITEhttps://github.com/OCA/crm
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - contacts
    - digest
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
crm_case_form_view_leads_inherit CRM - Leads Form crm.lead xpath Inherits crm.crm_case_form_view_leads
crm_case_form_view_oppor_inherit Opportunities crm.lead button Inherits crm.crm_case_form_view_oppor
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_inbound_phone_tree_view_no_editable CRM - Logged Phone Calls - Tree No Editable crm.phonecall tree Inherits crm_phonecall.crm_case_inbound_phone_tree_view
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
res_config_settings_view_form res.config.settings.view.form.inherit.crm.phonecalls res.config.settings div Inherits crm.res_config_settings_view_form
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls_inherit view.res.partner.form.crm.inherited.calls res.partner button Inherits crm.view_partners_form_crm1
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (7)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (1)
  • button_open_phonecall(self)
    @api.multi

New fields (22)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=<expr>
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • direction Selection
    default='out' required=True args: [('in', 'In'), ('out', 'Out')]
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' string='Status' track_visibility='onchange' args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (9)
  • action_button_convert2opportunity(self)
    @api.multi
    Convert a phonecall into an opp and redirect to the opp view.
  • action_make_meeting(self)
    @api.multi
    Open meeting's calendar view to schedule a meeting on phonecall.
  • compute_duration(self)
    @api.multi
    Calculate duration based on phonecall date.
  • convert_opportunity(self, opportunity_summary=False, partner_id=False, planned_revenue=0.0, probability=0.0)
    @api.multi
    Convert lead to opportunity.
  • on_change_opportunity(self)
    @api.onchange('opportunity_id')
    Based on opportunity, changed contact, tags, partner, team.
  • on_change_partner_id(self)
    @api.onchange('partner_id')
    Contact number details should be change based on partner.
  • redirect_phonecall_view(self)
    @api.multi
    Redirect on the phonecall related view.
  • schedule_another_phonecall(self, schedule_time, call_summary, user_id=False, team_id=False, tag_ids=False, action='schedule', return_recordset=False)
    @api.multi
    Action :('schedule','Schedule a call'), ('log','Log a call').
  • write(self, values)
    @api.multi
    Override to add case management: open/close dates.

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True string='Create Date'
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True string='Duration'
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    @api.model_cr
    Initialize the report.

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')] string='Action'
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (2)
  • action_schedule(self)
    @api.multi
    Schedule a phonecall.
  • default_get(self, fields)
    @api.model
    Function gets default values.

New fields (1)
  • group_show_form_view Boolean
    default=True help='By default form is disabled for calls, with this group it is enabled.' implied_group='crm_phonecall.group_show_form_view' args: 'Enable form view for phone calls'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/11.0/crm_phonecall
VERSION
VERSION 1.1.2
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSPedro M. Baeza, Naglis Jonaitis, OCA Transbot, oca-travis, Weblate, OCA-git-bot, OCA Git Bot, Anand Kansagra
WEBSITE
WEBSITEhttps://www.tecnativa.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_setup
    - base
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - web_planner
    - contacts
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crm_case_form_view_leads CRM - Leads Form crm.lead xpath Inherits crm.crm_case_form_view_leads
crm_case_form_view_oppor Opportunities crm.lead xpath Inherits crm.crm_case_form_view_oppor
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls view.res.partner.form.crm.inherited.calls res.partner data Inherits base.view_partner_form
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (6)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count' string='Phonecalls'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (0)

No public methods.

New fields (21)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=fields.Datetime.now
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' readonly=True string='Status' track_visibility='onchange' args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (9)
  • action_button_convert2opportunity(self)
    @api.multi
    Convert a phonecall into an opp and then redirect to the opp view.
  • action_make_meeting(self)
    @api.multi
    Open meeting's calendar view to schedule a meeting on current phonecall.
  • compute_duration(self)
    @api.multi
  • convert_opportunity(self, opportunity_summary=False, partner_id=False, planned_revenue=0.0, probability=0.0)
    @api.multi
  • on_change_opportunity(self)
    @api.onchange('opportunity_id')
  • on_change_partner_id(self)
    @api.onchange('partner_id')
  • redirect_phonecall_view(self)
    @api.multi
  • schedule_another_phonecall(self, schedule_time, call_summary, user_id=False, team_id=False, tag_ids=False, action='schedule', return_recordset=False)
    @api.multi
    action :('schedule','Schedule a call'), ('log','Log a call')
  • write(self, values)
    @api.multi
    Override to add case management: open/close dates

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True string='Create Date'
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True string='Duration'
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    @api.model_cr

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')] string='Action'
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (2)
  • action_schedule(self)
    @api.multi
  • default_get(self, fields)
    @api.model
    This function gets default values

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count' string='Phonecalls'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/10.0/crm_phonecall
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSPedro M. Baeza, Jairo Llopis, Akim Juillerat, cubells, OCA Transbot, oca-travis, Weblate, Rafael Blasco, jesusVMayor, Roberto Fichera
WEBSITE
WEBSITEhttps://www.tecnativa.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - sales_team
    - calendar
    - web_calendar
    - fetchmail
    - utm
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crm_case_form_view_leads CRM - Leads Form crm.lead xpath Inherits crm.crm_case_form_view_leads
crm_case_form_view_oppor Opportunities crm.lead xpath Inherits crm.crm_case_form_view_oppor
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls view.res.partner.form.crm.inherited.calls res.partner data Inherits base.view_partner_form
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (6)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count' string='Phonecalls'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (0)

No public methods.

New fields (21)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=fields.Datetime.now
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' readonly=True string='Status' track_visibility='onchange' args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' index=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (9)
  • action_button_convert2opportunity(self)
    @api.multi
    Convert a phonecall into an opp and then redirect to the opp view.
  • action_make_meeting(self)
    @api.multi
    Open meeting's calendar view to schedule a meeting on current phonecall.
  • compute_duration(self)
    @api.multi
  • convert_opportunity(self, opportunity_summary=False, partner_id=False, planned_revenue=0.0, probability=0.0)
    @api.multi
  • on_change_opportunity(self)
    @api.onchange('opportunity_id')
  • on_change_partner_id(self)
    @api.onchange('partner_id')
  • redirect_phonecall_view(self)
    @api.multi
  • schedule_another_phonecall(self, schedule_time, call_summary, user_id=False, team_id=False, tag_ids=False, action='schedule', return_recordset=False)
    @api.multi
    action :('schedule','Schedule a call'), ('log','Log a call')
  • write(self, values)
    @api.multi
    Override to add case management: open/close dates

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    index=True readonly=True string='Create Date'
  • date_closed Datetime
    index=True readonly=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True string='Duration'
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    index=True readonly=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self)
    @api.model_cr

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')] string='Action'
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    index=True required=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (2)
  • action_schedule(self)
    @api.multi
  • default_get(self, fields)
    @api.model
    This function gets default values

New fields (2)
  • phonecall_count Integer
    compute='_compute_phonecall_count' string='Phonecalls'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/9.0/crm_phonecall
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSPedro M. Baeza, Jordi Ballester Alomar, cubells, OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttps://www.tecnativa.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - sales_team
    - calendar
    - web_calendar
    - fetchmail
    - utm
    - marketing
    - web_tip
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crm_case_form_view_leads CRM - Leads Form crm.lead xpath Inherits crm.crm_case_form_view_leads
crm_case_form_view_oppor Opportunities crm.lead xpath Inherits crm.crm_case_form_view_oppor
crm_case_inbound_phone_tree_view CRM - Logged Phone Calls Tree crm.phonecall tree New
crm_case_phone_calendar_view CRM - Phone Calls Calendar crm.phonecall calendar New
crm_case_phone_form_view CRM - Phone Call Form crm.phonecall form New
crm_case_phone_tree_view CRM - Phone Calls Tree crm.phonecall tree New
phonecall_to_phonecall_view crm.phonecall2phonecall.form crm.phonecall2phonecall form New
view_crm_case_phonecalls_filter CRM - Phone Calls Search crm.phonecall search New
view_partners_form_crm_calls view.res.partner.form.crm.inherited.calls res.partner data Inherits base.view_partner_form
view_report_crm_phonecall_filter crm.phonecall.report.select crm.phonecall.report search New
view_report_crm_phonecall_graph crm.phonecall.report.graph crm.phonecall.report graph New
view_report_crm_phonecall_pivot crm.phonecall.report.pivot crm.phonecall.report pivot New
Models touched (6)

New fields (1)
  • phonecall_id Many2one → crm.phonecall
    comodel_name='crm.phonecall' string='Phonecall'
Public methods (0)

No public methods.

New fields (2)
  • phonecall_count Integer
    compute='_phonecall_count' string='Phonecalls'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='opportunity_id' string='Phonecalls'
Public methods (0)

No public methods.

New fields (21)
  • active Boolean
    default=True required=False
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • create_date Datetime
    readonly=True string='Creation Date'
  • date Datetime
    default=fields.Datetime.now
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    readonly=True string='Closed'
  • date_open Datetime
    readonly=True string='Opened'
  • description Text
  • duration Float
    help='Duration in minutes and seconds.'
  • email_from Char
    help='These people will receive email.' string='Email'
  • name Char
    required=True string='Call Summary'
  • opportunity_id Many2one → crm.lead
    comodel_name='crm.lead' string='Lead/Opportunity'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Contact'
  • partner_mobile Char
    args: 'Mobile'
  • partner_phone Char
    string='Phone'
  • priority Selection
    default='1' selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    default='open' help='The status is set to Confirmed, when a case is created.\nWhen the call is over, the status is set to Held.\nIf the callis not applicable anymore, the status can be set to Cancelled.' readonly=True string='Status' track_visibility='onchange' args: [('open', 'Confirmed'), ('cancel', 'Cancelled'), ('pending', 'Pending'), ('done', 'Held')]
  • tag_ids Many2many → crm.lead.tag
    column1='phone_id' column2='tag_id' comodel_name='crm.lead.tag' relation='crm_phonecall_tag_rel' string='Tags'
  • team_id Many2one → crm.team
    comodel_name='crm.team' help='Sales team to which Case belongs to.' select=True string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
Public methods (9)
  • action_button_convert2opportunity(self)
    @api.multi
    Convert a phonecall into an opp and then redirect to the opp view.
  • action_make_meeting(self)
    @api.multi
    Open meeting's calendar view to schedule a meeting on current phonecall.
  • compute_duration(self)
    @api.multi
  • convert_opportunity(self, opportunity_summary=False, partner_id=False, planned_revenue=0.0, probability=0.0)
    @api.multi
  • on_change_opportunity(self)
    @api.onchange('opportunity_id')
  • on_change_partner_id(self)
    @api.onchange('partner_id')
  • redirect_phonecall_view(self)
    @api.multi
  • schedule_another_phonecall(self, schedule_time, call_summary, user_id=False, team_id=False, tag_id=False, action='schedule')
    @api.multi
    action :('schedule','Schedule a call'), ('log','Log a call')
  • write(self, values)
    @api.multi
    Override to add case management: open/close dates

New fields (13)
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Company'
  • create_date Datetime
    readonly=True select=True string='Create Date'
  • date_closed Datetime
    readonly=True select=True string='Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True string='Delay to close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True string='Delay to open'
  • duration Float
    digits=(16, 2) group_operator='avg' readonly=True string='Duration'
  • nbr_cases Integer
    readonly=True string='# of Cases'
  • opening_date Datetime
    readonly=True select=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Partner'
  • priority Selection
    selection=[('0', 'Low'), ('1', 'Normal'), ('2', 'High')] string='Priority'
  • state Selection
    readonly=True string='Status' args: AVAILABLE_STATES
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Team'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='User'
Public methods (1)
  • init(self, cr)

New fields (10)
  • action Selection
    required=True selection=[('schedule', 'Schedule a call'), ('log', 'Log a call')] string='Action'
  • contact_name Char
    string='Contact'
  • date Datetime
  • name Char
    required=True select=True string='Call summary'
  • note Text
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • phone Char
  • tag_id Many2one → crm.lead.tag
    comodel_name='crm.lead.tag' string='Tag'
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
  • user_id Many2one → res.users
    comodel_name='res.users' string='Assign To'
Public methods (2)
  • action_schedule(self)
    @api.multi
  • default_get(self, fields)
    @api.model
    This function gets default values

New fields (2)
  • phonecall_count Integer
    compute='_phonecall_count' string='Phonecalls'
  • phonecall_ids One2many → crm.phonecall
    comodel_name='crm.phonecall' inverse_name='partner_id' string='Phonecalls'
Public methods (0)

No public methods.