TIP: You can type at any time to perform a new search.
Resellers
website_crm_partner_assign · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 1.3
- Category
- Website/Website
- Folder size
- 3.35 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- None
- Last tracking update
- 2026-10-05 00:19:50
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Raphael Collet, Thibault Delavallée, odoo, Odoo Translation Bot, Christophe Matthieu, Jeremy Kersten, Moens Alexandre, Julien Castiaux, Aurélien Warnon, Xavier-Do, Victor Feyens, Tiffany Chang (tic), Gorash, luvi, amdi-odoo, Pierre-Yves Dufays, Robin Lejeune (role), Maruan Aguerdouh (magm), Dylan Kiss (dyki), FrancoisGe, Sarah Bellefroid, omra-odoo, aktr-odoo, Chrysanthe (chgo), Harsh Shah, thle-odoo, Lucas Lefèvre (lul), Michaël Mattiello, pish-odoo, Krzysztof Magusiak (krma), Tyler Landivar (tylan), defl, Julien Launois (jula), dtda-odoo, Augustin (duau), Garvish Panchal, assk-odoo, Séna Nshimiyimana, Atovange, Kadam Darji, ELCO, chpa-odoo, Frantisek Binovsky, Francois Vasamillet (frva), Julien Piron, Mayur Barad
- Odoo dependencies
- Python dependencies
- geoip2
- System dependencies
- None
- Required by
- test_crm_full, website_customer
- Description
This module allows to forward incoming leads/opportunities to your resellers/partners. 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 (43)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
categories_setting |
categories_setting | ir.ui.view | qweb | Inherits website_partnership.categories_setting |
contact_details |
Contact Details | ir.ui.view | qweb | Inherits website_crm_partner_assign.partner |
countries_setting |
Countries | ir.ui.view | qweb | Inherits website_crm_partner_assign.index_content |
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 |
index |
Find Resellers | ir.ui.view | qweb | Inherits website_partnership.index_layout |
index_content |
index_content | ir.ui.view | qweb | Inherits website_partnership.index |
industries_setting |
Filter Industries | ir.ui.view | qweb | Inherits index_content |
linked_partner_page_setting |
linked_partner_page_setting | ir.ui.view | qweb | Inherits website_partnership.linked_partner_page_setting |
partner |
partner | ir.ui.view | qweb | Inherits website_partnership.partner_page |
partner_detail |
partner_detail | ir.ui.view | qweb | Inherits website_partnership.partner_detail |
partner_pages_kanban_view |
Partner Pages Kanban | res.partner | kanban | Inherits base.res_partner_kanban_view |
partner_pages_tree_view |
Partner Pages List | res.partner | list | Inherits partnership.view_res_partner_grade_tree |
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_partnership.search_setting |
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 |
search_setting |
search_setting | ir.ui.view | qweb | Inherits website_partnership.search_setting |
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 website_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 |
website_partnership.companies_only_setting |
New |
HTTP endpoints (5)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/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 |
user | http | ALL |
Models touched (9)
New fields (5)
-
date_partner_assignDatecompute='_compute_date_partner_assign'copy=Truehelp='Last date this case was forwarded/assigned to a partner'readonly=Falsestore=True args: 'Partner Assignment Date' -
partner_assigned_idMany2one → res.partnerdomain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"index='btree_not_null'tracking=True args: 'res.partner', 'Assigned Partner' -
partner_declined_idsMany2many → res.partnerstring='Partner not interested' args: 'res.partner', 'crm_lead_declined_partner', 'lead_id', 'partner_id' -
partner_latitudeFloatdigits=(10, 7) args: 'Latitude' -
partner_longitudeFloatdigits=(10, 7) args: 'Longitude'
-
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_idMany2one → crm.lead.forward.to.partnerargs: 'crm.lead.forward.to.partner', 'Partner Assignment' -
lead_idMany2one → crm.leadargs: 'crm.lead', 'Lead' -
lead_linkCharargs: 'Link to Lead' -
lead_locationCharargs: 'Lead Location' -
partner_assigned_idMany2one → res.partnerargs: 'res.partner', 'Assigned Partner' -
partner_locationCharargs: 'Partner Location'
No public methods.
New fields (4)
-
assignation_linesOne2many → crm.lead.assignationargs: 'crm.lead.assignation', 'forward_id', 'Partner Assignment' -
bodyHtmlhelp='Automatically sanitized HTML contents' args: 'Contents' -
forward_typeSelectiondefault=<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_idMany2one → res.partnerargs: 'res.partner', 'Forward Leads To'
-
action_forward(self) -
default_get(self, fields)@api.model -
get_lead_portal_url(self, lead)
New fields (10)
-
activationMany2one → res.partner.activationindex=True args: 'res.partner.activation', 'Activation' -
country_idMany2one → res.countryreadonly=True args: 'res.country', 'Country' -
dateDatereadonly=True args: 'Invoice Account Date' -
date_partnershipDateargs: 'Partnership Date' -
date_reviewDateargs: 'Latest Partner Review' -
grade_idMany2one → res.partner.gradereadonly=True args: 'res.partner.grade', 'Grade' -
nbr_opportunitiesIntegerreadonly=True args: '# of Opportunity' -
partner_idMany2one → res.partnerreadonly=Truerequired=False args: 'res.partner', 'Partner' -
turnoverFloatreadonly=True args: 'Turnover' -
user_idMany2one → res.usersreadonly=True args: 'res.users', 'User'
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (9)
-
activationMany2one → res.partner.activationindex='btree_not_null'tracking=True args: 'res.partner.activation', 'Activation' -
assigned_partner_idMany2one → res.partnerindex='btree_not_null' args: 'res.partner', 'Implemented by' -
date_partnershipDateargs: 'Partnership Date' -
date_reviewDateargs: 'Latest Review' -
date_review_nextDateargs: 'Next Review' -
grade_sequenceIntegerreadonly=Truerelated='grade_id.sequence'store=True -
implemented_partner_countIntegercompute='_compute_implemented_partner_count'store=True -
implemented_partner_idsOne2many → res.partnerstring='Implementation References' args: 'res.partner', 'assigned_partner_id' -
partner_weightIntegercompute='_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=Falsestore=Truetracking=True args: 'Level Weight'
-
default_get(self, fields)@api.model -
write(self, vals)Recompute geolocation when a portal user updates their address. Portal users cannot manually refresh geolocation. Since geolocation is used for automatic lead assignment, recompute it when a portal user updates their address and the partner is eligible for assignment (graded and previously geolocated).
New fields (3)
-
activeBooleandefault=True -
nameCharrequired=True args: 'Name' -
sequenceIntegerargs: 'Sequence'
No public methods.
New fields (1)
-
partner_weightIntegerdefault=1help='Gives the probability to assign a lead to this partner. (0 means no assignment.)' args: 'Level Weight'
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…
Loading…