Merge pull request #1963 from expsa/samir-aladawi-fix-attendances-records
[FIX] attendances: time from and to in permissions
This commit is contained in:
commit
5d41bb8dde
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)")
|
||||
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue