From dcbdb6e690f29bc5327d7067688c93071d9a6b2d Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Tue, 14 Mar 2023 09:37:16 +0000 Subject: [PATCH] [IMP] project: Remove commercial_partner_id from task/project model closes odoo/odoo#115155 Taskid: 3231143 Related: odoo/enterprise#38142 Related: odoo/upgrade#4432 Signed-off-by: Xavier Bol (xbo) --- addons/project/models/project.py | 3 --- addons/project/views/project_views.xml | 1 - addons/sale_project/models/project.py | 6 +++--- addons/sale_project/views/project_sharing_views.xml | 1 - addons/sale_project/views/project_task_views.xml | 1 - addons/sale_timesheet/models/account.py | 6 +++--- addons/sale_timesheet/models/project.py | 8 ++++---- addons/sale_timesheet/views/project_task_views.xml | 4 ++-- 8 files changed, 12 insertions(+), 18 deletions(-) diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 8da3d975fa3..6be03f4c4c9 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -26,7 +26,6 @@ PROJECT_TASK_READABLE_FIELDS = { 'project_id', 'display_project_id', 'color', - 'commercial_partner_id', 'allow_subtasks', 'subtask_count', 'is_private', @@ -314,7 +313,6 @@ class Project(models.Model): help="If the active field is set to False, it will allow you to hide the project without removing it.") sequence = fields.Integer(default=10) partner_id = fields.Many2one('res.partner', string='Customer', auto_join=True, tracking=True, check_company=True) - commercial_partner_id = fields.Many2one(related="partner_id.commercial_partner_id") company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.company) currency_id = fields.Many2one('res.currency', related="company_id.currency_id", string="Currency", readonly=True) analytic_account_id = fields.Many2one('account.analytic.account', string="Analytic Account", copy=False, ondelete='set null', @@ -1189,7 +1187,6 @@ class Task(models.Model): string='Customer', recursive=True, tracking=True, compute='_compute_partner_id', store=True, readonly=False, domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") - commercial_partner_id = fields.Many2one(related='partner_id.commercial_partner_id') partner_phone = fields.Char( compute='_compute_partner_phone', inverse='_inverse_partner_phone', string="Phone", readonly=False, store=True, copy=False) diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml index 82d4c07b249..a1790bb544c 100644 --- a/addons/project/views/project_views.xml +++ b/addons/project/views/project_views.xml @@ -755,7 +755,6 @@ > - diff --git a/addons/sale_project/models/project.py b/addons/sale_project/models/project.py index a7c4b5c846c..4152c20aaae 100755 --- a/addons/sale_project/models/project.py +++ b/addons/sale_project/models/project.py @@ -587,7 +587,7 @@ class ProjectTask(models.Model): def SELF_READABLE_FIELDS(self): return super().SELF_READABLE_FIELDS | {'allow_billable', 'sale_order_id', 'sale_line_id', 'display_sale_order_button'} - @api.depends('sale_line_id', 'project_id', 'commercial_partner_id', 'allow_billable') + @api.depends('sale_line_id', 'project_id', 'partner_id.commercial_partner_id', 'allow_billable') def _compute_sale_order_id(self): for task in self: if not task.allow_billable: @@ -598,13 +598,13 @@ class ProjectTask(models.Model): sale_order_id = task.sale_line_id.sudo().order_id elif task.project_id.sale_order_id: sale_order_id = task.project_id.sale_order_id - if task.commercial_partner_id != sale_order_id.partner_id.commercial_partner_id: + if task.partner_id.commercial_partner_id != sale_order_id.partner_id.commercial_partner_id: sale_order_id = False if sale_order_id and not task.partner_id: task.partner_id = sale_order_id.partner_id task.sale_order_id = sale_order_id - @api.depends('commercial_partner_id', 'sale_line_id.order_partner_id', 'parent_id.sale_line_id', 'project_id.sale_line_id', 'milestone_id.sale_line_id', 'allow_billable') + @api.depends('partner_id.commercial_partner_id', 'sale_line_id.order_partner_id', 'parent_id.sale_line_id', 'project_id.sale_line_id', 'milestone_id.sale_line_id', 'allow_billable') def _compute_sale_line(self): for task in self: if not task.allow_billable: diff --git a/addons/sale_project/views/project_sharing_views.xml b/addons/sale_project/views/project_sharing_views.xml index 59fe6e587fe..d7dd046b4ca 100644 --- a/addons/sale_project/views/project_sharing_views.xml +++ b/addons/sale_project/views/project_sharing_views.xml @@ -19,7 +19,6 @@ {'res_partner_search_mode': 'customer'} - diff --git a/addons/sale_project/views/project_task_views.xml b/addons/sale_project/views/project_task_views.xml index e17470c7695..40431068ef4 100644 --- a/addons/sale_project/views/project_task_views.xml +++ b/addons/sale_project/views/project_task_views.xml @@ -85,7 +85,6 @@ - diff --git a/addons/sale_timesheet/models/account.py b/addons/sale_timesheet/models/account.py index 104e1d7901d..c9d62e277f9 100644 --- a/addons/sale_timesheet/models/account.py +++ b/addons/sale_timesheet/models/account.py @@ -37,10 +37,10 @@ class AccountAnalyticLine(models.Model): is_so_line_edited = fields.Boolean("Is Sales Order Item Manually Edited") allow_billable = fields.Boolean(related="project_id.allow_billable") - @api.depends('project_id.commercial_partner_id', 'task_id.commercial_partner_id') + @api.depends('project_id.partner_id.commercial_partner_id', 'task_id.partner_id.commercial_partner_id') def _compute_commercial_partner(self): for timesheet in self: - timesheet.commercial_partner_id = timesheet.task_id.commercial_partner_id or timesheet.project_id.commercial_partner_id + timesheet.commercial_partner_id = timesheet.task_id.partner_id.commercial_partner_id or timesheet.project_id.partner_id.commercial_partner_id @api.depends('so_line.product_id', 'project_id', 'amount') def _compute_timesheet_invoice_type(self): @@ -115,7 +115,7 @@ class AccountAnalyticLine(models.Model): map_entry = self.project_id.sale_line_employee_ids.filtered( lambda map_entry: map_entry.employee_id == self.employee_id - and map_entry.sale_line_id.order_partner_id.commercial_partner_id == self.task_id.commercial_partner_id + and map_entry.sale_line_id.order_partner_id.commercial_partner_id == self.task_id.partner_id.commercial_partner_id ) if map_entry: return map_entry.sale_line_id diff --git a/addons/sale_timesheet/models/project.py b/addons/sale_timesheet/models/project.py index de180f748cd..a0f56e7895a 100644 --- a/addons/sale_timesheet/models/project.py +++ b/addons/sale_timesheet/models/project.py @@ -555,7 +555,7 @@ class ProjectTask(models.Model): for task in self: task.analytic_account_active = task.analytic_account_active or task.so_analytic_account_id.active - @api.depends('commercial_partner_id', 'sale_line_id.order_partner_id', 'parent_id.sale_line_id', 'project_id.sale_line_id', 'allow_billable') + @api.depends('partner_id.commercial_partner_id', 'sale_line_id.order_partner_id', 'parent_id.sale_line_id', 'project_id.sale_line_id', 'allow_billable') def _compute_sale_line(self): super()._compute_sale_line() for task in self: @@ -575,10 +575,10 @@ class ProjectTask(models.Model): def _get_last_sol_of_customer(self): # Get the last SOL made for the customer in the current task where we need to compute self.ensure_one() - if not self.commercial_partner_id or not self.allow_billable: + if not self.partner_id.commercial_partner_id or not self.allow_billable: return False - domain = [('company_id', '=', self.company_id.id), ('is_service', '=', True), ('order_partner_id', 'child_of', self.commercial_partner_id.id), ('is_expense', '=', False), ('state', 'in', ['sale', 'done']), ('remaining_hours', '>', 0)] - if self.project_id.pricing_type != 'task_rate' and self.project_sale_order_id and self.commercial_partner_id == self.project_id.partner_id.commercial_partner_id: + domain = [('company_id', '=', self.company_id.id), ('is_service', '=', True), ('order_partner_id', 'child_of', self.partner_id.commercial_partner_id.id), ('is_expense', '=', False), ('state', 'in', ['sale', 'done']), ('remaining_hours', '>', 0)] + if self.project_id.pricing_type != 'task_rate' and self.project_sale_order_id and self.partner_id.commercial_partner_id == self.project_id.partner_id.commercial_partner_id: domain.append(('order_id', '=?', self.project_sale_order_id.id)) return self.env['sale.order.line'].search(domain, limit=1) diff --git a/addons/sale_timesheet/views/project_task_views.xml b/addons/sale_timesheet/views/project_task_views.xml index cd709fff54f..e29058bfe20 100644 --- a/addons/sale_timesheet/views/project_task_views.xml +++ b/addons/sale_timesheet/views/project_task_views.xml @@ -138,12 +138,12 @@