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
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 helpdesk_ticket
53 changes: 53 additions & 0 deletions helpdesk_project/models/helpdesk_ticket.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
from odoo import api, fields, models


class HelpdeskTicket(models.Model):
_inherit = 'helpdesk.ticket'

name = fields.Char(string='Name')

#Uno o varios tickets pueden estar asignados a un proyecto
project_id = fields.Many2one(
comodel_name='project.project',
string='Proyecto')

#Uno o varios tickets pueden estar asignados a una tarea'
task_id = fields.Many2one(
comodel_name='project.task',
string='Tarea')

def action_new_view(self):
# action = self.env.ref("helpdesk_project.project_alta_ticket_action").read()[0]
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

# Si busco la tarea sin indicar el proyecto completar el proyecto de esa tarea
# (onchange en tarea que complete el projecto)
# si busco primero el proyecto solo permitir seleccionar tareas de ese proyecto
# (onchange a project que devuelva un domain)

# Al buscar una tarea sin poner el proyecto que se obtenga el proyecto
@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


# Al buscar un proyecto filtrar (domain) las posibles tareas de ese proyecto
@api.onchange('project_id')
def _onchange_project_id(self):
if self.project_id:
domain = {'task_id':[('project_id',"=",self.project_id.id)]}
#domain = [(project_id,"=",self.project_id.id)]
#domain = {'task_id':[]}
else:
domain = {}
return {'domain' : domain}


48 changes: 48 additions & 0 deletions helpdesk_project/models/project.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
from odoo import api, fields, models


class ProjectTask(models.Model):

_inherit = 'project.task'

ticket_ids = fields.One2many(comodel_name='helpdesk.ticket', inverse_name='task_id', string='Tareas')

tickets_count = fields.Integer(compute='contar_tickets',string='Tcks.')


@api.depends('ticket_ids')
def contar_tickets(self):
self.tickets_count = len(self.ticket_ids)

def action_view_tickets_miVersion(self):
action = self.env.ref("helpdesk_project.project_alta_ticket_action").read()[0]
# action['context']={
# 'default_task_id' : self.id,
# 'default_project_id' : self.project_id and self.project_id.id
# }
action['res_id'] = 0
return action

def action_view_tickets(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):
# action = self.env.ref('sale.action_quotations_with_onboarding').read()[0]
# action['context'] = {
# 'search_default_draft': 1,
# 'search_default_partner_id': self.partner_id.id,
# 'default_partner_id': self.partner_id.id,
# 'default_opportunity_id': self.id
# }
# action['domain'] = [('opportunity_id', '=', self.id), ('state', 'in', ['draft', 'sent'])]
# quotations = self.mapped('order_ids').filtered(lambda l: l.state in ('draft', 'sent'))
# if len(quotations) == 1:
# action['views'] = [(self.env.ref('sale.view_order_form').id, 'form')]
# action['res_id'] = quotations.id
# return action

65 changes: 65 additions & 0 deletions helpdesk_project/views/project_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?xml version="1.0"?>
<odoo>
<!-- project.task inherit form view -->
<!-- Vista de tareas heredada de project
a la que se añade un boton para crear nuevos tickets
a la que se añade una pestaña para ver los tickets asociados
a la que se añade un smart-buttoon donde se indica el
numero de tickets asociados, y
que al hacer click permite añadir otro ticket -->
<record id="task_ticket_view_form2" model="ir.ui.view">
<field name="name">project.task.inherit.view.form</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<!-- Add your xpath here -->
<!-- Boton para añadir un ticket situado en cabecera del formulario-->
<xpath expr="//button[@name='action_assign_to_me']" position="after">
<button string="Nuevo ticket" name="action_view_tickets" type="object" />
<button string="Nuevo ticket action" name="helpdesk_project.project_alta_ticket_action" type="action" />
</xpath>
<xpath expr="//button[@name='action_subtask']" position="before">
<!-- Add your fields here -->
<!-- <button class="oe_stat_button" string="Nuevo tck" name="action_view_tickets" -->
<button class="oe_stat_button" string="New" name="action_view_tickets"
icon="fa-check" type="object" >
<div class="o_stat_info">
<field name="tickets_count" widget="statinfo" class="o_stat_value"/>
<span class="o_stat_text"></span>
</div>
</button>
</xpath>
<notebook position="inside">
<page string="Tickets" name="task_tickets">
<group>
<field name="ticket_ids"/>
</group>
</page>
</notebook>
</field>
</record>

<!-- helpdesk.ticket action window -->
<record id="project_alta_ticket_action" model="ir.actions.act_window">
<field name="name">ALTA_TICKETS_DESDE_TAREAS</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>
<!-- <field name="res_id">2</field> -->
<field name="target">new</field>
</record>

<!-- Action para llamar a la vista para altas de tickets -->
<!-- model.name action window -->
<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>



</odoo>
22 changes: 22 additions & 0 deletions helpdesk_project/views/ticket_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0"?>
<odoo>
<!-- helpdesk ticket inherit form view -->
<record id="view_id" model="ir.ui.view">
<field name="name">helpdesk.ticket.inherit.view.form</field>
<field name="model">helpdesk.ticket</field>
<field name="inherit_id" ref="helpdesk_mgmt.ticket_view_form"/>
<field name="arch" type="xml">
<!-- Add your xpath here -->
<notebook position="inside">
<page string="Proyecto" name="project">
<group>
<field name="project_id"/>
<field name="task_id"/>
</group>
</page>
</notebook>

</field>
</record>

</odoo>