Repository
odoo/odoo · module folder
Module version
1.2
Category
Website/Website
Folder size
4.71 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-15 22:44:18
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier ALT, Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Nicolas Martinelli, Géry Debongnie, Jeremy Kersten, qsm-odoo, Moens Alexandre, Julien Castiaux, Sébastien Theys, Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), 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, Augustin (duau), Alessandro Lupo, saurabh, Séna Nshimiyimana, chpa-odoo
Odoo dependencies
Python dependencies
geoip2
System dependencies
None
Required by
test_crm_full, website_customer
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 Inherits crm.view_crm_case_leads_filter
crm_lead_view_graph crm.lead.view.graph.inherit.partner.assign crm.lead graph Inherits crm.crm_lead_view_graph
crm_lead_view_graph_forecast crm.lead.view.graph.forecast.inherit.website.crm.partner.assign crm.lead graph Inherits crm.crm_lead_view_graph_forecast
crm_lead_view_graph_report_lead crm.lead.view.graph.report.lead.inherit.partner.assign crm.lead graph 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 graph Inherits crm.crm_opportunity_report_view_graph
crm_lead_view_kanban crm.lead.view.kanban.inherit.website.crm.partner.assign crm.lead kanban Inherits crm.crm_case_kanban_view_leads
crm_lead_view_pivot crm.lead.view.pivot.inherit.partner.assign crm.lead pivot Inherits crm.crm_lead_view_pivot
crm_lead_view_pivot_forecast crm.lead.view.pivot.forecast.inherit.website.crm.partner.assign crm.lead pivot Inherits crm.crm_lead_view_pivot_forecast
crm_opportunity_partner_filter crm.opportunity.partner.filter.assigned crm.lead Inherits crm.view_crm_case_opportunities_filter
crm_opportunity_report_view_pivot_lead crm.opportunity.report.view.pivot.lead.inherit.partner_assign crm.lead pivot 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 list Inherits crm.crm_case_tree_view_leads
view_crm_lead_opportunity_geo_assign_form crm.lead.geo_assign.inherit crm.lead form Inherits crm.crm_lead_view_form
view_crm_opportunity_geo_assign_tree crm.lead.geo_assign.list.inherit crm.lead list Inherits crm.crm_case_tree_view_oppor
view_crm_partner_assign_form res.partner.assign.inherit res.partner form Inherits base_geolocalize.view_crm_partner_geo_form
view_partner_grade_form res.partner.grade.form res.partner.grade form 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 list Inherits base.view_partner_tree
HTTP endpoints (6)
Route(s)HandlerAuthTypeMethodsFlags
/my/lead/<model('crm.lead', "[('type','=', 'lead')]"):lead> WebsiteAccount.portal_my_lead user http ALL website
/my/leads, /my/leads/page/<int:page> WebsiteAccount.portal_my_leads user http ALL website
/my/opportunities, /my/opportunities/page/<int:page> WebsiteAccount.portal_my_opportunities user http ALL sudo website
/my/opportunity/<model('crm.lead', "[('type','=', 'opportunity')]"):opp> WebsiteAccount.portal_my_opportunity user http ALL sudo website
/partners, /partners/page/<int:page>, /partners/grade/<model("res.partner.grade"):grade>, /partners/grade/<model("res.partner.grade"):grade>/page/<int:page>, /partners/country/<model("res.country"):country>, /partners/country/<model("res.country"):country>/page/<int:page>, /partners/grade/<model("res.partner.grade"):grade>/country/<model("res.country"):country>, /partners/grade/<model("res.partner.grade"):grade>/country/<model("res.country"):country>/page/<int:page> WebsiteCrmPartnerAssign.partners public http ALL website
(inherited route override) WebsiteCrmPartnerAssign.partners_detail inherited http ALL sudo
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)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…