diff options
| author | jem-odoo <jem@openerp.com> | 2018-02-22 16:18:49 +0100 |
|---|---|---|
| committer | jem-odoo <jem@openerp.com> | 2018-04-06 14:30:47 +0200 |
| commit | 29d64be400655d45de9acd986f45ea5ea7f5045c (patch) | |
| tree | c464d1f16e9ef7aa2ea20e8456bc56783b4e3754 | |
| parent | 30f3d4144fea13557dc48d27ae277296860e57cb (diff) | |
[IMP] sale_timesheet: group task by Sales Order
From task stat button from SO form view, it
is relevant to see the task of the SO only.
So, we add a filter to do so. AS the kanban
task use a read_group, it is required to store
the sale_order_id field on task.
| -rw-r--r-- | addons/sale_timesheet/models/project.py | 1 | ||||
| -rw-r--r-- | addons/sale_timesheet/models/sale_order.py | 4 | ||||
| -rw-r--r-- | addons/sale_timesheet/views/project_task_views.xml | 12 |
3 files changed, 17 insertions, 0 deletions
diff --git a/addons/sale_timesheet/models/project.py b/addons/sale_timesheet/models/project.py index d8b4cca03a2..4d3a45876f7 100644 --- a/addons/sale_timesheet/models/project.py +++ b/addons/sale_timesheet/models/project.py @@ -73,6 +73,7 @@ class ProjectTask(models.Model): return sale_line_id sale_line_id = fields.Many2one('sale.order.line', 'Sales Order Item', default=_default_sale_line_id, domain="[('is_service', '=', True), ('order_partner_id', '=', partner_id), ('is_expense', '=', False)]") + sale_order_id = fields.Many2one('sale.order', 'Sales Order', related='sale_line_id.order_id', store=True, readonly=True) @api.onchange('project_id') def _onchange_project(self): diff --git a/addons/sale_timesheet/models/sale_order.py b/addons/sale_timesheet/models/sale_order.py index 5777648fd3b..c54c0df7089 100644 --- a/addons/sale_timesheet/models/sale_order.py +++ b/addons/sale_timesheet/models/sale_order.py @@ -72,11 +72,15 @@ class SaleOrder(models.Model): action['context'] = safe_eval(action['context'], eval_context) else: action = self.env.ref('project.action_view_task').read()[0] + action['context'] = {} # erase default context to avoid default filter if len(self.tasks_ids) > 1: # cross project kanban task action['views'] = [[False, 'kanban'], [list_view_id, 'tree'], [form_view_id, 'form'], [False, 'graph'], [False, 'calendar'], [False, 'pivot'], [False, 'graph']] elif len(self.tasks_ids) == 1: # single task -> form view action['views'] = [(form_view_id, 'form')] action['res_id'] = self.tasks_ids.id + # filter on the task of the current SO + action.setdefault('context', {}) + action['context'].update({'search_default_sale_order_id': self.id}) return action @api.multi diff --git a/addons/sale_timesheet/views/project_task_views.xml b/addons/sale_timesheet/views/project_task_views.xml index 2b4705f1b4c..1b82269ca19 100644 --- a/addons/sale_timesheet/views/project_task_views.xml +++ b/addons/sale_timesheet/views/project_task_views.xml @@ -46,6 +46,18 @@ </field> </record> + <record id="project_task_view_search" model="ir.ui.view"> + <field name="name">project.task.search.inherit</field> + <field name="model">project.task</field> + <field name="inherit_id" ref="project.view_task_search_form"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='stage_id']" position="after"> + <field name="sale_line_id"/> + <field name="sale_order_id"/> + </xpath> + </field> + </record> + <record id="project_task_view_form_inherit_sale_timesheet" model="ir.ui.view"> <field name="name">project.task.form.inherit.timesheet</field> <field name="model">project.task</field> |
