From 8b3c3c0876805a812eda496a98b18e3c227f81f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Maes?= <jem@openerp.com>
Date: Thu, 5 Oct 2017 14:56:23 +0200
Subject: [PATCH] [FIX] sale_timesheet: sub task should have the same so line
 than its parent

And the SO item is readonly for sub task, to avoid
invoice twice the timesheet of a sub task.
---
 addons/sale_timesheet/models/project.py            | 11 +++++++++++
 addons/sale_timesheet/views/project_task_views.xml |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/addons/sale_timesheet/models/project.py b/addons/sale_timesheet/models/project.py
index a54f1eaa034f..09475410a900 100644
--- a/addons/sale_timesheet/models/project.py
+++ b/addons/sale_timesheet/models/project.py
@@ -58,8 +58,19 @@ class ProjectTask(models.Model):
 
     sale_line_id = fields.Many2one('sale.order.line', 'Sales Order Item', domain="[('is_service', '=', True), ('order_partner_id', '=', partner_id)]")
 
+    @api.model
+    def create(self, values):
+        # sub task has the same so line than their parent
+        if 'parent_id' in values:
+            values['sale_line_id'] = self.env['project.task'].browse(values['parent_id']).sudo().sale_line_id.id
+        return super(ProjectTask, self).create(values)
+
     @api.multi
     def write(self, values):
+        # sub task has the same so line than their parent
+        if 'parent_id' in values:
+            values['sale_line_id'] = self.env['project.task'].browse(values['parent_id']).sudo().sale_line_id.id
+
         result = super(ProjectTask, self).write(values)
         # reassign SO line on related timesheet lines
         if 'sale_line_id' in values:
diff --git a/addons/sale_timesheet/views/project_task_views.xml b/addons/sale_timesheet/views/project_task_views.xml
index d952910d6069..1458e35dc40c 100644
--- a/addons/sale_timesheet/views/project_task_views.xml
+++ b/addons/sale_timesheet/views/project_task_views.xml
@@ -29,7 +29,7 @@
                             string="Sales Order"/>
                 </xpath>
                 <field name="user_id" position="after">
-                    <field name="sale_line_id" string="Sales Order Item" attrs="{'invisible': [('partner_id', '=', False)]}" options='{"no_open": True, "no_create": True}' context="{'sale_show_order_product_name': True}"/>
+                    <field name="sale_line_id" string="Sales Order Item" attrs="{'invisible': [('partner_id', '=', False)], 'readonly': [('parent_id', '!=', False)]}" options='{"no_open": True, "no_create": True}' context="{'sale_show_order_product_name': True}"/>
                 </field>
             </field>
         </record>
-- 
GitLab