diff --git a/addons/sale_timesheet/models/sale_order.py b/addons/sale_timesheet/models/sale_order.py index d84628af9d8..cddb6f6abd9 100644 --- a/addons/sale_timesheet/models/sale_order.py +++ b/addons/sale_timesheet/models/sale_order.py @@ -5,18 +5,20 @@ from odoo import api, fields, models, _ from odoo.exceptions import ValidationError from odoo.osv import expression +from odoo.tools.safe_eval import safe_eval class SaleOrder(models.Model): _inherit = 'sale.order' timesheet_ids = fields.Many2many('account.analytic.line', compute='_compute_timesheet_ids', string='Timesheet activities associated to this sale') - timesheet_count = fields.Float(string='Timesheet activities', compute='_compute_timesheet_ids') + timesheet_count = fields.Float(string='Timesheet activities', compute='_compute_timesheet_ids', groups="hr_timesheet.group_hr_timesheet_user") tasks_ids = fields.Many2many('project.task', compute='_compute_tasks_ids', string='Tasks associated to this sale') - tasks_count = fields.Integer(string='Tasks', compute='_compute_tasks_ids') + tasks_count = fields.Integer(string='Tasks', compute='_compute_tasks_ids', groups="project.group_project_user") project_project_id = fields.Many2one('project.project', compute='_compute_project_project_id', string='Project associated to this sale') + project_ids = fields.Many2many('project.project', compute="_compute_project_ids", string='Projects', copy=False, groups="project.group_project_user", help="Projects used in this sales order.") @api.multi @api.depends('analytic_account_id.line_ids') @@ -86,15 +88,25 @@ class SaleOrder(models.Model): return result @api.multi - def action_view_project_project(self): + def action_view_project_ids(self): self.ensure_one() - action = self.env.ref('project.open_view_project_all').read()[0] - form_view_id = self.env.ref('project.edit_project').id - - action['views'] = [(form_view_id, 'form')] - action['res_id'] = self.project_project_id.id - action.pop('target', None) - + if len(self.project_ids) == 1: + if self.env.user.has_group("hr_timesheet.group_hr_timesheet_user"): + action = self.project_ids.action_view_timesheet_plan() + else: + action = self.env.ref("project.act_project_project_2_project_task_all").read()[0] + action['context'] = safe_eval(action.get('context', '{}'), {'active_id': self.project_ids.id, 'active_ids': self.project_ids.ids}) + else: + view_form_id = self.env.ref('project.edit_project').id + view_kanban_id = self.env.ref('project.view_project_kanban').id + action = { + 'type': 'ir.actions.act_window', + 'domain': [('id', 'in', self.project_ids.ids)], + 'views': [(view_kanban_id, 'kanban'), (view_form_id, 'form')], + 'view_mode': 'kanban,form', + 'name': _('Projects'), + 'res_model': 'project.project', + } return action @api.multi diff --git a/addons/sale_timesheet/views/sale_order_views.xml b/addons/sale_timesheet/views/sale_order_views.xml index 8d86ee57894..ccb4ffd66c3 100644 --- a/addons/sale_timesheet/views/sale_order_views.xml +++ b/addons/sale_timesheet/views/sale_order_views.xml @@ -16,17 +16,17 @@ - -