diff --git a/crm_project_task/i18n/crm_project_task.pot b/crm_project_task/i18n/crm_project_task.pot
index 81307148eee..57c87951092 100644
--- a/crm_project_task/i18n/crm_project_task.pot
+++ b/crm_project_task/i18n/crm_project_task.pot
@@ -6,6 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-02-05 11:11+0000\n"
+"PO-Revision-Date: 2024-02-05 11:11+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -99,7 +101,6 @@ msgid "Last Updated on"
msgstr ""
#. module: crm_project_task
-#: model:ir.model.fields,field_description:crm_project_task.field_crm_create_task__lead_id
#: model:ir.model.fields,field_description:crm_project_task.field_project_task__lead_id
msgid "Lead"
msgstr ""
@@ -114,6 +115,12 @@ msgstr ""
#. odoo-python
#: code:addons/crm_project_task/wizards/crm_create_task.py:0
#, python-format
+msgid "Lead/Opportunity not found. Please, create task from lead/opportunity."
+msgstr ""
+
+#. module: crm_project_task
+#: code:addons/crm_project_task/wizards/crm_create_task.py:0
+#, python-format
msgid ""
"Project not configured in settings, please contact with your administrator."
msgstr ""
diff --git a/crm_project_task/i18n/es.po b/crm_project_task/i18n/es.po
index d931d21aafd..aefd5dbbe8b 100644
--- a/crm_project_task/i18n/es.po
+++ b/crm_project_task/i18n/es.po
@@ -105,7 +105,6 @@ msgid "Last Updated on"
msgstr "Ćltima actualizaciĆ³n el"
#. module: crm_project_task
-#: model:ir.model.fields,field_description:crm_project_task.field_crm_create_task__lead_id
#: model:ir.model.fields,field_description:crm_project_task.field_project_task__lead_id
msgid "Lead"
msgstr "Iniciativa"
@@ -120,6 +119,14 @@ msgstr "Iniciativa/Oportundad"
#. odoo-python
#: code:addons/crm_project_task/wizards/crm_create_task.py:0
#, python-format
+msgid "Lead/Opportunity not found. Please, create task from lead/opportunity."
+msgstr ""
+"Iniciativa/Oportunidad no encontrada. Por favor, cree la tarea desde una "
+"iniciativa/Oportunidad."
+
+#. module: crm_project_task
+#: code:addons/crm_project_task/wizards/crm_create_task.py:0
+#, python-format
msgid ""
"Project not configured in settings, please contact with your administrator."
msgstr ""
diff --git a/crm_project_task/tests/test_crm_project_task.py b/crm_project_task/tests/test_crm_project_task.py
index df7dd06df2a..a11d81381b8 100644
--- a/crm_project_task/tests/test_crm_project_task.py
+++ b/crm_project_task/tests/test_crm_project_task.py
@@ -2,13 +2,11 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0)
from odoo.exceptions import UserError
-from odoo.tests import tagged
from odoo.tests.common import TransactionCase
from odoo.addons.mail.tests.common import mail_new_test_user
-@tagged("post_install", "-at_install")
class TestCrmProjectTask(TransactionCase):
@classmethod
def setUpClass(cls):
@@ -41,57 +39,36 @@ def setUpClass(cls):
"description": "Test Description",
}
)
+ cls.task_name = "Task Test"
+ cls.task_description = "Line1Line2"
- def test_create_task(self):
- self.company.crm_default_project_id = self.project
- task_name = "Task Test"
- task_description = "Line1Line2"
- action = (
- self.env["crm.create.task"]
- .with_user(self.user_salesman)
- .create(
- {
- "lead_id": self.lead.id,
- "task_name": task_name,
- "description": task_description,
- }
- )
- .create_task()
- )
- task = self.env["project.task"].browse(action["res_id"])
- self.assertEqual(task.name, task_name)
- self.assertEqual(task.project_id, self.company.crm_default_project_id)
- self.assertEqual(task.partner_id, self.partner)
- self.assertEqual(task.lead_id, self.lead)
-
- def test_create_task_no_project(self):
+ def test_crm_create_task(self):
+ # Error without project default
self.company.crm_default_project_id = False
- task_name = "Task Test"
- task_description = "Line1Line2"
wizard = (
self.env["crm.create.task"]
.with_user(self.user_salesman)
+ .with_context(active_model="crm.lead", active_id=self.lead.id)
.create(
{
- "lead_id": self.lead.id,
- "task_name": task_name,
- "description": task_description,
+ "task_name": self.task_name,
+ "description": self.task_description,
}
)
)
with self.assertRaises(UserError):
wizard.create_task()
-
- def test_action_tasks(self):
+ # Set project default
self.company.crm_default_project_id = self.project
- self.env["crm.create.task"].with_user(self.user_salesman).create(
- {
- "lead_id": self.lead.id,
- "task_name": "Task Test",
- "description": "Line1Line2",
- }
- ).create_task()
+ action = wizard.create_task()
+ task = self.env["project.task"].browse(action["res_id"])
+ self.assertEqual(task.name, self.task_name)
+ self.assertEqual(task.project_id, self.company.crm_default_project_id)
+ self.assertEqual(task.partner_id, self.partner)
+ self.assertEqual(task.lead_id, self.lead)
+ # Check action tasks
action = self.lead.action_tasks()
tasks = self.env["project.task"].search(action["domain"])
tasks_lead = tasks.mapped("lead_id")
self.assertEqual(self.lead, tasks_lead)
+ self.assertEqual(len(tasks), self.lead.task_count)
diff --git a/crm_project_task/views/crm_lead.xml b/crm_project_task/views/crm_lead.xml
index 7dcb3b97987..57ceb595299 100644
--- a/crm_project_task/views/crm_lead.xml
+++ b/crm_project_task/views/crm_lead.xml
@@ -13,7 +13,7 @@
name="%(wizard_crm_create_task_action)d"
type="action"
class="oe_highlight"
- context="{'default_lead_id': active_id, 'default_task_name': name}"
+ context="{'default_task_name': name}"
attrs="{'invisible': ['|', ('active','=',False), ('task_count', '!=', 0)]}"
/>
diff --git a/crm_project_task/wizards/crm_create_task.py b/crm_project_task/wizards/crm_create_task.py
index d58463996c8..60776855e05 100644
--- a/crm_project_task/wizards/crm_create_task.py
+++ b/crm_project_task/wizards/crm_create_task.py
@@ -10,7 +10,6 @@ class CrmCreateTAsk(models.TransientModel):
_name = "crm.create.task"
_description = "Wizard to create task"
- lead_id = fields.Many2one("crm.lead")
task_name = fields.Char()
description = fields.Html()
@@ -23,18 +22,33 @@ def create_task(self):
"please contact with your administrator."
)
)
+ lead = (
+ self.env["crm.lead"].browse(self._context.get("active_id", False))
+ if self._context.get("active_model") == "crm.lead"
+ and self._context.get("active_id", False)
+ else False
+ )
+ if not lead:
+ raise UserError(
+ _(
+ "Lead/Opportunity not found. Please, create task from lead/opportunity."
+ )
+ )
+
# Create task
- task = self.env["project.task"].sudo().create(self._get_data_create(project))
+ task = (
+ self.env["project.task"].sudo().create(self._get_data_create(lead, project))
+ )
# Messages in chatter
task.message_post(
body=_(
"Task created from lead/opportunity "
"%(name)s.",
- lead=self.lead_id,
- name=self.lead_id.name,
+ lead=lead,
+ name=lead.name,
)
)
- self.lead_id.message_post(
+ lead.message_post(
body=_(
"Task %(name)s created.",
@@ -55,13 +69,13 @@ def create_task(self):
"context": self.env.context,
}
- def _get_data_create(self, project):
+ def _get_data_create(self, lead, project):
"""Get dict to create task"""
return {
"name": self.task_name,
"project_id": project.id,
- "partner_id": self.lead_id.partner_id.id,
- "lead_id": self.lead_id.id,
+ "partner_id": lead.partner_id.id or False,
+ "lead_id": lead.id,
"description": self.description,
"user_ids": [(6, 0, [])],
}