diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/helpdesk_project/__init__.py b/helpdesk_project/__init__.py index e69de29bb2..0650744f6b 100644 --- a/helpdesk_project/__init__.py +++ b/helpdesk_project/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/helpdesk_project/__manifest__.py b/helpdesk_project/__manifest__.py index 76fbc55cbe..422503293c 100644 --- a/helpdesk_project/__manifest__.py +++ b/helpdesk_project/__manifest__.py @@ -15,8 +15,11 @@ "PESOL ," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/helpdesk", - "depends": ["helpdesk_mgmt"], - "data": [], + "depends": ["helpdesk_mgmt", 'project'], + "data": [ + 'views/project_views.xml', + 'views/ticket_views.xml', + ], "demo": [], "development_status": "Alpha", "application": True, diff --git a/helpdesk_project/models/__init__.py b/helpdesk_project/models/__init__.py new file mode 100644 index 0000000000..3372e41a7f --- /dev/null +++ b/helpdesk_project/models/__init__.py @@ -0,0 +1,2 @@ +from . import project +from . import ticket diff --git a/helpdesk_project/models/project.py b/helpdesk_project/models/project.py new file mode 100644 index 0000000000..96587fd346 --- /dev/null +++ b/helpdesk_project/models/project.py @@ -0,0 +1,31 @@ +from odoo import models, api, fields, _ + + +class ProjectTask(models.Model): + _inherit = 'project.task' + + ticket_ids = fields.One2many(comodel_name='helpdesk.ticket', inverse_name='task_id', string='Tickets') + ticket_count = fields.Integer(compute='_compute_ticket_count', string='Number of tickets') + + @api.depends('ticket_ids') + def _compute_ticket_count(self): + for task in self: + task.ticket_count = len(task.ticket_ids) + + def action_new_ticket(self): + action = self.env.ref("helpdesk_project.task_action_ticket_new").read()[0] + action['context'] = { + 'default_task_id': self.id, + 'default_project_id': self.project_id and self.project_id.id, + } + return action + + def action_view_tickets(self): + # Obtain action with the ID sent + action = self.env.ref('helpdesk_project.task_action_view_tickets').read()[0] + action['context'] = { + 'search_task_id': self.id, + } + # action['domain'] = [('task_id', '=', self.id)] + # + return action diff --git a/helpdesk_project/models/ticket.py b/helpdesk_project/models/ticket.py new file mode 100644 index 0000000000..f221c009d3 --- /dev/null +++ b/helpdesk_project/models/ticket.py @@ -0,0 +1,24 @@ +from odoo import models, fields, api, _ + + +class HelpdeskTicket(models.Model): + _inherit = 'helpdesk.ticket' + + project_id = fields.Many2one(comodel_name='project.project', string='Project') + + task_id = fields.Many2one(comodel_name='project.task', string='Task') + + @api.onchange('task_id') + def _onchange_task_id(self): + if self.task_id and self.task_id.project_id: + self.project_id = self.task_id.project_id + else: + self.project_id = False + + @api.onchange('project_id') + def _onchange_project_id(self): + if self.project_id: + domain = {'task_id': [('project_id', '=', self.project_id.id)]} + else: + domain = {} + return {'domain': domain} diff --git a/helpdesk_project/views/project_views.xml b/helpdesk_project/views/project_views.xml new file mode 100644 index 0000000000..5280831287 --- /dev/null +++ b/helpdesk_project/views/project_views.xml @@ -0,0 +1,38 @@ + + + + view.task_ticket.form + project.task + + + + + + + + + + + + + + + + Ticket + helpdesk.ticket + form,tree + [('task_id', '=', active_id)] + {'search_default_task_id': active_id, 'default_task_id': active_id} + + + + Tickets + helpdesk.ticket + tree,form + + \ No newline at end of file diff --git a/helpdesk_project/views/ticket_views.xml b/helpdesk_project/views/ticket_views.xml new file mode 100644 index 0000000000..2ec6d85f60 --- /dev/null +++ b/helpdesk_project/views/ticket_views.xml @@ -0,0 +1,20 @@ + + + + + view.ticket_project.form + helpdesk.ticket + + + + + + + + + + + + + + \ No newline at end of file