Resellers

website_crm_partner_assign
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/website_crm_partner_assign
VERSION
VERSION 1.2
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Xavier ALT, Nicolas Martinelli, Géry Debongnie, Jeremy Kersten, qsm-odoo, Julien Castiaux, Sébastien Theys, Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, Benjamin Vray, Benoit Socias, Nicolas Bayet, Renaud Thiry, Maximilien (malb), Victor Piryns (pivi), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Antoine (ande), FrancoisGe, omra-odoo, Serge Bayet (seba), vava-odoo, mano-odoo, thle-odoo, guce, yagp-odoo, Pierre Pulinckx, Krzysztof Magusiak (krma), Tyler Landivar (tylan), defl, Alessandro Lupo, Augustin (duau), saurabh, Séna Nshimiyimana, chpa-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - crm
    - sales_team
    - mail
    - bus
    - web_tour
    - html_editor
    - calendar
    - resource
    - utm
    - contacts
    - digest
    - portal
    - http_routing
    - auth_signup
    - phone_validation
    - account
    - onboarding
    - product
    - uom
    - analytic
    - partnership
    - sale
    - account_payment
    - payment
    - website_partner
    - website
    - social_media
    - google_recaptcha
    - html_builder
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES geoip2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignment section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignment is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (38)
XML IDNameModelTypeStatus
contact_details Contact Details ir.ui.view qweb Inherits website_crm_partner_assign.partner
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_merge_summary_inherit_partner_assign crm_lead_merge_summary_inherit_partner_assign ir.ui.view qweb Inherits crm.crm_lead_merge_summary
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_lead_view_graph crm.lead.view.graph.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph
crm_lead_view_graph_forecast crm.lead.view.graph.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph_forecast
crm_lead_view_graph_report_lead crm.lead.view.graph.report.lead.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph_lead
crm_lead_view_graph_report_opportunity crm.lead.view.graph.report.opportunity.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph
crm_lead_view_kanban crm.lead.view.kanban.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_case_kanban_view_leads
crm_lead_view_pivot crm.lead.view.pivot.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot
crm_lead_view_pivot_forecast crm.lead.view.pivot.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot_forecast
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
crm_opportunity_report_view_pivot_lead crm.opportunity.report.view.pivot.lead.inherit.partner_assign crm.lead xpath Inherits crm.crm_opportunity_report_view_pivot_lead
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
index_filter_by_industry Filter Industries ir.ui.view qweb Inherits index
layout Partners Layout ir.ui.view qweb New
o_wcrm_partner_address Address ir.ui.view qweb Inherits website_crm_partner_assign.index
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Leads / Opps ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.list res.partner.activation list New
res_partner_activation_view_search res.partner.activation.view.search res.partner.activation search New
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.list.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.list.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade div Inherits partnership.view_partner_grade_form
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign_tree res.partner.geo.inherit.list res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_partner_assign Date
    compute='_compute_date_partner_assign' copy=True help='Last date this case was forwarded/assigned to a partner' readonly=False store=True args: 'Partner Assignment Date'
  • partner_assigned_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index='btree_not_null' tracking=True args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(10, 7) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(10, 7) args: 'Geo Longitude'
Public methods (12)
  • action_assign_partner(self)
    While assigning a partner, geo-localization is performed only for leads having country set (see method 'assign_geo_localize' and 'search_geo_partner'). So for leads that does not have country set, we show the notification, and for the rest, we geo-localize them.
  • assign_geo_localize(self, latitude=False, longitude=False)
  • assign_partner(self, partner_id=False)
  • assign_salesman_of_assigned_partner(self)
  • create_opp_portal(self, values)
    @api.model
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
  • partner_interested(self, comment=False)
  • search_geo_partner(self)
  • update_contact_details_from_portal(self, values)
  • update_lead_portal(self, values)
  • update_stage_from_portal(self, stage_id)
    Allow portal users to update the stage of their assigned leads
  • write(self, vals)

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignment'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignment'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignment, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (3)
  • action_forward(self)
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead)

New fields (10)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (0)

No public methods.

New fields (9)
  • activation Many2one → res.partner.activation
    index='btree_not_null' tracking=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    index='btree_not_null' args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Review'
  • date_review_next Date
    args: 'Next Review'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_partner_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    compute='_compute_partner_weight' help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' readonly=False store=True tracking=True args: 'Level Weight'
Public methods (1)
  • default_get(self, fields)
    @api.model

New fields (3)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (1)
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignment.)' args: 'Level Weight'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_suggested_controllers(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/website_crm_partner_assign
VERSION
VERSION 1.2
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Nicolas Martinelli, Géry Debongnie, Aaron Bohy, Jeremy Kersten, qsm-odoo, Odoo Online, Romain Derie, Aurélien Warnon, Sébastien Theys, Nasreddin Boulif (bon), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Benoit Socias, Louis Wicket (wil), Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Antoine (ande), Mayurrajsinh Rathod, rolandojduartem, omra-odoo, Andrzej(pian), Ethan Vincent, bary, Maryam Kia, Guillaume-gdi, Sven Fuehr, nihp-odoo, Chrysanthe (chgo), sami odoo, Louis (wil), Shaan Thakkar (THSH), thle-odoo, Antoine (anso), paru-odoo, “Maruan
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - crm
    - sales_team
    - mail
    - bus
    - web_tour
    - html_editor
    - calendar
    - resource
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
    - account
    - onboarding
    - product
    - uom
    - analytic
    - website_partner
    - website
    - social_media
    - google_recaptcha
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES geoip2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignment section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignment is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (40)
XML IDNameModelTypeStatus
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_merge_summary_inherit_partner_assign crm_lead_merge_summary_inherit_partner_assign ir.ui.view qweb Inherits crm.crm_lead_merge_summary
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_lead_view_graph crm.lead.view.graph.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph
crm_lead_view_graph_forecast crm.lead.view.graph.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph_forecast
crm_lead_view_graph_report_lead crm.lead.view.graph.report.lead.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph_lead
crm_lead_view_graph_report_opportunity crm.lead.view.graph.report.opportunity.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph
crm_lead_view_kanban crm.lead.view.kanban.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_case_kanban_view_leads
crm_lead_view_pivot crm.lead.view.pivot.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot
crm_lead_view_pivot_forecast crm.lead.view.pivot.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot_forecast
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
crm_opportunity_report_view_pivot_lead crm.opportunity.report.view.pivot.lead.inherit.partner_assign crm.lead xpath Inherits crm.crm_opportunity_report_view_pivot_lead
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
o_wcrm_partner_address Address ir.ui.view qweb Inherits website_crm_partner_assign.index
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Leads / Opps ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.list res.partner.activation list New
res_partner_activation_view_search res.partner.activation.view.search res.partner.activation search New
res_partner_grade_view_search res.partner.grade.view.search res.partner.grade search New
snippet_options Crm Partner Assign Snippet Options ir.ui.view qweb Inherits website.snippet_options
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.list.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.list.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.list res.partner.grade list New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner field Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.list res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_partner_assign Date
    compute='_compute_date_partner_assign' copy=True help='Last date this case was forwarded/assigned to a partner' readonly=False store=True args: 'Partner Assignment Date'
  • partner_assigned_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='Partner this case has been forwarded/assigned to.' index='btree_not_null' tracking=True args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(10, 7) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(10, 7) args: 'Geo Longitude'
Public methods (11)
  • action_assign_partner(self)
    While assigning a partner, geo-localization is performed only for leads having country set (see method 'assign_geo_localize' and 'search_geo_partner'). So for leads that does not have country set, we show the notification, and for the rest, we geo-localize them.
  • assign_geo_localize(self, latitude=False, longitude=False)
  • assign_partner(self, partner_id=False)
  • assign_salesman_of_assigned_partner(self)
  • create_opp_portal(self, values)
    @api.model
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
  • partner_interested(self, comment=False)
  • search_geo_partner(self)
  • update_contact_details_from_portal(self, values)
  • update_lead_portal(self, values)
  • write(self, vals)

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignment'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignment'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignment, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (3)
  • action_forward(self)
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead)

New fields (10)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (0)

No public methods.

New fields (10)
  • activation Many2one → res.partner.activation
    index='btree_not_null' tracking=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    tracking=True args: 'res.partner.grade', 'Partner Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_partner_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    compute='_compute_partner_weight' help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' readonly=False store=True tracking=True args: 'Level Weight'
Public methods (2)
  • action_view_opportunity(self)
  • default_get(self, fields_list)
    @api.model

New fields (3)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignment.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_suggested_controllers(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/website_crm_partner_assign
VERSION
VERSION 1.2
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Xavier ALT, Xavier Morel, Nicolas Lempereur, Jeremy Kersten, Damien Bouvy, qsm-odoo, Odoo Online, Alexandre Kühn, Julien Castiaux, Xavier-Do, Victor Feyens, Samuel Degueldre, Nasreddin Boulif (bon), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, Benoit Socias, Abdelouahab (abla), Renaud Thiry, Louis Wicket (wil), miad-odoo, amdi-odoo, Louis (loco), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Hansun (hale), Antoine (ande), Michael (mcm), Mayurrajsinh Rathod, rolandojduartem, Brieuc-brd, Andrzej(pian), Ethan Vincent, bary, Maryam Kia, Julien Carion (juca), Tanguy Quéguineur, Chrysanthe (chgo), Louis (wil), Shaan Thakkar (THSH), thle-odoo, Antoine (anso), Pierre Pulinckx (pipu), Bastien PIERRE, “Maruan, Aditya Sharma, Pulinckx Pierre (PIPU)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - crm
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - onboarding
    - resource
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
    - account
    - product
    - uom
    - analytic
    - website_partner
    - website
    - social_media
    - google_recaptcha
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES geoip2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignment section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignment is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (40)
XML IDNameModelTypeStatus
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_merge_summary_inherit_partner_assign crm_lead_merge_summary_inherit_partner_assign ir.ui.view qweb Inherits crm.crm_lead_merge_summary
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_lead_view_graph crm.lead.view.graph.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph
crm_lead_view_graph_forecast crm.lead.view.graph.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph_forecast
crm_lead_view_graph_report_lead crm.lead.view.graph.report.lead.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph_lead
crm_lead_view_graph_report_opportunity crm.lead.view.graph.report.opportunity.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph
crm_lead_view_kanban crm.lead.view.kanban.inherit.website.crm.partner.assign crm.lead field Inherits crm.crm_case_kanban_view_leads
crm_lead_view_pivot crm.lead.view.pivot.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot
crm_lead_view_pivot_forecast crm.lead.view.pivot.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot_forecast
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
crm_opportunity_report_view_pivot_lead crm.opportunity.report.view.pivot.lead.inherit.partner_assign crm.lead xpath Inherits crm.crm_opportunity_report_view_pivot_lead
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
o_wcrm_partner_address Address ir.ui.view qweb Inherits website_crm_partner_assign.index
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Show Leads / Opps ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
res_partner_activation_view_search res.partner.activation.view.search res.partner.activation search New
res_partner_grade_view_search res.partner.grade.view.search res.partner.grade search New
snippet_options Crm Partner Assign Snippet Options ir.ui.view qweb Inherits website.snippet_options
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner field Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_partner_assign Date
    compute='_compute_date_partner_assign' copy=True help='Last date this case was forwarded/assigned to a partner' readonly=False store=True args: 'Partner Assignment Date'
  • partner_assigned_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='Partner this case has been forwarded/assigned to.' index='btree_not_null' tracking=True args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(10, 7) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(10, 7) args: 'Geo Longitude'
Public methods (11)
  • action_assign_partner(self)
    While assigning a partner, geo-localization is performed only for leads having country set (see method 'assign_geo_localize' and 'search_geo_partner'). So for leads that does not have country set, we show the notification, and for the rest, we geo-localize them.
  • assign_geo_localize(self, latitude=False, longitude=False)
  • assign_partner(self, partner_id=False)
  • assign_salesman_of_assigned_partner(self)
  • create_opp_portal(self, values)
    @api.model
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
  • partner_interested(self, comment=False)
  • search_geo_partner(self)
  • update_contact_details_from_portal(self, values)
  • update_lead_portal(self, values)
  • write(self, vals)

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignment'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignment'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignment, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (3)
  • action_forward(self)
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead)

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (0)

No public methods.

New fields (10)
  • activation Many2one → res.partner.activation
    index='btree_not_null' tracking=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    tracking=True args: 'res.partner.grade', 'Partner Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_partner_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    compute='_compute_partner_weight' help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' readonly=False store=True tracking=True args: 'Level Weight'
Public methods (2)
  • action_view_opportunity(self)
  • default_get(self, fields_list)
    @api.model

New fields (3)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignment.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_suggested_controllers(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/website_crm_partner_assign
VERSION
VERSION 1.2
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Goffin Simon, Nicolas Lempereur, Jeremy Kersten, Damien Bouvy, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Romain Derie, Julien Castiaux, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Sébastien Theys, std-odoo, Rémy Voet (ryv), Romain Estievenart, Benoit Socias, ijas ahammed, miad-odoo, amdi-odoo, Louis (loco), Hansun (hale), Mayurrajsinh Rathod, rolandojduartem, Umesh Gupta, Tanguy Quéguineur, thle-odoo, “Maruan
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - crm
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - utm
    - web_kanban_gauge
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
    - account
    - product
    - uom
    - analytic
    - website_partner
    - website
    - social_media
    - google_recaptcha
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignment section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignment is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (39)
XML IDNameModelTypeStatus
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_merge_summary_inherit_partner_assign crm_lead_merge_summary_inherit_partner_assign ir.ui.view qweb Inherits crm.crm_lead_merge_summary
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_lead_view_graph crm.lead.view.graph.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph
crm_lead_view_graph_forecast crm.lead.view.graph.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph_forecast
crm_lead_view_graph_report_lead crm.lead.view.graph.report.lead.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph_lead
crm_lead_view_graph_report_opportunity crm.lead.view.graph.report.opportunity.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph
crm_lead_view_kanban crm.lead.view.kanban.inherit.website.crm.partner.assign crm.lead field Inherits crm.crm_case_kanban_view_leads
crm_lead_view_pivot crm.lead.view.pivot.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot
crm_lead_view_pivot_forecast crm.lead.view.pivot.forecast.inherit.website.crm.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot_forecast
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
crm_opportunity_report_view_pivot_lead crm.opportunity.report.view.pivot.lead.inherit.partner_assign crm.lead xpath Inherits crm.crm_opportunity_report_view_pivot_lead
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Show Leads / Opps ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
res_partner_activation_view_search res.partner.activation.view.search res.partner.activation search New
res_partner_grade_view_search res.partner.grade.view.search res.partner.grade search New
snippet_options Crm Partner Assign Snippet Options ir.ui.view qweb Inherits website.snippet_options
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner field Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_partner_assign Date
    compute='_compute_date_partner_assign' copy=True help='Last date this case was forwarded/assigned to a partner' readonly=False store=True args: 'Partner Assignment Date'
  • partner_assigned_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='Partner this case has been forwarded/assigned to.' index='btree_not_null' tracking=True args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(10, 7) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(10, 7) args: 'Geo Longitude'
Public methods (11)
  • action_assign_partner(self)
    While assigning a partner, geo-localization is performed only for leads having country set (see method 'assign_geo_localize' and 'search_geo_partner'). So for leads that does not have country set, we show the notification, and for the rest, we geo-localize them.
  • assign_geo_localize(self, latitude=False, longitude=False)
  • assign_partner(self, partner_id=False)
  • assign_salesman_of_assigned_partner(self)
  • create_opp_portal(self, values)
    @api.model
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
  • partner_interested(self, comment=False)
  • search_geo_partner(self)
  • update_contact_details_from_portal(self, values)
  • update_lead_portal(self, values)
  • write(self, vals)

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignment'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignment'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignment, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (3)
  • action_forward(self)
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead)

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (0)

No public methods.

New fields (10)
  • activation Many2one → res.partner.activation
    index='btree_not_null' tracking=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    tracking=True args: 'res.partner.grade', 'Partner Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_partner_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    compute='_compute_partner_weight' help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' readonly=False store=True tracking=True args: 'Level Weight'
Public methods (2)
  • action_view_opportunity(self)
  • default_get(self, fields_list)
    @api.model

New fields (3)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignment.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_suggested_controllers(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Xavier Morel, Goffin Simon, Aaron Bohy, Jeremy Kersten, GitHub, Yannick Tivisse, Dharmraj Jhala, Romain Derie, Aurélien Warnon, Xavier-Do, Julien Mougenot, std-odoo, Jérémy Hennecart, Nasreddin Boulif (bon), Tiffany Chang (tic), Rémy Voet (ryv), Mathieu Duckerts-Antoine, Kevin Baptiste, ijas ahammed, Nicolas Bayet, Laurent Stukkens (LTU), Michael Mattiello (mcm), Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Hansun (hale), Mayurrajsinh Rathod, rolandojduartem, Leonardo Pavan Rocha
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - crm
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - web_kanban_gauge
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
    - account
    - product
    - uom
    - analytic
    - website_partner
    - website
    - social_media
    - google_recaptcha
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignment section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignment is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (32)
XML IDNameModelTypeStatus
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_lead_view_graph crm.lead.view.graph.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph
crm_lead_view_graph_report_lead crm.lead.view.graph.report.lead.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph_lead
crm_lead_view_graph_report_opportunity crm.lead.view.graph.report.opportunity.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph
crm_lead_view_pivot crm.lead.view.pivot.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Show Leads / Opps ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
res_partner_grade_view_search res.partner.grade.view.search res.partner.grade search New
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner field Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_partner_assign Date
    compute='_compute_date_partner_assign' copy=True help='Last date this case was forwarded/assigned to a partner' readonly=False store=True args: 'Partner Assignment Date'
  • partner_assigned_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='Partner this case has been forwarded/assigned to.' index=True tracking=True args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(10, 7) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(10, 7) args: 'Geo Longitude'
Public methods (11)
  • action_assign_partner(self)
  • assign_geo_localize(self, latitude=False, longitude=False)
  • assign_partner(self, partner_id=False)
  • assign_salesman_of_assigned_partner(self)
  • create_opp_portal(self, values)
    @api.model
  • get_access_action(self, access_uid=None)
    Instead of the classic form view, redirect to the online document for portal users or if force_website=True in the context.
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
  • partner_interested(self, comment=False)
  • search_geo_partner(self)
  • update_contact_details_from_portal(self, values)
  • update_lead_portal(self, values)

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignment'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignment'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignment, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (4)
  • action_forward(self)
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead)
  • get_portal_url(self)

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (0)

No public methods.

New fields (10)
  • activation Many2one → res.partner.activation
    index=True tracking=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    tracking=True args: 'res.partner.grade', 'Partner Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    compute='_compute_partner_weight' help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' readonly=False store=True tracking=True args: 'Level Weight'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignment.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_suggested_controllers(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Thibault Francois, qdp-odoo, Jeremy Kersten, GitHub, Barad Mahendra, Yannick Tivisse, Dharmraj Jhala, Romain Derie, Toufik Ben Jaa, Adrian Torres, Aurélien Warnon, Xavier-Do, Victor Feyens, Sébastien Theys, fw-bot, std-odoo, Jérémy Hennecart, Nasreddin Boulif (bon), Rémy Voet (ryv), Mathieu Duckerts-Antoine, Kevin Baptiste, Arnaud Baes, Benoit Socias, Jigar Vaghela, xO-Tx, Levi Siuzdak (sile), Hansun (hale), rolandojduartem
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - crm
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
    - account
    - product
    - uom
    - analytic
    - website_partner
    - website
    - social_media
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignment section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignment is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (33)
XML IDNameModelTypeStatus
assets_frontend Survey assets ir.ui.view qweb Inherits website.assets_frontend
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_lead_view_graph crm.lead.view.graph.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_graph
crm_lead_view_graph_report_lead crm.lead.view.graph.report.lead.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph_lead
crm_lead_view_graph_report_opportunity crm.lead.view.graph.report.opportunity.inherit.partner.assign crm.lead xpath Inherits crm.crm_opportunity_report_view_graph
crm_lead_view_pivot crm.lead.view.pivot.inherit.partner.assign crm.lead xpath Inherits crm.crm_lead_view_pivot
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Show Leads / Opps ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
res_partner_grade_view_search res.partner.grade.view.search res.partner.grade search New
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner field Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_partner_assign Date
    compute='_compute_date_partner_assign' copy=True help='Last date this case was forwarded/assigned to a partner' readonly=False store=True args: 'Partner Assignment Date'
  • partner_assigned_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='Partner this case has been forwarded/assigned to.' index=True tracking=True args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(16, 5) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(16, 5) args: 'Geo Longitude'
Public methods (11)
  • action_assign_partner(self)
  • assign_geo_localize(self, latitude=False, longitude=False)
  • assign_partner(self, partner_id=False)
  • assign_salesman_of_assigned_partner(self)
  • create_opp_portal(self, values)
    @api.model
  • get_access_action(self, access_uid=None)
    Instead of the classic form view, redirect to the online document for portal users or if force_website=True in the context.
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
  • partner_interested(self, comment=False)
  • search_geo_partner(self)
  • update_contact_details_from_portal(self, values)
  • update_lead_portal(self, values)

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignment'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignment'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignment, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (4)
  • action_forward(self)
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead_id, type)
  • get_portal_url(self)

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (0)

No public methods.

New fields (10)
  • activation Many2one → res.partner.activation
    index=True tracking=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    tracking=True args: 'res.partner.grade', 'Partner Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    compute='_compute_partner_weight' help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' readonly=False store=True tracking=True args: 'Level Weight'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignment.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_suggested_controllers(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Nicolas Seinlet, Romain Derie, Adrian Torres, Julien Castiaux, Aurélien Warnon, Xavier-Do, Victor Feyens, Sébastien Theys, std-odoo, David Beguin, Prakash Prajapati, Yenthe666, Arnaud Baes, qmo-odoo, Geoffroy Larue, Csaba Tóth
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - crm
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - contacts
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - phone_validation
    - account
    - product
    - uom
    - analytic
    - website_partner
    - website
    - social_media
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignation section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignation is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (29)
XML IDNameModelTypeStatus
assets_frontend Survey assets ir.ui.view qweb Inherits website.assets_frontend
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Portal My Home : lead entries ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
res_partner_grade_view_search res.partner.grade.view.search res.partner.grade search New
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner field Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (7)

New fields (5)
  • date_assign Date
    help='Last date this case was forwarded/assigned to a partner' args: 'Partner Assignation Date'
  • partner_assigned_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='Partner this case has been forwarded/assigned to.' index=True tracking=True args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(16, 5) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(16, 5) args: 'Geo Longitude'
Public methods (11)
  • action_assign_partner(self)
  • assign_geo_localize(self, latitude=False, longitude=False)
  • assign_partner(self, partner_id=False)
  • assign_salesman_of_assigned_partner(self)
  • create_opp_portal(self, values)
    @api.model
  • get_access_action(self, access_uid=None)
    Instead of the classic form view, redirect to the online document for portal users or if force_website=True in the context.
  • onchange_assign_id(self)
    @api.onchange('partner_assigned_id')
    This function updates the "assignation date" automatically, when manually assign a partner in the geo assign tab
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
  • partner_interested(self, comment=False)
  • search_geo_partner(self)
  • update_lead_portal(self, values)

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignation'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignation'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignation, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (4)
  • action_forward(self)
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead_id, type)
  • get_portal_url(self)

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    readonly=True args: 'crm.team', 'Sales Team'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (1)
  • init(self)
    CRM Lead Report @param cr: the current row, from the database cursor

New fields (10)
  • activation Many2one → res.partner.activation
    index=True tracking=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    tracking=True args: 'res.partner.grade', 'Partner Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    default=0 help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' tracking=True args: 'Level Weight'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignation.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Nicolas Lempereur, qdp-odoo, Géry Debongnie, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Romain Derie, Toufik Benjaa, Adrien Dieudonne, RomainLibert, Christophe Monniez, Julien (juc) Castiaux, Nans Lefebvre, Xavier-Do, std-odoo, Naglis Jonaitis
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base
    - crm
    - base_setup
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - contacts
    - digest
    - portal
    - http_routing
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - website_partner
    - website
    - web_editor
    - social_media
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to publish your resellers/partners on your website and to forward incoming leads/opportunities to them.


**Publish a partner**

To publish a partner, set a *Level* in their contact form (in the Partner Assignation section) and click the *Publish* button.

**Forward leads**

Forwarding leads can be done for one or several leads at a time. The action is available in the *Assigned Partner* section of the lead/opportunity form view and in the *Action* menu of the list view.

The automatic assignation is figured from the weight of partner levels and the geolocalization. Partners get leads that are located around them.

    

Code Analysis

Views touched (29)
XML IDNameModelTypeStatus
assets_frontend Survey assets ir.ui.view qweb Inherits website.assets_frontend
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Portal My Home : lead entries ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
view_crm_lead_geo_assign_form crm.lead.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_case_form_view_leads
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_case_form_view_oppor
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner filter Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (7)

New fields (5)
  • date_assign Date
    help='Last date this case was forwarded/assigned to a partner' args: 'Partner Assignation Date'
  • partner_assigned_id Many2one → res.partner
    help='Partner this case has been forwarded/assigned to.' index=True track_visibility='onchange' args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(16, 5) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(16, 5) args: 'Geo Longitude'
Public methods (11)
  • action_assign_partner(self)
    @api.multi
  • assign_geo_localize(self, latitude=False, longitude=False)
    @api.multi
  • assign_partner(self, partner_id=False)
    @api.multi
  • assign_salesman_of_assigned_partner(self)
    @api.multi
  • create_opp_portal(self, values)
    @api.model
  • get_access_action(self, access_uid=None)
    @api.multi
    Instead of the classic form view, redirect to the online document for portal users or if force_website=True in the context.
  • onchange_assign_id(self)
    @api.onchange('partner_assigned_id')
    This function updates the "assignation date" automatically, when manually assign a partner in the geo assign tab
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
    @api.multi
  • partner_interested(self, comment=False)
    @api.multi
  • search_geo_partner(self)
    @api.multi
  • update_lead_portal(self, values)
    @api.multi

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignation'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Link to Lead'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignation'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignation, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (4)
  • action_forward(self)
    @api.multi
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead_id, type)
  • get_portal_url(self)

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    oldname='opp' readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    oldname='section_id' readonly=True args: 'crm.team', 'Sales Team'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (1)
  • init(self)
    @api.model_cr
    CRM Lead Report @param cr: the current row, from the database cursor

New fields (10)
  • activation Many2one → res.partner.activation
    index=True track_visibility='onchange' args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    track_visibility='onchange' args: 'res.partner.grade', 'Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    default=0 help='This should be a numerical value greater than 0 which will decide the contention for this partner to take this lead/opportunity.' track_visibility='onchange' args: 'Level Weight'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (5)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignation.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
  • website_published Boolean
    default=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Nicolas Martinelli, Jérome Maes, Richard Mathot, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Odoo Online, Denis Vermylen (dve), DVE, Denis Vermylen
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base
    - crm
    - base_setup
    - web
    - sales_team
    - mail
    - bus
    - web_tour
    - calendar
    - resource
    - fetchmail
    - utm
    - web_planner
    - contacts
    - account
    - product
    - decimal_precision
    - analytic
    - portal
    - http_routing
    - website_partner
    - website
    - web_editor
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Publish and Assign Partner
==========================
        

Code Analysis

Views touched (33)
XML IDNameModelTypeStatus
assets_frontend Survey assets ir.ui.view qweb Inherits website.assets_frontend
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
footer_custom Footer Partners Link ir.ui.view qweb Inherits website.footer_default
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Portal My Home : lead entries ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits portal.portal_layout
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
view_crm_lead_geo_assign_form crm.lead.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_case_form_view_leads
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_case_form_view_oppor
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_lead_assign_filter crm.lead.report.assign.select crm.lead.report.assign search New
view_report_crm_lead_assign_graph crm.lead.assign.graph crm.lead.report.assign graph New
view_report_crm_lead_assign_pivot crm.lead.assign.pivot crm.lead.report.assign pivot New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner filter Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_assign Date
    help='Last date this case was forwarded/assigned to a partner' args: 'Assignation Date'
  • partner_assigned_id Many2one → res.partner
    help='Partner this case has been forwarded/assigned to.' index=True track_visibility='onchange' args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(16, 5) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(16, 5) args: 'Geo Longitude'
Public methods (10)
  • action_assign_partner(self)
    @api.multi
  • assign_geo_localize(self, latitude=False, longitude=False)
    @api.multi
  • assign_partner(self, partner_id=False)
    @api.multi
  • assign_salesman_of_assigned_partner(self)
    @api.multi
  • create_opp_portal(self, values)
    @api.model
  • onchange_assign_id(self)
    @api.onchange('partner_assigned_id')
    This function updates the "assignation date" automatically, when manually assign a partner in the geo assign tab
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
    @api.multi
  • partner_interested(self, comment=False)
    @api.multi
  • search_geo_partner(self)
    @api.multi
  • update_lead_portal(self, values)
    @api.multi

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignation'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Lead Single Links'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignation'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignation, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (4)
  • action_forward(self)
    @api.multi
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead_id, type)
  • get_portal_url(self)

New fields (23)
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • 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_assign Date
    readonly=True args: 'Assign Date'
  • date_closed Datetime
    readonly=True args: 'Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True args: 'Delay to Close'
  • delay_expected Float
    digits=(16, 2) group_operator='avg' readonly=True args: 'Overpassed Deadline'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True args: 'Delay to Assign'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_cases Integer
    oldname='nbr' readonly=True args: '# of Cases'
  • opening_date Datetime
    readonly=True args: 'Opening Date'
  • partner_assigned_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • planned_revenue Float
    digits=(16, 2) readonly=True args: 'Planned Revenue'
  • priority Selection
    args: crm_stage.AVAILABLE_PRIORITIES, 'Priority'
  • probability Float
    digits=(16, 2) group_operator='avg' readonly=True args: 'Avg Probability'
  • probability_max Float
    digits=(16, 2) group_operator='max' readonly=True args: 'Max Probability'
  • probable_revenue Float
    digits=(16, 2) readonly=True args: 'Probable Revenue'
  • tag_ids Many2many → crm.lead.tag
    args: 'crm.lead.tag', 'crm_lead_tag_rel', 'lead_id', 'tag_id', 'Tags'
  • team_id Many2one → crm.team
    oldname='section_id' readonly=True args: 'crm.team', 'Sales Channel'
  • type Selection
    help='Type is used to separate Leads and Opportunities' args: [('lead', 'Lead'), ('opportunity', 'Opportunity')], 'Type'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (1)
  • init(self)
    @api.model_cr
    CRM Lead Report @param cr: the current row, from the database cursor

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    oldname='opp' readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    oldname='section_id' readonly=True args: 'crm.team', 'Sales Channel'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (1)
  • init(self)
    @api.model_cr
    CRM Lead Report @param cr: the current row, from the database cursor

New fields (10)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    args: 'res.partner.grade', 'Level'
  • grade_sequence Integer
    readonly=True related='grade_id.sequence' store=True
  • implemented_count Integer
    compute='_compute_implemented_partner_count' store=True
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    default=<expr> help='Gives the probability to assign a lead to this partner. (0 means no assignation.)' args: 'Level Weight'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (5)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignation.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
  • website_published Boolean
    default=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Nicolas Martinelli, Jérome Maes, Julien Legros, qdp-odoo, Jeremy Kersten, GitHub, Damien Bouvy, Yannick Tivisse, fwi-odoo, Johan Demaret Rivarola
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base
    - crm
    - base_action_rule
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - sales_team
    - calendar
    - web_calendar
    - fetchmail
    - utm
    - web_planner
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - portal
    - auth_signup
    - website_partner
    - website
    - web_editor
    - website_google_map
    - website_portal
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Publish and Assign Partner
==========================
        

Code Analysis

Views touched (33)
XML IDNameModelTypeStatus
assets_frontend Survey assets ir.ui.view qweb Inherits website.assets_frontend
crm_lead_forward_to_partner_form crm_lead_forward_to_partner crm.lead.forward.to.partner form New
crm_lead_partner_filter crm.lead.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_leads_filter
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead filter Inherits crm.view_crm_case_opportunities_filter
footer_custom Footer Partners Link ir.ui.view qweb Inherits website.footer_default
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
portal_my_home_lead Portal My Home : lead entries ir.ui.view qweb Inherits website_portal.portal_my_home
portal_my_home_menu_lead Portal layout : lead menu entry ir.ui.view qweb Inherits website_portal.portal_layout
portal_my_lead My Lead ir.ui.view qweb New
portal_my_leads My Leads ir.ui.view qweb New
portal_my_opportunities My Opportunities ir.ui.view qweb New
portal_my_opportunity My Opportunity ir.ui.view qweb New
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
res_partner_activation_form res.partner.activation.form res.partner.activation form New
res_partner_activation_tree res.partner.activation.tree res.partner.activation tree New
view_crm_lead_geo_assign_form crm.lead.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_case_form_view_leads
view_crm_lead_geo_assign_tree crm.lead.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_leads
view_crm_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead xpath Inherits crm.crm_case_form_view_oppor
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.tree.inherit crm.lead field Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner data Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form New
view_partner_grade_tree res.partner.grade.tree res.partner.grade tree New
view_report_crm_lead_assign_filter crm.lead.report.assign.select crm.lead.report.assign search New
view_report_crm_lead_assign_graph crm.lead.assign.graph crm.lead.report.assign graph New
view_report_crm_lead_assign_pivot crm.lead.assign.pivot crm.lead.report.assign pivot New
view_report_crm_partner_assign_filter crm.partner.report.assign.select crm.partner.report.assign search New
view_report_crm_partner_assign_graph crm.partner.assign.report.graph crm.partner.report.assign graph New
view_res_partner_filter_assign res.partner.geo.inherit.search res.partner filter Inherits base.view_res_partner_filter
view_res_partner_filter_assign_tree res.partner.geo.inherit.tree res.partner field Inherits base.view_partner_tree
Models touched (8)

New fields (5)
  • date_assign Date
    help='Last date this case was forwarded/assigned to a partner' args: 'Assignation Date'
  • partner_assigned_id Many2one → res.partner
    help='Partner this case has been forwarded/assigned to.' index=True track_visibility='onchange' args: 'res.partner', 'Assigned Partner'
  • partner_declined_ids Many2many → res.partner
    string='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id'
  • partner_latitude Float
    digits=(16, 5) args: 'Geo Latitude'
  • partner_longitude Float
    digits=(16, 5) args: 'Geo Longitude'
Public methods (9)
  • action_assign_partner(self)
    @api.multi
  • assign_geo_localize(self, latitude=False, longitude=False)
    @api.multi
  • assign_partner(self, partner_id=False)
    @api.multi
  • assign_salesman_of_assigned_partner(self)
    @api.multi
  • onchange_assign_id(self)
    @api.onchange('partner_assigned_id')
    This function updates the "assignation date" automatically, when manually assign a partner in the geo assign tab
  • partner_desinterested(self, comment=False, contacted=False, spam=False)
    @api.multi
  • partner_interested(self, comment=False)
    @api.multi
  • search_geo_partner(self)
    @api.multi
  • update_lead_portal(self, values)
    @api.multi

New fields (6)
  • forward_id Many2one → crm.lead.forward.to.partner
    args: 'crm.lead.forward.to.partner', 'Partner Assignation'
  • lead_id Many2one → crm.lead
    args: 'crm.lead', 'Lead'
  • lead_link Char
    args: 'Lead Single Links'
  • lead_location Char
    args: 'Lead Location'
  • partner_assigned_id Many2one → res.partner
    args: 'res.partner', 'Assigned Partner'
  • partner_location Char
    args: 'Partner Location'
Public methods (0)

No public methods.

New fields (4)
  • assignation_lines One2many → crm.lead.assignation
    args: 'crm.lead.assignation', 'forward_id', 'Partner Assignation'
  • body Html
    help='Automatically sanitized HTML contents' args: 'Contents'
  • forward_type Selection
    default=<expr> args: [('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignation, using GPS coordinates and partner's grades")], 'Forward selected leads to'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Forward Leads To'
Public methods (4)
  • action_forward(self)
    @api.multi
  • default_get(self, fields)
    @api.model
  • get_lead_portal_url(self, lead_id, type)
  • get_portal_url(self)

New fields (23)
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • 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_assign Date
    readonly=True args: 'Assign Date'
  • date_closed Datetime
    readonly=True args: 'Close Date'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the case' readonly=True args: 'Delay to Close'
  • delay_expected Float
    digits=(16, 2) group_operator='avg' readonly=True args: 'Overpassed Deadline'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the case' readonly=True args: 'Delay to Assign'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_cases Integer
    oldname='nbr' readonly=True args: '# of Cases'
  • opening_date Datetime
    readonly=True args: 'Opening Date'
  • partner_assigned_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Partner'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Customer'
  • planned_revenue Float
    digits=(16, 2) readonly=True args: 'Planned Revenue'
  • priority Selection
    args: crm_stage.AVAILABLE_PRIORITIES, 'Priority'
  • probability Float
    digits=(16, 2) group_operator='avg' readonly=True args: 'Avg Probability'
  • probability_max Float
    digits=(16, 2) group_operator='max' readonly=True args: 'Max Probability'
  • probable_revenue Float
    digits=(16, 2) readonly=True args: 'Probable Revenue'
  • tag_ids Many2many → crm.lead.tag
    args: 'crm.lead.tag', 'crm_lead_tag_rel', 'lead_id', 'tag_id', 'Tags'
  • team_id Many2one → crm.team
    oldname='section_id' readonly=True args: 'crm.team', 'Sales Team'
  • type Selection
    help='Type is used to separate Leads and Opportunities' args: [('lead', 'Lead'), ('opportunity', 'Opportunity')], 'Type'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (1)
  • init(self)
    @api.model_cr
    CRM Lead Report @param cr: the current row, from the database cursor

New fields (11)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • date Date
    readonly=True args: 'Invoice Account Date'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • grade_id Many2one → res.partner.grade
    readonly=True args: 'res.partner.grade', 'Grade'
  • nbr_opportunities Integer
    oldname='opp' readonly=True args: '# of Opportunity'
  • partner_id Many2one → res.partner
    readonly=True required=False args: 'res.partner', 'Partner'
  • team_id Many2one → crm.team
    oldname='section_id' readonly=True args: 'crm.team', 'Sales Team'
  • turnover Float
    readonly=True args: 'Turnover'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'User'
Public methods (1)
  • init(self)
    @api.model_cr
    CRM Lead Report @param cr: the current row, from the database cursor

New fields (8)
  • activation Many2one → res.partner.activation
    index=True args: 'res.partner.activation', 'Activation'
  • assigned_partner_id Many2one → res.partner
    args: 'res.partner', 'Implemented by'
  • date_partnership Date
    args: 'Partnership Date'
  • date_review Date
    args: 'Latest Partner Review'
  • date_review_next Date
    args: 'Next Partner Review'
  • grade_id Many2one → res.partner.grade
    args: 'res.partner.grade', 'Level'
  • implemented_partner_ids One2many → res.partner
    string='Implementation References' args: 'res.partner', 'assigned_partner_id'
  • partner_weight Integer
    default=<expr> help='Gives the probability to assign a lead to this partner. (0 means no assignation.)' args: 'Level Weight'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True args: 'Name'
  • sequence Integer
    args: 'Sequence'
Public methods (0)

No public methods.

New fields (5)
  • active Boolean
    default=<expr> args: 'Active'
  • name Char
    translate=True args: 'Level Name'
  • partner_weight Integer
    default=1 help='Gives the probability to assign a lead to this partner. (0 means no assignation.)' args: 'Level Weight'
  • sequence Integer
    args: 'Sequence'
  • website_published Boolean
    default=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Nicolas Martinelli, Julien Legros, Géry Debongnie, Jeremy Kersten, Yannick Tivisse
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm_partner_assign
    - base_geolocalize
    - base
    - crm
    - base_action_rule
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - sales_team
    - calendar
    - web_calendar
    - fetchmail
    - utm
    - marketing
    - web_tip
    - web_planner
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - portal
    - auth_signup
    - website_partner
    - website
    - web_editor
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Publish and Assign Partner
==========================
        

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
footer_custom Footer Partners Link ir.ui.view qweb Inherits website.footer_default
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
partner_grade_view res.partner.grade.website res.partner.grade xpath Inherits crm_partner_assign.view_partner_grade_form
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/website_crm_partner_assign
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, Xavier Morel, Paramjit Singh Sahota, Richard Mathot, bth-openerp, chm@openerp.com, ddm, openerp-sle, Jeremy Kersten
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - crm_partner_assign
    - base_geolocalize
    - base
    - crm
    - base_action_rule
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - sales_team
    - web_kanban_sparkline
    - email_template
    - calendar
    - web_calendar
    - board
    - fetchmail
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - edi
    - portal
    - share
    - auth_signup
    - website_partner
    - website
    - website_google_map
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Publish and Assign Partner
==========================
        

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
footer_custom Footer Partners Link ir.ui.view qweb Inherits website.footer_default
grade_in_detail grade_in_detail ir.ui.view qweb Inherits website_partner.partner_detail
index Find Resellers ir.ui.view qweb New
layout Partners Layout ir.ui.view qweb New
partner Partner Detail ir.ui.view qweb New
partner_grade_view res.partner.grade.website res.partner.grade field Inherits crm_partner_assign.view_partner_grade_form
ref_country Left World Map ir.ui.view qweb Inherits website_crm_partner_assign.index
references_block Partner References Block ir.ui.view qweb New
Models touched (0)

No models found for this module.