diff --git a/odex25_hr/attendances/i18n/ar_001.po b/odex25_hr/attendances/i18n/ar_001.po
index 94a557391..c7df4a07a 100644
--- a/odex25_hr/attendances/i18n/ar_001.po
+++ b/odex25_hr/attendances/i18n/ar_001.po
@@ -2868,3 +2868,18 @@ msgstr "أيام الغياب"
#: model:ir.model.fields,field_description:attendances.field_attendance_attendance__attendance_duration_hhmmss
msgid "Attendance Duration"
msgstr "زمن الحضور"
+
+#. module: attendances
+#: model:ir.model.fields,field_description:attendances.field_attendance_attendance__permission_duration
+msgid "Permission Duration"
+msgstr "زمن الإستئذان"
+
+#. module: attendances
+#: model:ir.model.fields,field_description:attendances.field_attendance_attendance__mission_duration
+msgid "Mission Duration"
+msgstr "زمن مهام العمل"
+
+#. module: attendances
+#: model:ir.model.fields,field_description:attendances.field_attendance_attendance__is_holiday
+msgid "Is Holiday?"
+msgstr "اليوم إجــازة؟"
diff --git a/odex25_hr/attendances/models/hr_attendance.py b/odex25_hr/attendances/models/hr_attendance.py
index b5ad2cdbc..67698f495 100644
--- a/odex25_hr/attendances/models/hr_attendance.py
+++ b/odex25_hr/attendances/models/hr_attendance.py
@@ -451,6 +451,14 @@ class Attendance(models.Model):
attendance_duration_hhmmss = fields.Char(string="Attendance Duration",
compute='_compute_attendance_duration', store=True)
+ permission_duration = fields.Float(string="Permission Duration", compute='_compute_attendance_duration',
+ store=True)
+
+ mission_duration = fields.Float(string="Mission Duration", compute='_compute_attendance_duration',
+ store=True)
+
+ is_holiday = fields.Boolean(string='Is Holiday?',default=False)
+
@api.depends('action_date')
def _compute_is_today(self):
today = datetime.now().date()
@@ -482,6 +490,41 @@ class Attendance(models.Model):
if not record.employee_id or not record.action_date:
continue
+ Module = self.env['ir.module.module'].sudo()
+ mod_emp_request = Module.search([('state', '=', 'installed'), ('name', '=', 'employee_requests')])
+ modules_mission = Module.search([('state', '=', 'installed'), ('name', '=', 'exp_official_mission')])
+
+ holiday = self.env['hr.holidays'].search([
+ ('employee_id', '=', record.employee_id.id),
+ ('date_from', '<=', record.action_date),
+ ('date_to', '>=', record.action_date),('state','=','validate1'),])
+
+ official_holiday = self.env['hr.holiday.officials'].search([
+ ('date_from', '<=', record.action_date),
+ ('date_to', '>=', record.action_date),('state','=','confirm'),])
+
+ if holiday or official_holiday:
+ record.is_holiday= True
+
+ if modules_mission:
+ missions = self.env['hr.official.mission.employee'].search([
+ ('employee_id', '=', record.employee_id.id),
+ ('date_from', '<=', record.action_date),
+ ('date_to', '>=', record.action_date),('state','=','approve'),])
+
+ for mission in missions:
+ mission_seconds = sum(mission.hours for mission in missions)
+ record.mission_duration = round(mission_seconds, 2)
+
+ if mod_emp_request:
+ permissions = self.sudo().env['hr.personal.permission'].search([
+ ('employee_id', '=', record.employee_id.id),
+ ('date_from', '>=', record.action_date),
+ ('date_from', '<=', record.action_date),('state','=','approve')])
+
+ permission_seconds = sum(p.duration for p in permissions)
+ record.permission_duration = round(permission_seconds, 2)
+
attendances = self.search([
('employee_id', '=', record.employee_id.id),
('action_date', '=', record.action_date)
diff --git a/odex25_hr/attendances/views/hr_attendance_view.xml b/odex25_hr/attendances/views/hr_attendance_view.xml
index 37dcf63cf..16c54f42b 100644
--- a/odex25_hr/attendances/views/hr_attendance_view.xml
+++ b/odex25_hr/attendances/views/hr_attendance_view.xml
@@ -363,6 +363,9 @@
+
+
+