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 @@ + + +