diff --git a/addons/sale_project/models/project.py b/addons/sale_project/models/project.py index 50c696c5229..b160833aa1e 100644 --- a/addons/sale_project/models/project.py +++ b/addons/sale_project/models/project.py @@ -126,10 +126,11 @@ class Project(models.Model): if self.user_has_groups('sales_team.group_sale_salesman_all_leads'): buttons.append({ 'icon': 'dollar', - 'text': _('Sales Order'), + 'text': _('Sales Orders'), + 'number': self.sale_order_count, 'action_type': 'object', 'action': 'action_view_sos', - 'show': bool(self.sale_order_id), + 'show': self.sale_order_count > 0, 'sequence': 1, }) return buttons diff --git a/addons/sale_timesheet/models/project.py b/addons/sale_timesheet/models/project.py index ddee7e27bbd..df2237e9f64 100644 --- a/addons/sale_timesheet/models/project.py +++ b/addons/sale_timesheet/models/project.py @@ -176,11 +176,15 @@ class Project(models.Model): project.sale_line_id = sol or project.sale_line_employee_ids.sale_line_id[:1] # get the first SOL containing in the employee mappings if no sol found in the search def _get_all_sales_orders(self): - return super()._get_all_sales_orders() | self.sale_line_employee_ids.sale_line_id.order_id + if self.allow_billable: + return super()._get_all_sales_orders() | self.sale_line_employee_ids.sale_line_id.order_id + return self.env['sale.order'] - @api.depends('sale_line_employee_ids.sale_line_id') + @api.depends('sale_line_employee_ids.sale_line_id', 'allow_billable') def _compute_sale_order_count(self): - super()._compute_sale_order_count() + billable_projects = self.filtered('allow_billable') + super(Project, billable_projects)._compute_sale_order_count() + (self - billable_projects).sale_order_count = 0 @api.constrains('sale_line_id') def _check_sale_line_type(self):