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
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Účetnictví
- Sklad
- PoS
- Project
- MRP
This question has been flagged
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
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).
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Přihlásit se