-
-
Notifications
You must be signed in to change notification settings - Fork 402
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by max3903
- Loading branch information
Showing
10 changed files
with
161 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
from . import crm_lead | ||
from . import project_task |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# 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("crm.lead") | ||
|
||
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, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 test_crm_project | ||
from . import test_crm_lead_task |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# Copyright (C) 2024 Open Source Integrators | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
|
||
from odoo import _ | ||
from odoo.tests.common import TransactionCase | ||
|
||
|
||
class TestCrmLeadTask(TransactionCase): | ||
def setUp(self): | ||
super().setUp() | ||
|
||
# Create a CRM lead | ||
self.lead = self.env["crm.lead"].create( | ||
{ | ||
"name": "Test Lead", | ||
"description": "Description", | ||
} | ||
) | ||
|
||
# Create tasks related to the lead | ||
self.task1 = self.env["project.task"].create( | ||
{ | ||
"name": "Test Task 1", | ||
"lead_id": self.lead.id, | ||
} | ||
) | ||
self.task2 = self.env["project.task"].create( | ||
{ | ||
"name": "Test Task 2", | ||
"lead_id": self.lead.id, | ||
} | ||
) | ||
|
||
def test_task_count_computation(self): | ||
"""Test that the task_count field correctly reflects the number of tasks""" | ||
lead = self.env["crm.lead"].browse(self.lead.id) | ||
self.assertEqual(lead.task_count, 2, "Task count should be 2.") | ||
|
||
def test_action_view_tasks(self): | ||
"""Test that action_view_tasks returns the correct action""" | ||
action = self.lead.action_view_tasks() | ||
|
||
expected_domain = [("lead_id", "=", self.lead.id)] | ||
self.assertEqual(action["type"], "ir.actions.act_window") | ||
self.assertEqual(action["res_model"], "project.task") | ||
self.assertEqual(action["view_mode"], "tree,form") | ||
self.assertEqual(action["domain"], expected_domain) | ||
self.assertEqual(action["context"]["default_search_lead_id"], self.lead.id) | ||
self.assertEqual(action["name"], _("Tasks from crm lead %s") % self.lead.name) | ||
|
||
def test_action_view_leads(self): | ||
"""Test that action_view_lead returns the correct action""" | ||
action = self.task1.action_view_lead() | ||
|
||
self.assertEqual(action["type"], "ir.actions.act_window") | ||
self.assertEqual(action["res_model"], "crm.lead") | ||
self.assertEqual(action["view_mode"], "form") | ||
self.assertEqual(action["res_id"], self.lead.id) | ||
self.assertEqual(action["name"], _("Lead: %s") % self.lead.name) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters