TIP: You can type at any time to perform a new search.
Attendances
hr_attendance · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 2.0
- Category
- Human Resources/Attendances
- Folder size
- 6.1 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://www.odoo.com/app/employees
- Last tracking update
- 2026-10-05 00:19:51
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, odoo, Odoo Translation Bot, Christophe Matthieu, Aaron Bohy, Géry Debongnie, Yannick Tivisse, qsm-odoo, Jorge Pinna Puissant, Julien Castiaux, Xavier-Do, Victor Feyens, Adrien Dieudonné, Sébastien Theys, Julien Mougenot, David Beguin, Tiffany Chang (tic), Miquel Raïch, william-andre, luvi, Vincent Larcin, Victor Piryns (pivi), Dylan Kiss (dyki), Odoo, Xavier Bol (xbo), Youssef Bashandy, ravb-odoo, Gabriel (gdpf), Tanguy Quéguineur, Martin Trigaux (mat), Ahmad (khah), Agustin Castro Bugallo, sami odoo, Harsh Shah, rmun-odoo, thle-odoo, Mathieu Coutant, Yassin Abdelkarim, kais-odoo, Khumam Alzagim, Abdelrahman Mahmoud (amah), ahta, Ezzuldin Zaky (ezza), Bastien PIERRE, Michaël Mattiello, Mahdi Alijani (malj), Krzysztof Magusiak (krma), Ajit Singh, krip-odoo, Hazem Ibrahim, Guillaume V, Maeva De Keyser (MDEK), Harrison Hutton, Tyler Landivar (tylan), pajo, kareem, Bertrand Dossogne, romc-odoo, Ian Cioppa (iacio), Julien Launois (jula), adip-odoo, ksar-odoo, Quentin Colla (qucol), dhka-odoo, path-odoo, Ayush Modi, Saurabh, Hashem Elmaleeh, lrizzi1, Amr Elkhatieb, assh-odoo, khom-odoo, Ziri, renol-odoo, Aurélien Bertrand, abbhi-Odoo, jand-odoo, lebm-odoo, Dilya Anvarbekova, Zachary (zavan), Jurgen Gjini, Federico Falcone, Mahmoudk3m, Martin Lefèvre (mlef), Madhav Pancholi, ELCO, Manal El Kaidi (maelk), djsh-odoo, tshe-odoo, chpa-odoo, Faruk Avcı, 3amo-magdy, Mohamed Ayman, amga-odoo, Kishan (kiga), hamza, niyp-odoo, vifu-odoo, SurryaT10, usseif, Mélanie Peyrat (mepe), Mohammed Farouk, Julien Coppin (jucop), Sara Briki, Ahmed Naem (Ahnae), Mohamed (moaln), Mohamed-moali, ESTEBAN Lucas, satp-odoo, Julien Piron, Jean Schoenlaub, Simon Dumoulin (sidum), Dhananjay Brahmane, yogietama, Abdelrahman Gad (abgad), Ramez Ibrahim
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- hr_holidays_attendance, hr_timesheet_attendance, test_discuss_full
- Description
This module aims to manage employee's attendances. ================================================== Keeps account of the attendances of the employees on the basis of the actions(Check in/Check out) performed by them.
Code Analysis
Views touched (24)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_attendance.public_kiosk_mode |
Attendance Kiosk | ir.ui.view | qweb | New |
hr_attendance_create_view_form |
hr.attendance.create.form | hr.attendance | form | Inherits hr_attendance.hr_attendance_view_form |
hr_attendance_employee_calendar_view |
hr.attendance.employee.calendar.view | hr.attendance | calendar | New |
hr_attendance_employee_simple_form_view |
hr.attendance.form | hr.attendance | form | Inherits hr_attendance.hr_attendance_view_form |
hr_attendance_management_view_filter |
hr_attendance_management_view_filter | hr.attendance | search | New |
hr_attendance_my_calendar_view |
hr.attendance.my.calendar | hr.attendance | calendar | New |
hr_attendance_my_form_view |
hr.attendance.my.form | hr.attendance | form | Inherits hr_attendance_view_form |
hr_attendance_view_filter |
hr_attendance_view_filter | hr.attendance | search | New |
hr_attendance_view_form |
hr.attendance.form | hr.attendance | form | New |
hr_attendance_view_graph |
hr.attendance.graph | hr.attendance | graph | New |
hr_attendance_view_pivot |
hr.attendance.pivot | hr.attendance | pivot | New |
hr_contract_template_view_form |
hr.contract.template.view.form.inherit.hr_holidays_attendance | hr.version | form | Inherits hr.hr_contract_template_form_view |
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | kanban | Inherits hr.hr_department_view_kanban |
hr_employee_public_view_form |
hr.employee.public.form.inherit.attendance | hr.employee.public | form | Inherits hr.hr_employee_public_view_form |
hr_employee_search_view |
hr.employee.search.view | hr.employee | search | Inherits hr.view_employee_filter |
hr_employees_view_kanban |
hr.employee.kanban | hr.employee | kanban | New |
hr_version_list_view_enhanced_hr_attendance_base |
hr.version.list.view.enhanced.hr.attendance.base | hr.version | list | Inherits hr.hr_version_list_view_enhanced |
hr_version_search_view_enhanced_hr_attendance |
hr.version.search.view.enhanced.hr.attendance | hr.version | search | Inherits hr.hr_version_search_view_enhanced |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.attendance | res.config.settings | form | Inherits base.res_config_settings_view_form |
view_attendance_tree |
hr.attendance.list | hr.attendance | list | New |
view_attendance_tree_management |
hr.attendance.list | hr.attendance | list | New |
view_employee_form_inherit_hr_attendance |
hr.employee | hr.employee | form | Inherits hr.view_employee_form |
view_employee_tree_inherit_leave |
hr.employee.list.leave | hr.employee | list | Inherits hr.view_employee_tree |
view_hr_attendance_kanban |
hr.attendance.kanban | hr.attendance | kanban | New |
HTTP endpoints (15)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/hr_attendance/create_employee |
HrAttendance.create_employee |
public | jsonrpc | ALL | |
/hr_attendance/attendance_employee_data |
HrAttendance.employee_attendance_data |
public | jsonrpc | ALL | sudo |
/hr_attendance/employees_infos |
HrAttendance.employees_infos |
public | jsonrpc | ALL | sudo |
/hr_attendance/get_employees_without_badge |
HrAttendance.get_employees_without_badge |
public | jsonrpc | ALL | |
/hr_attendance/kiosk_keepalive |
HrAttendance.kiosk_keepalive |
user | jsonrpc | ALL | |
/hr_attendance/kiosk_mode_menu/<int:company_id> |
HrAttendance.kiosk_menu_item_action |
user | http | ALL | |
/hr_attendance/manual_selection |
HrAttendance.manual_selection |
public | jsonrpc | ALL | sudo |
/hr_attendance/<token> |
HrAttendance.open_kiosk_mode |
public | http | ALL | sudo website |
/hr_attendance/print_badge |
HrAttendance.print_badge |
user | http | ALL | |
/hr_attendance/attendance_barcode_scanned |
HrAttendance.scan_barcode |
public | jsonrpc | ALL | sudo |
/hr_attendance/set_settings |
HrAttendance.set_attendance_settings |
public | jsonrpc | ALL | |
/hr_attendance/set_badge |
HrAttendance.set_badge |
public | jsonrpc | ALL | |
/hr_attendance/systray_check_in_out |
HrAttendance.systray_attendance |
user | jsonrpc | ALL | |
/hr_attendance/update_break_duration |
HrAttendance.update_break_duration |
public | jsonrpc | ALL | sudo |
/hr_attendance/attendance_user_data |
HrAttendance.user_attendance_data |
user | jsonrpc | ALL |
Models touched (11)
New fields (37)
-
attendance_manager_idMany2one → res.usersexport_string_translation=Falserelated='employee_id.attendance_manager_id' args: 'res.users' -
break_durationFloathelp='Extra unpaid break duration (hours)'string='Break Duration'tracking=True -
can_editBooleancompute='_compute_can_edit' -
check_inDatetimedefault=fields.Datetime.nowindex=Truerequired=Truestring='Check In'tracking=True -
check_outDatetimestring='Check Out'tracking=True -
colorIntegercompute='_compute_color'export_string_translation=False -
dateDatecompute='_compute_date'index=Trueprecompute=Truerequired=Truestore=Truestring='Date' -
day_of_dateSelectioncompute='_compute_day_of_date'index=Trueselection=[('0', 'Monday'), ('1', 'Tuesday'), ('2', 'Wednesday'), ('3', 'Thursday'), ('4', 'Friday'), ('5', 'Saturday'), ('6', 'Sunday')]store=Truestring='Day' -
department_idMany2one → hr.departmentreadonly=Truerelated='employee_id.department_id'string='Department' args: 'hr.department' -
device_tracking_enabledBooleanrelated='employee_id.company_id.attendance_device_tracking' -
employee_idMany2one → hr.employeedefault=_default_employeeindex=Trueondelete='cascade'required=Truestring='Employee' args: 'hr.employee' -
in_browserCharreadonly=Truestring='Browser' -
in_imageBinarystring='Check-In Image' -
in_ip_addressCharreadonly=Truestring='IP Address' -
in_latitudeFloataggregator=Nonedigits=(10, 7)readonly=Truestring='Latitude' -
in_locationCharhelp='Based on GPS-Coordinates if available or on IP Address' -
in_longitudeFloataggregator=Nonedigits=(10, 7)readonly=Truestring='Longitude' -
in_modeSelectiondefault='manual'readonly=Trueselection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual'), ('technical', 'Technical')]string='Mode' -
is_managerBooleancompute='_compute_is_manager' -
is_ownBooleancompute='_compute_is_manager' -
manager_idMany2one → hr.employeecomodel_name='hr.employee'export_string_translation=Falsereadonly=Truerelated='employee_id.parent_id' -
out_browserCharreadonly=True -
out_ip_addressCharreadonly=True -
out_latitudeFloataggregator=Nonedigits=(10, 7)readonly=True -
out_locationCharhelp='Based on GPS-Coordinates if available or on IP Address' -
out_longitudeFloataggregator=Nonedigits=(10, 7)readonly=True -
out_modeSelectiondefault='manual'readonly=Trueselection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual'), ('technical', 'Technical'), ('auto_check_out', 'Automatic Check-Out')] -
overtime_attendance_idsOne2many → hr.attendanceargs: 'hr.attendance', 'source_attendance_id' -
resource_calendar_idMany2onerelated='employee_id.resource_calendar_id'string='Working Schedule' -
source_attendance_idMany2one → hr.attendanceindex=True args: 'hr.attendance' -
source_staleBooleancopy=Falsedefault=Falseexport_string_translation=False -
stateSelectioncopy=Falsedefault='draft'index=Truereadonly=Truerequired=Truestring='Status'tracking=True args: [('draft', 'Draft'), ('validated', 'Validated'), ('refused', 'Refused')] -
time_rule_idMany2one → hr.time.ruleindex=True args: 'hr.time.rule' -
wet_colorIntegerexport_string_translation=Falserelated='work_entry_type_id.color'string='Work Entry Color' -
wet_display_codeCharexport_string_translation=Falserelated='work_entry_type_id.display_code' -
work_entry_type_idMany2one → hr.work.entry.typedefault=<expr>index=Truerequired=Truestring='Time Type' args: 'hr.work.entry.type' -
worked_hoursFloatcompute='_compute_worked_hours'readonly=Truestore=Truestring='Worked Hours'
-
action_in_attendance_maps(self) -
action_mark_reviewed(self) -
action_out_attendance_maps(self) -
action_refuse(self) -
action_reset_to_draft(self) -
action_try_kiosk(self) -
action_validate(self) -
copy(self, default=None) -
create(self, vals_list)@api.model_create_multi -
get_kiosk_url(self) -
get_unusual_days(self, date_from, date_to=None)@api.model -
has_demo_data(self)@api.model -
init(self) -
write(self, vals)
New fields (16)
-
attendance_basedBooleangroups='hr.group_hr_user'inherited=Truereadonly=Falserelated='version_id.attendance_based' -
attendance_idsOne2many → hr.attendancegroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance', 'employee_id' -
attendance_manager_idMany2one → res.userscompute='_compute_attendance_manager'domain=_get_attendance_manager_domaingroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer'help='The user set in Attendance will access the attendance of the employee through the dedicated app and will be able to edit them.'readonly=Falsestore=Truestring='Attendance Approver' args: 'res.users' -
attendance_stateSelectioncompute='_compute_attendance_state'groups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user'selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')]string='Attendance Status' -
display_attendancesBooleancompute='_compute_display_attendances' -
hours_last_monthFloatcompute='_compute_hours_last_month' -
hours_last_month_displayCharcompute='_compute_hours_last_month'groups='hr.group_hr_user,hr_attendance.group_hr_attendance_officer' -
hours_last_month_overtimeFloatcompute='_compute_hours_last_month' -
hours_previously_todayFloatcompute='_compute_hours_today'groups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user' -
hours_todayFloatcompute='_compute_hours_today'groups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user' -
last_attendance_idMany2one → hr.attendancecompute='_compute_last_attendance_id'groups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user'index='btree_not_null'store=True args: 'hr.attendance' -
last_attendance_worked_hoursFloatcompute='_compute_hours_today'groups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user' -
last_check_inDatetimegroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user'related='last_attendance_id.check_in'store=Truetracking=False -
last_check_outDatetimegroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user'related='last_attendance_id.check_out'store=Truetracking=False -
today_attendance_idsMany2many → hr.attendancecompute='_compute_hours_today'groups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance' -
total_overtimeFloatcompute='_compute_total_overtime'
-
action_archive(self) -
action_open_last_month_attendances(self) -
create(self, vals_list)@api.model_create_multi -
get_attendance_data_by_employee(self, date_start, date_stop) -
open_barcode_scanner(self) -
write(self, vals)
New fields (10)
-
attendance_manager_idMany2onegroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer'related='employee_id.attendance_manager_id' -
attendance_stateSelectiongroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer'readonly=Truerelated='employee_id.attendance_state' -
display_attendancesBooleanrelated='employee_id.display_attendances' -
hours_last_monthFloatrelated='employee_id.hours_last_month' -
hours_last_month_overtimeFloatrelated='employee_id.hours_last_month_overtime' -
hours_todayFloatgroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer'readonly=Truerelated='employee_id.hours_today' -
last_attendance_idMany2onegroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer'readonly=Truerelated='employee_id.last_attendance_id' -
last_check_inDatetimegroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer'related='employee_id.last_check_in' -
last_check_outDatetimegroups='hr_attendance.group_hr_attendance_own,hr_attendance.group_hr_attendance_officer'related='employee_id.last_check_out' -
total_overtimeFloatreadonly=Truerelated='employee_id.total_overtime'
-
action_open_last_month_attendances(self)
New fields (1)
-
condition_work_entry_type_idsMany2manydefault=<expr>
No public methods.
New fields (1)
-
attendance_basedBooleandefault=<expr>groups='hr.group_hr_user'help="When enabled, payslips are computed from badge records rather than the employee's work schedule. Time off is always accounted for."string='Attendance Based'
No public methods.
New fields (0)
No new fields.
Public methods (1)-
lazy_session_info(self)@api.model
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (20)
-
absence_managementBooleandefault=Falsestring='Absence Management' -
attendance_barcode_sourceSelectiondefault='front'string='Barcode Source' args: [('scanner', 'Scanner'), ('front', 'Front Camera'), ('back', 'Back Camera')] -
attendance_basedBooleandefault=Falsegroups='hr.group_hr_user' -
attendance_break_managementBooleanhelp='If enabled, employees can record their total break duration after checking out.'string='Break Management on Checkout' -
attendance_capture_check_inBooleandefault=Falsestring='Take Pictures on Check-In' -
attendance_device_trackingBooleandefault=Falsestring='Device & Location Tracking' -
attendance_from_systrayBooleandefault=Truestring='Attendance From Systray' -
attendance_kiosk_delayIntegerdefault=10 -
attendance_kiosk_keyCharcopy=Falsedefault=<expr>groups='hr_attendance.group_hr_attendance_user'init_storage='_init_column_attendance_kiosk_key' -
attendance_kiosk_modeSelectiondefault='barcode_manual'string='Attendance Mode' args: [('barcode', 'Barcode / RFID'), ('barcode_manual', 'Barcode / RFID and Manual Selection'), ('manual', 'Manual Selection')] -
attendance_kiosk_urlCharcompute='_compute_attendance_kiosk_url' -
attendance_kiosk_use_pinBooleanstring='Employee PIN Identification' -
attendance_validationSelectiondefault='no_validation'string='Attendance Validation' args: [('no_validation', 'Worked days are automatically approved'), ('manual_validation', 'Worked days require manual approval'), ('tolerance_validation', 'Worked days require approval if outside tolerance')] -
attendance_validation_toleranceFloatdefault=0.0string='Validation Tolerance (Hours)' -
attendance_work_entry_type_idMany2one → hr.work.entry.typecompute='_compute_attendance_work_entry_type_id'domain=[('count_as', '=', 'working_time')]groups='hr.group_hr_user'help='Work entry type assigned to attendances and read by the time rule engine.'readonly=Falsestore=Truestring='Attendance Time Type' args: 'hr.work.entry.type' -
auto_check_outBooleandefault=Falsestring='Automatic Check Out' -
auto_check_out_modeSelectiondefault='tolerance' args: [('tolerance', 'Tolerance'), ('specific_time', 'Specific Time')] -
auto_check_out_specific_timeFloatdefault=20.0export_string_translation=False -
auto_check_out_toleranceFloatdefault=2export_string_translation=False -
single_check_inBooleanstring='Single Check-In Attendance System'
No public methods.
New fields (19)
-
absence_managementBooleanreadonly=Falserelated='company_id.absence_management' -
attendance_barcode_sourceSelectionreadonly=Falserelated='company_id.attendance_barcode_source' -
attendance_basedBooleangroups='hr.group_hr_user'readonly=Falserelated='company_id.attendance_based'string='Default Tracking' -
attendance_break_managementBooleanreadonly=Falserelated='company_id.attendance_break_management' -
attendance_capture_check_inBooleanreadonly=Falserelated='company_id.attendance_capture_check_in' -
attendance_device_trackingBooleanreadonly=Falserelated='company_id.attendance_device_tracking' -
attendance_from_systrayBooleanreadonly=Falserelated='company_id.attendance_from_systray' -
attendance_kiosk_delayIntegerreadonly=Falserelated='company_id.attendance_kiosk_delay' -
attendance_kiosk_modeSelectionreadonly=Falserelated='company_id.attendance_kiosk_mode' -
attendance_kiosk_urlCharrelated='company_id.attendance_kiosk_url' -
attendance_kiosk_use_pinBooleanreadonly=Falserelated='company_id.attendance_kiosk_use_pin' -
attendance_validationSelectionreadonly=Falserelated='company_id.attendance_validation' -
attendance_validation_toleranceFloatreadonly=Falserelated='company_id.attendance_validation_tolerance' -
attendance_work_entry_type_idMany2onereadonly=Falserelated='company_id.attendance_work_entry_type_id' -
auto_check_outBooleanreadonly=Falserelated='company_id.auto_check_out' -
auto_check_out_modeSelectionreadonly=Falserelated='company_id.auto_check_out_mode' -
auto_check_out_specific_timeFloatreadonly=Falserelated='company_id.auto_check_out_specific_time' -
auto_check_out_toleranceFloatreadonly=Falserelated='company_id.auto_check_out_tolerance' -
single_check_inBooleanreadonly=Falserelated='company_id.single_check_in'
-
regenerate_kiosk_key(self) -
set_values(self)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…