Merge pull request #5891 from expsa/bakry_hr

field other attendance_duration
This commit is contained in:
bakry 2025-12-30 15:56:13 +03:00 committed by GitHub
commit 4d57cd08c6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 61 additions and 0 deletions

View File

@ -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 "اليوم إجــازة؟"

View File

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

View File

@ -363,6 +363,9 @@
<field name="action_date" readonly="1"/>
<field name="taken" invisible="1"/>
<field name="attendance_duration_hhmmss" attrs="{'invisible': [('action','!=','sign_out')]}" />
<field name="permission_duration" attrs="{'invisible': [('action','!=','sign_out')]}" />
<field name="mission_duration" attrs="{'invisible': [('action','!=','sign_out')]}" />
<field name="is_holiday"/>
</group>
</sheet>
</form>