diff options
| author | Yash Vaishnav <yava@odoo.com> | 2024-12-18 06:28:50 +0000 |
|---|---|---|
| committer | Yash Vaishnav <yava@odoo.com> | 2025-02-05 16:42:36 +0000 |
| commit | 80478819fd92d7269e346902ffa647ec545d15b3 (patch) | |
| tree | bab440b0e1a36c70217a0eddd6d92092a0eb3347 | |
| parent | efd72670128adfa59644482c13fbea2b477b5815 (diff) | |
[FIX] hr: fixed the plan smart button
In this commit,
- Set the default department for the Plans smart button.
- If there is no plan, it will open the form view.
Task-4356557
closes odoo/odoo#196602
X-original-commit: 0a4cf6764469954f59cc59d1d4c09ccc9f02126a
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
| -rw-r--r-- | addons/hr/models/hr_department.py | 27 | ||||
| -rw-r--r-- | addons/hr/views/mail_activity_plan_views.xml | 2 | ||||
| -rw-r--r-- | addons/mail/views/mail_activity_plan_views.xml | 2 |
3 files changed, 25 insertions, 6 deletions
diff --git a/addons/hr/models/hr_department.py b/addons/hr/models/hr_department.py index 44e2c28c69f..9519506fd56 100644 --- a/addons/hr/models/hr_department.py +++ b/addons/hr/models/hr_department.py @@ -1,8 +1,10 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import ast + from odoo import api, fields, models, _ from odoo.exceptions import ValidationError +from odoo.osv import expression class Department(models.Model): @@ -76,10 +78,19 @@ class Department(models.Model): department.total_employee = result.get(department.id, 0) def _compute_plan_count(self): - plans_data = self.env['mail.activity.plan']._read_group([('department_id', 'in', self.ids), ('company_id', 'in', self.env.companies.ids + [False])], ['department_id'], ['__count']) + plans_data = self.env['mail.activity.plan']._read_group( + domain=[ + '|', + ('department_id', '=', False), + ('department_id', 'in', self.ids), + ('company_id', 'in', self.env.companies.ids + [False]) + ], + groupby=['department_id'], + aggregates=['__count'], + ) plans_count = {department.id: count for department, count in plans_data} for department in self: - department.plans_count = plans_count.get(department.id, 0) + department.plans_count = plans_count.get(department.id, 0) + plans_count.get(False, 0) @api.constrains('parent_id') def _check_parent_id(self): @@ -147,7 +158,15 @@ class Department(models.Model): def action_plan_from_department(self): action = self.env['ir.actions.actions']._for_xml_id('hr.mail_activity_plan_action') - action['context'] = {'default_department_id': self.id, 'search_default_department_id': self.id} + action['context'] = dict(ast.literal_eval(action.get('context')), default_department_id=self.id) + domain = [ + '|', + ('department_id', '=', False), + ('department_id', 'in', self.ids), + ] + action['domain'] = expression.AND([ast.literal_eval(action['domain']), domain]) if 'domain' in action else domain + if self.plans_count == 0: + action['views'] = [(False, 'form')] return action def action_employee_from_department(self): diff --git a/addons/hr/views/mail_activity_plan_views.xml b/addons/hr/views/mail_activity_plan_views.xml index 3fa0e4d5cd1..130356152ca 100644 --- a/addons/hr/views/mail_activity_plan_views.xml +++ b/addons/hr/views/mail_activity_plan_views.xml @@ -31,7 +31,7 @@ <xpath expr="//group[@name='group_plan_fields']/group[@name='company_id']" position="before"> <field name="department_assignable" invisible="1"/> <group invisible="not department_assignable"> - <field name="department_id"/> + <field name="department_id" placeholder="Available for all Departments"/> </group> </xpath> </field> diff --git a/addons/mail/views/mail_activity_plan_views.xml b/addons/mail/views/mail_activity_plan_views.xml index 75e83b6a17f..73445086f69 100644 --- a/addons/mail/views/mail_activity_plan_views.xml +++ b/addons/mail/views/mail_activity_plan_views.xml @@ -61,7 +61,7 @@ <field name="res_model"/> </group> <group name="company_id" groups="base.group_multi_company"> - <field name="company_id" domain="[('id', '=', allowed_company_ids)]"/> + <field name="company_id" domain="[('id', '=', allowed_company_ids)]" placeholder="Available for all Companies"/> </group> </group> <notebook> |
