From 59477b8aee685cc69942aeb2a1f5df789ddbed6a Mon Sep 17 00:00:00 2001 From: "Xavier BOL (xbo)" Date: Wed, 6 Jan 2021 14:30:40 +0100 Subject: [PATCH] [FIX] sale_project: remove SO and SOL in project if customer different When the user changes the project customer we need to check if the SO and SOL are always for the customer defined in the project. If not we remove the SO and SOL in project. task-2424382 --- addons/sale_project/models/project.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/sale_project/models/project.py b/addons/sale_project/models/project.py index 4089fc37757..fd7c5a345df 100644 --- a/addons/sale_project/models/project.py +++ b/addons/sale_project/models/project.py @@ -12,10 +12,12 @@ class Project(models.Model): sale_line_id = fields.Many2one( 'sale.order.line', 'Sales Order Item', copy=False, + compute="_compute_sale_line_id", store=True, readonly=False, domain="[('is_service', '=', True), ('is_expense', '=', False), ('order_id', '=', sale_order_id), ('state', 'in', ['sale', 'done']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]", help="Sales order item to which the project is linked. Link the timesheet entry to the sales order item defined on the project. " "Only applies on tasks without sale order item defined, and if the employee is not in the 'Employee/Sales Order Item Mapping' of the project.") sale_order_id = fields.Many2one('sale.order', 'Sales Order', + compute="_compute_sale_order_id", store=True, readonly=False, domain="[('order_line.product_id.type', '=', 'service'), ('partner_id', '=', partner_id)]", copy=False, help="Sales order to which the project is linked.") project_overview = fields.Boolean('Show Project Overview', compute='_compute_project_overview') @@ -30,6 +32,14 @@ class Project(models.Model): defaults['sale_line_id'] = False return defaults + @api.depends('sale_order_id') + def _compute_sale_line_id(self): + self.filtered(lambda p: p.sale_line_id and (not p.sale_order_id or p.sale_order_id != p.sale_line_id.order_id)).update({'sale_line_id': False}) + + @api.depends('partner_id') + def _compute_sale_order_id(self): + self.filtered(lambda p: p.sale_order_id and (not p.partner_id or p.sale_order_id.partner_id != p.partner_id)).update({'sale_order_id': False}) + @api.depends('analytic_account_id') def _compute_project_overview(self): overview = self.env['project.project']