Skip to content

Commit

Permalink
[ADD] crm_lead_to_task: Add relationship and smart buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
santiagordz committed Aug 1, 2024
1 parent ff9a83d commit 45b2d20
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 1 deletion.
1 change: 1 addition & 0 deletions crm_lead_to_task/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# License LGPL-3 - See https://www.gnu.org/licenses/lgpl-3.0.html
from . import models
from . import wizard
1 change: 1 addition & 0 deletions crm_lead_to_task/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@
"security/ir.model.access.csv",
"wizard/crm_lead_convert2task_views.xml",
"views/crm_lead_views.xml",
"views/project_task_views.xml",
],
}
2 changes: 2 additions & 0 deletions crm_lead_to_task/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import crm_lead
from . import project_task
27 changes: 27 additions & 0 deletions crm_lead_to_task/models/crm_lead.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Copyright (C) 2024 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import _, api, fields, models


class CrmLead(models.Model):
_inherit = "crm.lead"

task_ids = fields.One2many('project.task', 'lead_id')
task_count = fields.Integer(compute="_compute_task_count")

@api.depends('task_ids')
def _compute_task_count(self):
for lead in self:
lead.task_count = len(lead.task_ids)

def action_view_tasks(self):
self.ensure_one()
return {
"type": "ir.actions.act_window",
"res_model": "project.task",
"view_mode": "tree,form",
"domain": [('lead_id', '=', self.id)],
"context": {"default_search_lead_id": self.id},
"name": _("Tasks from crm lead %s") % self.name,
}
22 changes: 22 additions & 0 deletions crm_lead_to_task/models/project_task.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright (C) 2024 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import _, fields, models


class ProjectTask(models.Model):
_inherit = "project.task"

lead_id = fields.Many2one('project.task')

def action_view_lead(self):
self.ensure_one()
return {
"type": "ir.actions.act_window",
"res_model": "crm.lead",
"view_mode": "form",
"res_id": self.lead_id.id,
"target": "current",
"name": _("Lead: %s") % self.lead_id.name,
}

13 changes: 12 additions & 1 deletion crm_lead_to_task/views/crm_lead_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- inherit view of Lead Form : adding the "convert to task" button -->
<record id="crm_lead_view_form" model="ir.ui.view">
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_lead_view_form" />
<field name="inherit_id" ref="crm.crm_lead_view_form"/>
<field name="arch" type="xml">
<field name="stage_id" position="before">
<button
Expand All @@ -15,6 +15,17 @@
groups="project.group_project_user"
/>
</field>
<!-- Add a smart button to the tasks created from this lead -->
<xpath expr="//div[@name='button_box']" position="inside">
<field name="task_count" invisible="1"/>
<button name="action_view_tasks" type="object" class="oe_stat_button" icon="fa-pencil" invisible="task_count &lt; 1">
<div class="o_stat_info">
<field name="task_count" class="o_stat_value"/>
<span class="o_stat_text" invisible="task_count &lt; 2">Tasks</span>
<span class="o_stat_text" invisible="task_count &gt; 1">Task</span>
</div>
</button>
</xpath>
</field>
</record>
</odoo>
19 changes: 19 additions & 0 deletions crm_lead_to_task/views/project_task_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<odoo>

<record id="view_task_form2" model="ir.ui.view">
<field name="name">project.task.view.form.inherit.crm.lead.to.task</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='button_box']" position="inside">
<field name="lead_id" invisible="1" />
<button name="action_view_lead" type="object" class="oe_stat_button" icon="fa-star" invisible="not lead_id">
<div class="o_stat_info">
<span class="o_stat_text">CRM Lead</span>
</div>
</button>
</xpath>
</field>
</record>

</odoo>
1 change: 1 addition & 0 deletions crm_lead_to_task/wizard/crm_lead_convert2task.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ def action_lead_to_project_task(self):
"project_id": self.project_id.id,
"partner_id": partner.id,
"email_cc": lead.email_cc,
"lead_id": lead.id,
}
task = self.env["project.task"].create(vals)
# move the mail thread
Expand Down

0 comments on commit 45b2d20

Please sign in to comment.