diff --git a/bemade_fsm/models/sale_order.py b/bemade_fsm/models/sale_order.py index f01be99..ed547d6 100644 --- a/bemade_fsm/models/sale_order.py +++ b/bemade_fsm/models/sale_order.py @@ -98,6 +98,7 @@ class SaleOrderLine(models.Model): vals['user_ids'] = template.assignees.ids vals['tag_ids'] = template.tags.ids vals['planned_hours'] = template.planned_hours + vals['equipment_id'] = template.equipment_id.id return vals tmpl = self.product_id.task_template_id @@ -111,6 +112,7 @@ class SaleOrderLine(models.Model): "This task has been created from: %s (%s)") % ( self.order_id.id, self.order_id.name, self.product_id.name) task.message_post(body=task_msg) - task.equipment_id = self.order_id.equipment_id + if not task.equipment_id: + task.equipment_id = self.order_id.equipment_id task.name = _generate_task_name(tmpl) return task diff --git a/bemade_fsm/models/task_template.py b/bemade_fsm/models/task_template.py index 3f70518..3ca1af7 100644 --- a/bemade_fsm/models/task_template.py +++ b/bemade_fsm/models/task_template.py @@ -4,21 +4,27 @@ from odoo import models, fields, api, _ class TaskTemplate(models.Model): _name = 'project.task.template' _description = "Template for new project tasks" + @api.model def _current_company(self): return self.env.company name = fields.Char(string="Task Title", required=True) description = fields.Html(string="Description") - assignees = fields.Many2many("res.users", string="Default Assignees", help="Employees assigned to tasks created from this template.") - customer = fields.Many2one("res.partner", string="Default Customer", help="Default customer for tasks created from this template.") - project = fields.Many2one("project.project", string="Default Project", help="Default project for tasks created from this template.") - tags = fields.Many2many("project.tags", string="Default Tags", help="Default tags for tasks created from this template.") + assignees = fields.Many2many("res.users", string="Default Assignees", + help="Employees assigned to tasks created from this template.") + customer = fields.Many2one("res.partner", string="Default Customer", + help="Default customer for tasks created from this template.") + project = fields.Many2one("project.project", string="Default Project", + help="Default project for tasks created from this template.") + tags = fields.Many2many("project.tags", string="Default Tags", + help="Default tags for tasks created from this template.") parent = fields.Many2one("project.task.template", string="Parent Task Template", ondelete='cascade') subtasks = fields.One2many("project.task.template", inverse_name="parent", string="Subtask Templates") sequence = fields.Integer(string="Sequence") company_id = fields.Many2one("res.company", string="Company", index=1, default=_current_company) planned_hours = fields.Float("Initially Planned Hours") + equipment_id = fields.Many2one(comodel_name="bemade_fsm.equipment", string="Equipment", ) def action_open_task(self): return { @@ -28,5 +34,3 @@ class TaskTemplate(models.Model): 'type': 'ir.actions.act_window', 'context': self._context } - - diff --git a/bemade_fsm/tests/test_equipment.py b/bemade_fsm/tests/test_equipment.py index c8c6ab3..8a38c49 100644 --- a/bemade_fsm/tests/test_equipment.py +++ b/bemade_fsm/tests/test_equipment.py @@ -46,7 +46,7 @@ class TestEquipmentBase(TestEquipmentCommon): self.equipment.name -@tagged('-at_install', 'post_install') +@tagged('-at_install', 'post_install', 'slow') class TestEquipmentTours(HttpCase, TestEquipmentCommon): def test_equipment_base_tour(self): diff --git a/bemade_fsm/tests/test_sale_order.py b/bemade_fsm/tests/test_sale_order.py index 3565ef0..7cd7398 100644 --- a/bemade_fsm/tests/test_sale_order.py +++ b/bemade_fsm/tests/test_sale_order.py @@ -10,10 +10,19 @@ class TestSalesOrder(TestTaskTemplateCommon): cls.partner = cls.env['res.partner'].create({ 'name': 'Test Partner', }) + cls.equipment =cls.env['bemade_fsm.equipment'].create({ + 'name': 'test equipment', + 'partner_location_id': cls.partner.id, + }) + cls.so_equipment = cls.env['bemade_fsm.equipment'].create({ + 'name': 'test equipment 2', + 'partner_location_id': cls.partner.id, + }) cls.sale_order1 = cls.env['sale.order'].create({ 'partner_id': cls.partner.id, 'client_order_ref': 'TEST ORDER 1', 'state': 'draft', + 'equipment_id': cls.so_equipment.id, }) cls.sol_serv_order = cls.env['sale.order.line'].create({ 'name': cls.product_task_global_project.name, @@ -90,12 +99,18 @@ class TestSalesOrder(TestTaskTemplateCommon): def test_order_confirmation_equipment(self): so = self.sale_order1 - equipment = self.env['bemade_fsm.equipment'].create( - {'name': 'test equipment', 'partner_location_id': so.partner_shipping_id.id}) - so.equipment_id = equipment.id + self.assertEqual(so.equipment_id, so.equipment_id) + self.assertFalse(so.order_line[0].product_id.task_template_id.equipment_id) so.action_confirm() - task = so.order_line[0].task_id - self.assertTrue(task.equipment_id == equipment) + task = so.order_line.filtered(lambda l: not l.product_id.task_template_id.equipment_id).task_id + self.assertEqual(task.equipment_id, self.so_equipment) + + def test_task_template_with_equipment_flow(self): + so = self.sale_order1 + self.product_task_global_project.task_template_id.equipment_id = self.equipment + so.action_confirm() + task = so.order_line.filtered(lambda l: l.product_id.task_template_id.equipment_id).task_id + self.assertEqual(task.equipment_id, self.equipment) def test_task_mark_done(self): so = self.sale_order2 @@ -112,7 +127,7 @@ class TestSalesOrder(TestTaskTemplateCommon): self.assertFalse(child_task.sale_order_id) -@tagged("-at_install", "post_install", 'focus') +@tagged("-at_install", "post_install", "slow") class TestSaleOrderTour(HttpCase, TestSalesOrder): def test_sale_order_tour_no_invoice_button_for_non_manager(self): # Make sure a non-manager cannot mark a task as ready to invoice diff --git a/bemade_fsm/tests/test_task_template.py b/bemade_fsm/tests/test_task_template.py index 511e2de..97fd66a 100644 --- a/bemade_fsm/tests/test_task_template.py +++ b/bemade_fsm/tests/test_task_template.py @@ -111,7 +111,7 @@ class TestTaskTemplate(TestTaskTemplateCommon): test = self.grandchild_task.name -@tagged('-at_install', 'post_install') +@tagged('-at_install', 'post_install', 'slow') class TestTaskTemplateTour(HttpCase, TestTaskTemplateCommon): def test_task_template_tour(self): diff --git a/bemade_fsm/views/task_template_views.xml b/bemade_fsm/views/task_template_views.xml index bbdaed1..6362e2a 100644 --- a/bemade_fsm/views/task_template_views.xml +++ b/bemade_fsm/views/task_template_views.xml @@ -23,6 +23,7 @@ +