Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
2 Odpovědi
167 Zobrazení

I want to be able to see the first check in last check out and calculate the work hour when an employee check in and out multiple time in a day

Avatar
Zrušit
Nejlepší odpověď

hii,

Try this custom module

1. Create a new model

class EmployeeAttendanceDaily (models.Model): _name = 'employee.attendance.daily' _description = 'Daily Attendance Summary' employee_id = fields.Many2one( 'hr.employee' , required= True ) date = fields.Date(required= True ) first_check_in = fields.Datetime() last_check_out = fields.Datetime() total_hours = fields. Float()

Add method to compute per day


def compute_daily_attendance ( self ): att_model = self.env[ 'hr.attendance' ] employees = self.env[ 'hr.employee' ].search([]) today = fields.Date.today() for emp in employees: records = att_model. search([ ( 'employee_id' , '=' , emp. id ), ( 'check_in' , '>=' , today), ( 'check_in' , '<=' , today) ], order= 'check_in asc' ) if not record: continue first_in = records[ 0 ].check_in last_out = max ([r.check_out for r in records if r.check_out], default= None ) worked = sum ((r.check_out - r.check_in).total_seconds() for r in records if r.check_in and r.check_out) self.create({ 'employee_id' : emp. id , 'date' : today, 'first_check_in' : first_in, 'last_check_out' : last_out, 'total_hours' : round (worked / 3600.0 , 2 ) })

3. Add cron job to run this daily


<record id = "ir_cron_attendance_summary" model = "ir.cron"> <field name = "name" >Compute Daily Attendance </field> <field name = "model_id" ref = "model_employee_attendance_daily"/> <field name = "state" >code </field> <field name = "code">model.compute_daily_attendance() </field> <field name = "interval_number" >1 </field> <field name = "interval_type" >days </field> <field name = "numbercall" >-1 </ field > </ record >

I hope it is use full

Avatar
Zrušit
Nejlepší odpověď

Activate Developer Mode:
Go to Settings → Activate Developer Mode.

Navigate to Attendance Records:
Go to Employees → Attendance → Attendances.

Each Employee’s Daily Record:

  • Odoo creates a new attendance entry (check-in/check-out pair) every time an employee logs in and out.
  • You can filter/group by employee and date to see all entries.

Custom Report (Optional):
To show first check-in and last check-out per day:

  • Use Pivot View or create a custom report via Odoo Studio or developer mode.
  • Group by Employee and Check-in Date.
  • Use Min(Check-in) and Max(Check-out).

Avatar
Zrušit