CRM Lead Product

crm_lead_product
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/18.0/crm_lead_product
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSEnric Tobella, Weblate, OCA-git-bot, oca-ci, joelkm, Frédéric GRALL
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
    - product
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the user to link multiple products, product
categories or product templates to a lead or an opportunity in order to
be able to do a product demand forecasting taking into account the leads
and opportunities defined in Odoo.

Included in the product line there are two computed fields, the expected
revenue and prorated revenue. On one hand, the expected revenue is
computed as the selling price times the quantity. On the other hand, the
prorated revenue takes into account the probability of the opportunity
and is computed as the planned revenue times the probability.

The module also includes a reporting section where the user can easily
see in a pivot and graph view the relationship between products, stage
of the lead/opportunity and the expected or prorated revenue for that
product.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
crm_lead_view_form crm.lead.form - crm_lead_product crm.lead page Inherits crm.crm_lead_view_form
crm_opportunity_report_view_graph crm.opportunity.report.graph crm.product.report graph New
crm_opportunity_report_view_pivot crm.opportunity.report.pivot crm.product.report pivot New
crm_opportunity_report_view_search crm.lead.search crm.product.report search New
crm_opportunity_report_view_tree crm.opportunity.report.list crm.product.report list New
view_tree_lead_line crm.lead.line.tree - crm_lead_product crm.lead.line list New
Models touched (3)

New fields (1)
  • lead_line_ids One2many → crm.lead.line
    comodel_name='crm.lead.line' inverse_name='lead_id' string='Lead Lines'
Public methods (0)

No public methods.

New fields (11)
  • category_id Many2one → product.category
    index=True string='Product Category' args: 'product.category'
  • company_currency Many2one → res.currency
    readonly=True related='lead_id.company_currency' string='Currency' args: 'res.currency'
  • expected_revenue Monetary
    compute='_compute_expected_revenue' compute_sudo=True currency_field='company_currency' store=True string='Expected revenue'
  • lead_id Many2one → crm.lead
    string='Lead' args: 'crm.lead'
  • name Char
    required=True translate=True args: 'Description'
  • price_unit Float
    digits='Product Price'
  • product_id Many2one → product.product
    domain=[('sale_ok', '=', True)] index=True string='Product' args: 'product.product'
  • product_qty Integer
    default=1 required=True string='Product Quantity'
  • product_tmpl_id Many2one → product.template
    index=True string='Product Template' args: 'product.template'
  • prorated_revenue Monetary
    compute='_compute_prorated_revenue' compute_sudo=True currency_field='company_currency' store=True string='Prorated revenue'
  • uom_id Many2one → uom.uom
    readonly=True string='Unit of Measure' args: 'uom.uom'
Public methods (0)

No public methods.

New fields (24)
  • active Boolean
    readonly=True
  • campaign_id Many2one → utm.campaign
    readonly=True args: 'utm.campaign', 'Campaing'
  • category_id Many2one → product.category
    readonly=True args: 'product.category', 'Category'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True
  • date_closed Datetime
    readonly=True args: 'Closed Date'
  • date_conversion Datetime
    readonly=True args: 'Conversion Date'
  • date_deadline Datetime
    readonly=True args: 'Deadline Date'
  • date_open Datetime
    readonly=True args: 'Open Date'
  • expected_revenue Float
    readonly=True
  • lost_reason_id Many2one → crm.lost.reason
    readonly=True args: 'crm.lost.reason'
  • name Char
    readonly=True args: 'Lead Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner/Customer'
  • partner_name Char
    readonly=True args: 'Contact Name'
  • probability Float
    aggregator='avg' readonly=True
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • product_qty Integer
    readonly=True args: 'Product Quantity'
  • product_tmpl_id Many2one → product.template
    readonly=True args: 'product.template', 'Product Template'
  • prorated_revenue Float
    readonly=True
  • stage_id Many2one → crm.stage
    readonly=True args: 'crm.stage', 'Stage'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • type Selection
    help='Type is used to separate Leads and Opportunities' args: [('lead', 'Lead'), ('opportunity', 'Opportunity')]
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'Salesperson'
Public methods (1)
  • init(self)
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/17.0/crm_lead_product
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, JasminSForgeFlow, mde-scopea
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
    - product
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the user to link multiple products, product
categories or product templates to a lead or an opportunity in order to
be able to do a product demand forecasting taking into account the leads
and opportunities defined in Odoo.

Included in the product line there are two computed fields, the expected
revenue and prorated revenue. On one hand, the expected revenue is
computed as the selling price times the quantity. On the other hand, the
prorated revenue takes into account the probability of the opportunity
and is computed as the planned revenue times the probability.

The module also includes a reporting section where the user can easily
see in a pivot and graph view the relationship between products, stage
of the lead/opportunity and the expected or prorated revenue for that
product.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
crm_lead_view_form crm.lead.form - crm_lead_product crm.lead page Inherits crm.crm_lead_view_form
crm_opportunity_report_view_graph crm.opportunity.report.graph crm.product.report graph New
crm_opportunity_report_view_pivot crm.opportunity.report.pivot crm.product.report pivot New
crm_opportunity_report_view_search crm.lead.search crm.product.report search New
crm_opportunity_report_view_tree crm.opportunity.report.list crm.product.report tree New
view_tree_lead_line crm.lead.line.tree - crm_lead_product crm.lead.line tree New
Models touched (3)

New fields (1)
  • lead_line_ids One2many → crm.lead.line
    comodel_name='crm.lead.line' inverse_name='lead_id' string='Lead Lines'
Public methods (0)

No public methods.

New fields (11)
  • category_id Many2one → product.category
    index=True string='Product Category' args: 'product.category'
  • company_currency Many2one → res.currency
    readonly=True related='lead_id.company_currency' string='Currency' args: 'res.currency'
  • expected_revenue Monetary
    compute='_compute_expected_revenue' compute_sudo=True currency_field='company_currency' store=True string='Expected revenue'
  • lead_id Many2one → crm.lead
    string='Lead' args: 'crm.lead'
  • name Char
    required=True translate=True args: 'Description'
  • price_unit Float
    digits='Product Price'
  • product_id Many2one → product.product
    index=True string='Product' args: 'product.product'
  • product_qty Integer
    default=1 required=True string='Product Quantity'
  • product_tmpl_id Many2one → product.template
    index=True string='Product Template' args: 'product.template'
  • prorated_revenue Monetary
    compute='_compute_prorated_revenue' compute_sudo=True currency_field='company_currency' store=True string='Prorated revenue'
  • uom_id Many2one → uom.uom
    readonly=True string='Unit of Measure' args: 'uom.uom'
Public methods (0)

No public methods.

New fields (24)
  • active Boolean
    readonly=True
  • campaign_id Many2one → utm.campaign
    readonly=True args: 'utm.campaign', 'Campaing'
  • category_id Many2one → product.category
    readonly=True args: 'product.category', 'Category'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True
  • date_closed Datetime
    readonly=True args: 'Closed Date'
  • date_conversion Datetime
    readonly=True args: 'Conversion Date'
  • date_deadline Datetime
    readonly=True args: 'Deadline Date'
  • date_open Datetime
    readonly=True args: 'Open Date'
  • expected_revenue Float
    readonly=True
  • lost_reason_id Many2one → crm.lost.reason
    readonly=True args: 'crm.lost.reason'
  • name Char
    readonly=True args: 'Lead Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner/Customer'
  • partner_name Char
    readonly=True args: 'Contact Name'
  • probability Float
    group_operator='avg' readonly=True
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • product_qty Integer
    readonly=True args: 'Product Quantity'
  • product_tmpl_id Many2one → product.template
    readonly=True args: 'product.template', 'Product Template'
  • prorated_revenue Float
    readonly=True
  • stage_id Many2one → crm.stage
    readonly=True args: 'crm.stage', 'Stage'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • type Selection
    help='Type is used to separate Leads and Opportunities' args: [('lead', 'Lead'), ('opportunity', 'Opportunity')]
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'Salesperson'
Public methods (1)
  • init(self)
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/16.0/crm_lead_product
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, CarlosRoca13
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
    - product
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
crm_lead_view_form crm.lead.form.lead crm.lead page Inherits crm.crm_lead_view_form
crm_opportunity_report_view_graph crm.opportunity.report.graph crm.product.report graph New
crm_opportunity_report_view_pivot crm.opportunity.report.pivot crm.product.report pivot New
crm_opportunity_report_view_search crm.lead.search crm.product.report search New
crm_opportunity_report_view_tree crm.opportunity.report.list crm.product.report tree New
view_tree_lead_line crm.lead.form.lead crm.lead.line tree New
Models touched (3)

New fields (1)
  • lead_line_ids One2many → crm.lead.line
    comodel_name='crm.lead.line' inverse_name='lead_id' string='Lead Lines'
Public methods (0)

No public methods.

New fields (10)
  • category_id Many2one → product.category
    index=True string='Product Category' args: 'product.category'
  • expected_revenue Float
    compute='_compute_expected_revenue' compute_sudo=True store=True string='Expected revenue'
  • lead_id Many2one → crm.lead
    string='Lead' args: 'crm.lead'
  • name Char
    required=True translate=True args: 'Description'
  • planned_revenue Float
    compute='_compute_planned_revenue' compute_sudo=True store=True string='Planned revenue'
  • price_unit Float
  • product_id Many2one → product.product
    index=True string='Product' args: 'product.product'
  • product_qty Integer
    default=1 required=True string='Product Quantity'
  • product_tmpl_id Many2one → product.template
    index=True string='Product Template' args: 'product.template'
  • uom_id Many2one → uom.uom
    readonly=True string='Unit of Measure' args: 'uom.uom'
Public methods (0)

No public methods.

New fields (25)
  • active Boolean
    readonly=True
  • campaign_id Many2one → utm.campaign
    readonly=True args: 'utm.campaign', 'Campaing'
  • category_id Many2one → product.category
    readonly=True args: 'product.category', 'Category'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True
  • date_closed Datetime
    readonly=True args: 'Closed Date'
  • date_conversion Datetime
    readonly=True args: 'Conversion Date'
  • date_deadline Datetime
    readonly=True args: 'Deadline Date'
  • date_open Datetime
    readonly=True args: 'Open Date'
  • expected_revenue Float
    readonly=True
  • lead_id Many2one → crm.lead
    readonly=True args: 'crm.lead', 'Lead/Opportunity'
  • lost_reason Many2one → crm.lost.reason
    readonly=True args: 'crm.lost.reason'
  • name Char
    readonly=True args: 'Lead Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner/Customer'
  • partner_name Char
    readonly=True args: 'Contact Name'
  • planned_revenue Float
    readonly=True
  • probability Float
    group_operator='avg' readonly=True
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • product_qty Integer
    readonly=True args: 'Product Quantity'
  • product_tmpl_id Many2one → product.template
    readonly=True args: 'product.template', 'Product Template'
  • stage_id Many2one → crm.stage
    readonly=True args: 'crm.stage', 'Stage'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • type Selection
    help='Type is used to separate Leads and Opportunities' selection=[('lead', 'Lead'), ('opportunity', 'Opportunity')]
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'Salesperson'
Public methods (1)
  • init(self)
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/13.0/crm_lead_product
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSOCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Stephan Keller, Joan Sisquella
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
    - product
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
crm_lead_view_form crm.lead.form.lead crm.lead page Inherits crm.crm_lead_view_form
crm_opportunity_report_view_graph crm.opportunity.report.graph crm.product.report graph New
crm_opportunity_report_view_pivot crm.opportunity.report.pivot crm.product.report pivot New
crm_opportunity_report_view_search crm.lead.search crm.product.report search New
crm_opportunity_report_view_tree crm.opportunity.report.list crm.product.report tree New
view_tree_lead_line crm.lead.form.lead crm.lead.line tree New
Models touched (3)

New fields (1)
  • lead_line_ids One2many → crm.lead.line
    comodel_name='crm.lead.line' inverse_name='lead_id' string='Lead Lines'
Public methods (0)

No public methods.

New fields (10)
  • category_id Many2one → product.category
    index=True string='Product Category' args: 'product.category'
  • expected_revenue Float
    compute='_compute_expected_revenue' compute_sudo=True store=True string='Expected revenue'
  • lead_id Many2one → crm.lead
    string='Lead' args: 'crm.lead'
  • name Char
    required=True translate=True args: 'Description'
  • planned_revenue Float
    compute='_compute_planned_revenue' compute_sudo=True store=True string='Planned revenue'
  • price_unit Float
    string='Price Unit'
  • product_id Many2one → product.product
    index=True string='Product' args: 'product.product'
  • product_qty Integer
    default=1 required=True string='Product Quantity'
  • product_tmpl_id Many2one → product.template
    index=True string='Product Template' args: 'product.template'
  • uom_id Many2one → uom.uom
    readonly=True string='Unit of Measure' args: 'uom.uom'
Public methods (0)

No public methods.

New fields (24)
  • active Boolean
    readonly=True args: 'Active'
  • campaign_id Many2one → utm.campaign
    readonly=True args: 'utm.campaign', 'Campaing'
  • category_id Many2one → product.category
    readonly=True args: 'product.category', 'Category'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'Create Date'
  • date_closed Datetime
    readonly=True args: 'Closed Date'
  • date_conversion Datetime
    readonly=True args: 'Conversion Date'
  • date_deadline Datetime
    readonly=True args: 'Deadline Date'
  • date_open Datetime
    readonly=True args: 'Open Date'
  • expected_revenue Float
    readonly=True args: 'Expected Revenue'
  • lost_reason Many2one → crm.lost.reason
    readonly=True args: 'crm.lost.reason', 'Lost Reason'
  • name Char
    readonly=True args: 'Lead Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner/Customer'
  • partner_name Char
    readonly=True args: 'Contact Name'
  • planned_revenue Float
    readonly=True args: 'Planned Revenue'
  • probability Float
    group_operator='avg' readonly=True args: 'Probability'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • product_qty Integer
    readonly=True args: 'Product Quantity'
  • product_tmpl_id Many2one → product.template
    readonly=True args: 'product.template', 'Product Template'
  • stage_id Many2one → crm.stage
    readonly=True args: 'crm.stage', 'Stage'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • type Char
    help='Type is used to separate Leads and Opportunities' selection=[('lead', 'Lead'), ('opportunity', 'Opportunity')] string='Type'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'Salesperson'
Public methods (1)
  • init(self)
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/12.0/crm_lead_product
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSHolger Brunn, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Adrià Gil Sorribes, 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
    - product
    - decimal_precision
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
crm_case_form_view_leads crm.lead.form.lead crm.lead page Inherits crm.crm_case_form_view_leads
crm_case_form_view_oppor crm.lead.form.oppor crm.lead page Inherits crm.crm_case_form_view_oppor
crm_opportunity_report_view_graph crm.opportunity.report.graph crm.product.report graph New
crm_opportunity_report_view_pivot crm.opportunity.report.pivot crm.product.report pivot New
crm_opportunity_report_view_search crm.lead.search crm.product.report search New
crm_opportunity_report_view_tree crm.opportunity.report.list crm.product.report tree New
view_tree_lead_line crm.lead.form.lead crm.lead.line tree New
Models touched (3)

New fields (1)
  • lead_line_ids One2many → crm.lead.line
    comodel_name='crm.lead.line' inverse_name='lead_id' string='Lead Lines'
Public methods (0)

No public methods.

New fields (10)
  • category_id Many2one → product.category
    index=True string='Product Category' args: 'product.category'
  • expected_revenue Float
    compute='_compute_expected_revenue' compute_sudo=True store=True string='Expected revenue'
  • lead_id Many2one → crm.lead
    string='Lead' args: 'crm.lead'
  • name Char
    required=True translate=True args: 'Description'
  • planned_revenue Float
    compute='_compute_planned_revenue' compute_sudo=True store=True string='Planned revenue'
  • price_unit Float
    string='Price Unit'
  • product_id Many2one → product.product
    index=True string='Product' args: 'product.product'
  • product_qty Integer
    default=1 required=True string='Product Quantity'
  • product_tmpl_id Many2one → product.template
    index=True string='Product Template' args: 'product.template'
  • uom_id Many2one → uom.uom
    readonly=True string='Unit of Measure' args: 'uom.uom'
Public methods (0)

No public methods.

New fields (24)
  • active Boolean
    readonly=True args: 'Active'
  • campaign_id Many2one → utm.campaign
    readonly=True args: 'utm.campaign', 'Campaing'
  • category_id Many2one → product.category
    readonly=True args: 'product.category', 'Category'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'Create Date'
  • date_closed Datetime
    readonly=True args: 'Closed Date'
  • date_conversion Datetime
    readonly=True args: 'Conversion Date'
  • date_deadline Datetime
    readonly=True args: 'Deadline Date'
  • date_open Datetime
    readonly=True args: 'Open Date'
  • expected_revenue Float
    readonly=True args: 'Expected Revenue'
  • lost_reason Many2one → crm.lost.reason
    readonly=True args: 'crm.lost.reason', 'Lost Reason'
  • name Char
    readonly=True args: 'Lead Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner/Customer'
  • partner_name Char
    readonly=True args: 'Contact Name'
  • planned_revenue Float
    readonly=True args: 'Planned Revenue'
  • probability Float
    group_operator='avg' readonly=True args: 'Probability'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • product_qty Integer
    readonly=True args: 'Product Quantity'
  • product_tmpl_id Many2one → product.template
    readonly=True args: 'product.template', 'Product Template'
  • stage_id Many2one → crm.stage
    readonly=True args: 'crm.stage', 'Stage'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • type Char
    help='Type is used to separate Leads and Opportunities' selection=[('lead', 'Lead'), ('opportunity', 'Opportunity')] string='Type'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'Salesperson'
Public methods (1)
  • init(self)
    @api.model_cr
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/11.0/crm_lead_product
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYCustomer Relationship Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSoca-travis, OCA-git-bot
WEBSITE
WEBSITEhttp://www.github.com/OCA/crm
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
    - product
    - decimal_precision
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
crm_case_form_view_leads crm.lead.form.lead crm.lead page Inherits crm.crm_case_form_view_leads
crm_case_form_view_oppor crm.lead.form.oppor crm.lead page Inherits crm.crm_case_form_view_oppor
crm_opportunity_report_view_graph crm.opportunity.report.graph crm.product.report graph New
crm_opportunity_report_view_pivot crm.opportunity.report.pivot crm.product.report pivot New
crm_opportunity_report_view_search crm.lead.search crm.product.report search New
crm_opportunity_report_view_tree crm.opportunity.report.list crm.product.report tree New
view_tree_lead_line crm.lead.form.lead crm.lead.line tree New
Models touched (3)

New fields (1)
  • lead_line_ids One2many → crm.lead.line
    comodel_name='crm.lead.line' inverse_name='lead_id' string='Lead Lines'
Public methods (0)

No public methods.

New fields (10)
  • category_id Many2one → product.category
    index=True string='Product Category' args: 'product.category'
  • expected_revenue Float
    compute='_compute_expected_revenue' compute_sudo=True store=True string='Expected revenue'
  • lead_id Many2one → crm.lead
    string='Lead' args: 'crm.lead'
  • name Char
    required=True translate=True args: 'Description'
  • planned_revenue Float
    compute='_compute_planned_revenue' compute_sudo=True store=True string='Planned revenue'
  • price_unit Float
    string='Price Unit'
  • product_id Many2one → product.product
    index=True string='Product' args: 'product.product'
  • product_qty Integer
    default=1 required=True string='Product Quantity'
  • product_tmpl_id Many2one → product.template
    index=True string='Product Template' args: 'product.template'
  • uom_id Many2one → product.uom
    readonly=True string='Unit of Measure' args: 'product.uom'
Public methods (0)

No public methods.

New fields (25)
  • active Boolean
    readonly=True args: 'Active'
  • campaign_id Many2one → utm.campaign
    readonly=True args: 'utm.campaign', 'Campaing'
  • category_id Many2one → product.category
    readonly=True args: 'product.category', 'Category'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'Create Date'
  • date_closed Datetime
    readonly=True args: 'Closed Date'
  • date_conversion Datetime
    readonly=True args: 'Conversion Date'
  • date_deadline Date
    readonly=True args: 'Deadline Date'
  • date_open Datetime
    readonly=True args: 'Open Date'
  • expected_revenue Float
    readonly=True args: 'Expected Revenue'
  • lead_id Many2one → crm.lead
    readonly=True args: 'crm.lead', 'Lead'
  • lost_reason Many2one → crm.lost.reason
    readonly=True args: 'crm.lost.reason', 'Lost Reason'
  • name Char
    readonly=True args: 'Name'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner/Customer'
  • partner_name Char
    readonly=True args: 'Contact Name'
  • planned_revenue Float
    readonly=True args: 'Planned Revenue'
  • probability Float
    group_operator='avg' readonly=True args: 'Probability'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • product_qty Integer
    readonly=True args: 'Product Quantity'
  • product_tmpl_id Many2one → product.template
    readonly=True args: 'product.template', 'Product Template'
  • stage_id Many2one → crm.stage
    readonly=True args: 'crm.stage', 'Stage'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • type Char
    help='Type is used to separate Leads and Opportunities' selection=[('lead', 'Lead'), ('opportunity', 'Opportunity')] string='Type'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'Salesperson'
Public methods (1)
  • init(self)
    @api.model_cr
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/crm
PULL REQUEST
PULL REQUEST[MIG] [19.0] crm_lead_product: Migration to 19.0 (#739)