summaryrefslogtreecommitdiff
path: root/addons/hr_presence
diff options
context:
space:
mode:
authorKevin Baptiste <kba@odoo.com>2020-05-04 14:46:18 +0000
committerArnaud Joset <arj@odoo.com>2020-08-05 12:22:29 +0000
commitd24de2554e24431f9241c12f7202d4c9960edca0 (patch)
treeae83068e24fbcdd467e385c9a087e2a091d50798 /addons/hr_presence
parentb6489f2763c3f062ab2e5a96b2c804b445f79809 (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.py16
-rw-r--r--addons/hr_presence/views/hr_employee_views.xml18
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">