diff options
| author | Kevin Baptiste <kba@odoo.com> | 2020-05-04 14:46:18 +0000 |
|---|---|---|
| committer | Arnaud Joset <arj@odoo.com> | 2020-08-05 12:22:29 +0000 |
| commit | d24de2554e24431f9241c12f7202d4c9960edca0 (patch) | |
| tree | ae83068e24fbcdd467e385c9a087e2a091d50798 /addons/hr_presence | |
| parent | b6489f2763c3f062ab2e5a96b2c804b445f79809 (diff) | |
[IMP] hr,hr_attendance,hr_contract,hr_holidays,hr_presence: update employees presence icons
Make the employee presence icons more descriptive.
Allow to quickly filter the Presence Reports based on the user status.
closes odoo/odoo#54527
Taskid: 2246447
Related: odoo/upgrade#1488
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Diffstat (limited to 'addons/hr_presence')
| -rw-r--r-- | addons/hr_presence/models/hr_employee.py | 16 | ||||
| -rw-r--r-- | addons/hr_presence/views/hr_employee_views.xml | 18 |
2 files changed, 30 insertions, 4 deletions
diff --git a/addons/hr_presence/models/hr_employee.py b/addons/hr_presence/models/hr_employee.py index c3556229e19..47912169119 100644 --- a/addons/hr_presence/models/hr_employee.py +++ b/addons/hr_presence/models/hr_employee.py @@ -21,16 +21,22 @@ class Employee(models.AbstractModel): # Stored field used in the presence kanban reporting view # to allow group by state. hr_presence_state_display = fields.Selection([ + ('to_define', 'To Define'), ('present', 'Present'), ('absent', 'Absent'), - ('to_define', 'To Define')]) + ]) def _compute_presence_state(self): super()._compute_presence_state() - employees = self.filtered(lambda employee: employee.hr_presence_state != 'present' and not employee.is_absent) + employees = self.filtered(lambda e: e.hr_presence_state != 'present' and not e.is_absent) company = self.env.company + employee_to_check_working = employees.filtered(lambda e: + not e.is_absent and + (e.email_sent or e.ip_connected or e.manually_set_present)) + working_now_list = employee_to_check_working._get_employee_working_now() for employee in employees: - if not employee.is_absent and company.hr_presence_last_compute_date and company.hr_presence_last_compute_date.day == Datetime.now().day and \ + if not employee.is_absent and company.hr_presence_last_compute_date and employee.id in working_now_list and \ + company.hr_presence_last_compute_date.day == Datetime.now().day and \ (employee.email_sent or employee.ip_connected or employee.manually_set_present): employee.hr_presence_state = 'present' @@ -103,7 +109,9 @@ class Employee(models.AbstractModel): 'view_mode': 'kanban,tree,form', "domain": [], "name": "Employee's Presence to Define", - "context": {'search_default_group_hr_presence_state': 1}, + "search_view_id": [self.env.ref('hr_presence.hr_employee_view_presence_search').id, 'search'], + "context": {'search_default_group_hr_presence_state': 1, + 'searchpanel_default_hr_presence_state_display': 'to_define'}, } def action_set_present(self): diff --git a/addons/hr_presence/views/hr_employee_views.xml b/addons/hr_presence/views/hr_employee_views.xml index 61cb26184f8..cdb7d514141 100644 --- a/addons/hr_presence/views/hr_employee_views.xml +++ b/addons/hr_presence/views/hr_employee_views.xml @@ -12,6 +12,21 @@ </field> </record> + <record id="hr_employee_view_presence_search" model="ir.ui.view"> + <field name="name">hr.employee.view.search.presence</field> + <field name="model">hr.employee</field> + <field name="arch" type="xml"> + <search string="Employees"> + <filter name="group_hr_presence_state" string="Presence" domain="[]" context="{'group_by':'hr_presence_state_display'}"/> + <searchpanel> + <field name="company_id" groups="base.group_multi_company" icon="fa-building"/> + <field name="hr_presence_state_display" string="Absence/Presence" /> + <field name="department_id" icon="fa-users"/> + </searchpanel> + </search> + </field> + </record> + <record id="hr_employee_view_kanban" model="ir.ui.view"> <field name="name">hr.employee.view.kanban</field> <field name="model">hr.employee</field> @@ -19,6 +34,9 @@ <field name="groups_id" eval="[(4, ref('hr.group_hr_manager'))]"/> <field name="mode">primary</field> <field name="arch" type="xml"> + <xpath expr="//kanban" position="attributes"> + <attribute name="create">0</attribute> + </xpath> <xpath expr="//div[hasclass('oe_kanban_details')]" position="inside"> <div class="o_kanban_record_bottom"> <div class="oe_kanban_bottom_left"> |
