[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
This commit is contained in:
Xavier BOL (xbo)
2021-01-15 15:59:58 +01:00
parent c4a0c301ae
commit 59477b8aee
+10
View File
@@ -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']