Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added __init__.py
Empty file.
1 change: 1 addition & 0 deletions helpdesk_project/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
7 changes: 5 additions & 2 deletions helpdesk_project/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 2 additions & 0 deletions helpdesk_project/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import project
from . import ticket
31 changes: 31 additions & 0 deletions helpdesk_project/models/project.py
Original file line number Diff line number Diff line change
@@ -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
24 changes: 24 additions & 0 deletions helpdesk_project/models/ticket.py
Original file line number Diff line number Diff line change
@@ -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}
38 changes: 38 additions & 0 deletions helpdesk_project/views/project_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_task_ticket_form" model="ir.ui.view">
<field name="name">view.task_ticket.form</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<xpath expr="//button[@name='action_assign_to_me']" position="after">
<button string="New Ticket" name="action_new_ticket" type="object"/>
</xpath>
<xpath expr="//button[@name='action_subtask']" position="after">
<button class="oe_stat_button" type="object" name="action_view_tickets" icon="fa-check">
<field name="ticket_count" widget="statinfo" string="Tickets"/>
</button>
</xpath>

<notebook position="inside">
<page name="ticket" string="Tickets">
<field name="ticket_ids"/>
</page>
</notebook>
</field>
</record>

<record id="task_action_ticket_new" model="ir.actions.act_window">
<field name="name">Ticket</field>
<field name="res_model">helpdesk.ticket</field>
<field name="view_mode">form,tree</field>
<field name="domain">[('task_id', '=', active_id)]</field>
<field name="context">{'search_default_task_id': active_id, 'default_task_id': active_id}</field>
</record>

<record id="task_action_view_tickets" model="ir.actions.act_window">
<field name="name">Tickets</field>
<field name="res_model">helpdesk.ticket</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
20 changes: 20 additions & 0 deletions helpdesk_project/views/ticket_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="view_ticket_project_form" model="ir.ui.view">
<field name="name">view.ticket_project.form</field>
<field name="model">helpdesk.ticket</field>
<field name="inherit_id" ref="helpdesk_mgmt.ticket_view_form"/>
<field name="arch" type="xml">
<notebook position="inside">
<page name="project" string="Project">
<group>
<field name="project_id"/>
<field name="task_id"/>
</group>
</page>
</notebook>
</field>
</record>
</data>
</odoo>