65 lines
2.8 KiB
Python
65 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details
|
|
|
|
from odoo import models, fields, api, _
|
|
|
|
|
|
class CreateTask(models.TransientModel):
|
|
_name = 'helpdesk.create.fsm.task'
|
|
_description = 'Create a Field Service task'
|
|
|
|
helpdesk_ticket_id = fields.Many2one('helpdesk.ticket', string='Related ticket', required=True)
|
|
company_id = fields.Many2one(related='helpdesk_ticket_id.company_id')
|
|
name = fields.Char('Title', required=True)
|
|
project_id = fields.Many2one('project.project', string='Project', help='Project in which to create the task', required=True, domain="[('company_id', '=', company_id), ('is_fsm', '=', True)]")
|
|
partner_id = fields.Many2one('res.partner', string='Customer', help="Ticket's customer, will be linked to the task", required=True, domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]")
|
|
|
|
@api.model
|
|
def default_get(self, fields_list):
|
|
defaults = super(CreateTask, self).default_get(fields_list)
|
|
if 'project_id' in fields_list and not defaults.get('project_id'):
|
|
task_default = self.env['project.task'].with_context(fsm_mode=True).default_get(['project_id'])
|
|
defaults.update({'project_id': task_default.get('project_id', False)})
|
|
partner_id = defaults.get('partner_id')
|
|
if partner_id:
|
|
delivery = self.env['res.partner'].browse(partner_id).address_get(['delivery']).get('delivery')
|
|
if delivery:
|
|
defaults.update({'partner_id': delivery})
|
|
return defaults
|
|
|
|
def _generate_task_values(self):
|
|
self.ensure_one()
|
|
return {
|
|
'name': self.name,
|
|
'helpdesk_ticket_id': self.helpdesk_ticket_id.id,
|
|
'project_id': self.project_id.id,
|
|
'partner_id': self.partner_id.id,
|
|
'description': self.helpdesk_ticket_id.description,
|
|
}
|
|
|
|
def action_generate_task(self):
|
|
self.ensure_one()
|
|
new_task = self.env['project.task'].create(self._generate_task_values())
|
|
self.helpdesk_ticket_id.message_post_with_source(
|
|
'helpdesk.ticket_conversion_link',
|
|
render_values={'created_record': new_task, 'message': _('Task created')},
|
|
subtype_xmlid='mail.mt_note',
|
|
)
|
|
return new_task
|
|
|
|
def action_generate_and_view_task(self):
|
|
self.ensure_one()
|
|
new_task = self.action_generate_task()
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'name': _('Tasks from Tickets'),
|
|
'res_model': 'project.task',
|
|
'res_id': new_task.id,
|
|
'view_mode': 'form',
|
|
'view_id': self.env.ref('project.view_task_form2').id,
|
|
'context': {
|
|
'fsm_mode': True,
|
|
'create': False,
|
|
}
|
|
}
|