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 = "Line1
Line2" - def test_create_task(self): - self.company.crm_default_project_id = self.project - task_name = "Task Test" - task_description = "Line1
Line2" - 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 = "Line1
Line2" 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": "Line1
Line2", - } - ).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, [])], }