Merge pull request #1963 from expsa/samir-aladawi-fix-attendances-records

[FIX] attendances: time from and to in permissions
This commit is contained in:
SamirLADOUI-sa 2024-12-24 12:08:45 +01:00 committed by GitHub
commit 5d41bb8dde
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 6 deletions

View File

@ -176,15 +176,15 @@ class HrAttendanceTransactions(models.Model):
# Check coverage by official mission
if official_mission_module and item.official_id:
mission_start = item.official_id.hour_from
mission_end = mission_start + item.total_mission_hours
if mission_start <= full_sign_in <= mission_end:
mission_end = item.official_id.hour_to
if mission_start <= full_sign_in:
lateness_covered_time += min(lateness_time, mission_end - full_sign_in)
# Check coverage by personal permission
if item.personal_permission_id:
permission_start = start_permission_time_float
permission_end = permission_start + item.total_permission_hours
if permission_start <= full_sign_in <= permission_end:
if permission_start <= full_sign_in:
lateness_covered_time += min(lateness_time, permission_end - full_sign_in)
# Determine remaining uncovered lateness
@ -203,15 +203,15 @@ class HrAttendanceTransactions(models.Model):
# Check coverage by official mission
if official_mission_module and item.official_id:
mission_start = item.official_id.hour_from
mission_end = mission_start + item.total_mission_hours
if mission_start <= adjusted_sign_out <= mission_end:
mission_end = item.official_id.hour_to
if adjusted_sign_out >= mission_start:
early_exit_covered_time += min(remaining_work_time, mission_end - adjusted_sign_out)
# Check coverage by personal permission
if item.personal_permission_id:
permission_start = start_permission_time_float
permission_end = permission_start + item.total_permission_hours
if permission_start <= adjusted_sign_out <= permission_end:
if adjusted_sign_out >= permission_start:
early_exit_covered_time += min(remaining_work_time, permission_end - adjusted_sign_out)
# Determine remaining uncovered early exit

View File

@ -41,6 +41,23 @@ class HrPersonalPermission(models.Model):
company_id = fields.Many2one('res.company',string="Company", default=lambda self: self.env.user.company_id)
is_branch = fields.Many2one(related='department_id.branch_name', store=True, readonly=True)
time_from = fields.Float(compute='_compute_times')
time_to = fields.Float(compute='_compute_times')
@api.depends('date_from', 'date_to')
def _compute_times(self):
for rec in self:
if rec.date_from:
tf = rec.date_from.time()
rec.time_from = tf.hour + tf.minute / 60
if rec.date_to:
tt = rec.date_to.time()
rec.time_to = tt.hour + tt.minute / 60
# time_permission_from = fields.Float(string="Permission From (24h format)", help="Time in 24-hour format (e.g., 13.5 for 1:30 PM)")
# time_permission_to = fields.Float(string="Permission To (24h format)", help="Time in 24-hour format (e.g., 15.75 for 3:45 PM)")

View File

@ -66,6 +66,8 @@
attrs="{'readonly':[('state' , '!=' , 'draft')],'required':1}"/>
<field name="date_to" string="Date To"
attrs="{'readonly':[('state' , '!=' , 'draft')],'required':1}"/>
<field name="time_from" widget="float_time"/>
<field name="time_to" widget="float_time"/>
<field name="duration" string="Duration" attrs="{'readonly':1}" widget="float_time"/>
<field name="balance" string="Permission Limit" readonly="1" widget="float_time"/>
<field name="permission_number" force_save="True" string="Permission Per Month" widget="float_time"/>