Attendances

hr_attendance
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources/Attendances
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Fabien Pinckaers, Thibault Delavallée, Xavier Morel, Nicolas Martinelli, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Luis Torres, Sébastien Theys, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Romain Estievenart, Miquel Raïch, Ahmad Khanalizadeh, Dossogne Bertrand, Gaetan Vanden Bergh (gavb), Louis Wicket (wil), Yash Vaishnav, Dylan Kiss (dyki), Mayurrajsinh Rathod, Odoo, Xavier Bol (xbo), Walid (wasa), Mélanie, Youssef Bashandy, reka-odoo, jugj-odoo, Tanguy Quéguineur, Martin Trigaux (mat), nihp-odoo, rmun-odoo, aamo-odoo, thle-odoo, Mathieu Coutant, kais-odoo, Abdelrahman Mahmoud (amah), Léo Gizard, ahta, sben-odoo, Ezzuldin Zaky (ezza), Bastien PIERRE, Anton Romanova (roan), Krzysztof Magusiak (krma), Mahdi Alijani (malj), Ajit Singh, krip-odoo, Hazem Ibrahim, Harrison Hutton, Maeva De Keyser (MDEK), pajo, Bertrand Dossogne, romc-odoo, adip-odoo, Quentin Colla (qucol), path-odoo, Ayush Modi, lrizzi1, Amr Elkhatieb, assh-odoo, Elliot ELCO, khom-odoo, renol-odoo, saurabh, Federico Falcone, Jurgen Gjini, lebm-odoo, Mahmoudk3m, Martin Lefèvre (mlef), karygauss03, djsh-odoo, Yahia, K, chpa-odoo, Kishan (kiga), amga-odoo, Ziri, Nat (naja), Mohammed Farouk, hamza, SurryaT10, Mélanie Peyrat (mepe), Ahmed Naem (Ahnae), Mohamed-moali, ESTEBAN Lucas, arpi-odoo, Mohamed (moaln), satp-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
    - barcodes
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (25)
XML IDNameModelTypeStatus
expected_hours_from_contract_no expected_hours_from_contract_no ir.ui.view qweb New
expected_hours_from_contract_yes expected_hours_from_contract_yes ir.ui.view qweb New
hr_attendance.public_kiosk_mode Attendance Kiosk ir.ui.view qweb New
hr_attendance_employee_simple_form_view hr.attendance.form hr.attendance field Inherits hr_attendance.hr_attendance_view_form
hr_attendance_employee_simple_tree_view hr.attendance.list hr.attendance list New
hr_attendance_management_view_filter hr_attendance_management_view_filter hr.attendance search New
hr_attendance_overtime_rule_view_form hr.attendance.overtime.rule.form hr.attendance.overtime.rule form New
hr_attendance_overtime_rule_view_list hr.attendance.overtime.rule.list hr.attendance.overtime.rule list New
hr_attendance_overtime_ruleset_view_filter hr_attendance_overtime_ruleset_view_filter hr.attendance.overtime.ruleset search New
hr_attendance_overtime_ruleset_view_form hr.attendance.overtime.ruleset.form hr.attendance.overtime.ruleset form New
hr_attendance_overtime_ruleset_view_list hr.attendance.overtime.ruleset.list hr.attendance.overtime.ruleset list New
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_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employee_public_view_form hr.employee.public.form.inherit.attendance hr.employee.public xpath Inherits hr.hr_employee_public_view_form
hr_employee_search_view hr.employee.search.view hr.employee xpath Inherits hr.view_employee_filter
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath 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 button Inherits hr.view_employee_form
view_employee_tree_inherit_leave hr.employee.list.leave hr.employee xpath Inherits hr.view_employee_tree
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (11)

New fields (28)
  • attendance_manager_id Many2one → res.users
    export_string_translation=False related='employee_id.attendance_manager_id' args: 'res.users'
  • check_in Datetime
    default=fields.Datetime.now index=True required=True string='Check In' tracking=True
  • check_out Datetime
    string='Check Out' tracking=True
  • color Integer
    compute='_compute_color'
  • date Date
    compute='_compute_date' index=True precompute=True required=True store=True string='Date'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • device_tracking_enabled Boolean
    related='employee_id.company_id.attendance_device_tracking'
  • employee_id Many2one → hr.employee
    default=_default_employee group_expand='_read_group_employee_id' index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • expected_hours Float
    aggregator='sum' compute='_compute_expected_hours' store=True string='Regular Hours'
  • in_browser Char
    readonly=True string='Browser'
  • in_ip_address Char
    readonly=True string='IP Address'
  • in_latitude Float
    aggregator=None digits=(10, 7) readonly=True string='Latitude'
  • in_location Char
    help='Based on GPS-Coordinates if available or on IP Address'
  • in_longitude Float
    aggregator=None digits=(10, 7) readonly=True string='Longitude'
  • in_mode Selection
    default='manual' readonly=True selection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual'), ('technical', 'Technical')] string='Mode'
  • is_manager Boolean
    compute='_compute_is_manager'
  • linked_overtime_ids Many2many → hr.attendance.overtime.line
    compute='_compute_linked_overtime_ids' readonly=False args: 'hr.attendance.overtime.line'
  • manager_id Many2one → hr.employee
    comodel_name='hr.employee' export_string_translation=False readonly=True related='employee_id.parent_id'
  • out_browser Char
    readonly=True
  • out_ip_address Char
    readonly=True
  • out_latitude Float
    aggregator=None digits=(10, 7) readonly=True
  • out_location Char
    help='Based on GPS-Coordinates if available or on IP Address'
  • out_longitude Float
    aggregator=None digits=(10, 7) readonly=True
  • out_mode Selection
    default='manual' readonly=True selection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual'), ('technical', 'Technical'), ('auto_check_out', 'Automatic Check-Out')]
  • overtime_hours Float
    compute='_compute_overtime_hours' store=True string='Over Time'
  • overtime_status Selection
    compute='_compute_overtime_status' readonly=False selection=[('to_approve', 'To Approve'), ('approved', 'Approved'), ('refused', 'Refused')] store=True tracking=True
  • validated_overtime_hours Float
    compute='_compute_validated_overtime_hours' readonly=True store=True string='Extra Hours' tracking=True
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (11)
  • action_approve_overtime(self)
  • action_in_attendance_maps(self)
  • action_out_attendance_maps(self)
  • action_refuse_overtime(self)
  • action_try_kiosk(self)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • get_kiosk_url(self)
  • has_demo_data(self)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (11)
  • amount_rate Float
    default=1.0 required=True args: 'Overtime pay rate'
  • company_id Many2one
    related='employee_id.company_id'
  • date Date
    index=True required=True string='Day'
  • duration Float
    default=0.0 required=True string='Extra Hours'
  • employee_id Many2one → hr.employee
    index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • is_manager Boolean
    compute='_compute_is_manager'
  • manual_duration Float
    compute='_compute_manual_duration' readonly=False store=True string='Extra Hours (encoded)'
  • rule_ids Many2many → hr.attendance.overtime.rule
    string='Applied Rules' args: 'hr.attendance.overtime.rule'
  • status Selection
    compute='_compute_status' precompute=True readonly=False required=True store=True args: [('to_approve', 'To Approve'), ('approved', 'Approved'), ('refused', 'Refused')]
  • time_start Datetime
    string='Start'
  • time_stop Datetime
    string='Stop'
Public methods (3)
  • action_approve(self)
  • action_refuse(self)
  • write(self, vals)

New fields (18)
  • amount_rate Float
    default=1.0 args: 'Rate'
  • base_off Selection
    default='quantity' help="Base for overtime calculation.\nUse 'Quantity' when overtime hours are those in excess of a certain amount per day/week.\nUse 'Timing' when overtime hours happen on specific days or at specific times" required=True string='Based Off' args: [('quantity', 'Quantity'), ('timing', 'Timing')]
  • company_id Many2one
    related='ruleset_id.company_id'
  • description Html
  • employee_tolerance Float
  • employer_tolerance Float
  • expected_hours Float
    string='Usual work hours'
  • expected_hours_from_contract Boolean
    default=True help='The attendance can go into negative extra hours to represent the missing hours compared to what is expected if the Absence Management setting is enabled.' args: 'Hours from employee schedule'
  • information_display Char
    compute='_compute_information_display' args: 'Information'
  • name Char
    required=True
  • paid Boolean
    args: 'Pay Extra Hours'
  • quantity_period Selection
    default='day' args: [('day', 'Day'), ('week', 'Week')]
  • resource_calendar_id Many2one → resource.calendar
    domain=[('flexible_hours', '=', False)] string='Schedule' args: 'resource.calendar'
  • ruleset_id Many2one → hr.attendance.overtime.ruleset
    index=True required=True args: 'hr.attendance.overtime.ruleset'
  • sequence Integer
    default=10
  • timing_start Float
    default=0 args: 'From'
  • timing_stop Float
    default=24 args: 'To'
  • timing_type Selection
    default='work_days' args: [('work_days', 'On any working day'), ('non_work_days', 'On any non-working day'), ('leave', 'When employee is off'), ('schedule', 'Outside of a specific schedule')]
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True readonly=False
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • country_id Many2one → res.country
    default=<expr> args: 'res.country'
  • description Html
  • name Char
    required=True
  • rate_combination_mode Selection
    default='max' help='Controls how the rates from the different rules that apply are combined.\n Max: use the highest rate. (e.g.: combined for 150% and 120 = 150%)\n Sum: sum the *extra* pay (i.e. above 100%).\n e.g.: combined rate for 150% & 120% = 100% (baseline) + (150-100)% + (120-100)% = 170%\n' required=True string='Rate Combination Mode' args: [('max', 'Maximum Rate'), ('sum', 'Sum of all rates')]
  • rule_ids One2many → hr.attendance.overtime.rule
    args: 'hr.attendance.overtime.rule', 'ruleset_id'
  • rules_count Integer
    compute='_compute_rules_count'
Public methods (1)
  • action_regenerate_overtimes(self)

New fields (16)
  • attendance_ids One2many → hr.attendance
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance', 'employee_id'
  • attendance_manager_id Many2one → res.users
    domain="[('share', '=', False), ('company_ids', 'in', company_id)]" groups='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=False store=True string='Attendance Approver' args: 'res.users'
  • attendance_state Selection
    compute='_compute_attendance_state' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • display_extra_hours Boolean
    related='company_id.hr_attendance_display_overtime'
  • hours_last_month Float
    compute='_compute_hours_last_month'
  • hours_last_month_display Char
    compute='_compute_hours_last_month' groups='hr.group_hr_user'
  • hours_last_month_overtime Float
    compute='_compute_hours_last_month'
  • hours_previously_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • hours_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' store=True args: 'hr.attendance'
  • last_attendance_worked_hours Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' related='last_attendance_id.check_in' store=True tracking=False
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' related='last_attendance_id.check_out' store=True tracking=False
  • overtime_ids One2many → hr.attendance.overtime.line
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance.overtime.line', 'employee_id'
  • ruleset_id Many2one
    groups='hr.group_hr_manager' inherited=True readonly=False related='version_id.ruleset_id'
  • total_overtime Float
    compute='_compute_total_overtime'
Public methods (6)
  • action_archive(self)
  • action_open_last_month_attendances(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_overtime_data(self, domain=None, employee_id=None)
    @api.model
  • open_barcode_scanner(self)
  • write(self, vals)

New fields (10)
  • attendance_manager_id Many2one
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.attendance_manager_id'
  • attendance_state Selection
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.attendance_state'
  • display_extra_hours Boolean
    related='company_id.hr_attendance_display_overtime'
  • hours_last_month Float
    related='employee_id.hours_last_month'
  • hours_last_month_overtime Float
    related='employee_id.hours_last_month_overtime'
  • hours_today Float
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.hours_today'
  • last_attendance_id Many2one
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.last_attendance_id'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.last_check_in'
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.last_check_out'
  • total_overtime Float
    readonly=True related='employee_id.total_overtime'
Public methods (1)
  • action_open_last_month_attendances(self)

New fields (1)
  • ruleset_id Many2one → hr.attendance.overtime.ruleset
    default=<expr> domain=_domain_current_countries groups='hr.group_hr_manager' tracking=True args: 'hr.attendance.overtime.ruleset'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • lazy_session_info(self)
    @api.model

New fields (15)
  • absence_management Boolean
    default=False string='Absence Management'
  • attendance_barcode_source Selection
    default='front' string='Barcode Source' args: [('scanner', 'Scanner'), ('front', 'Front Camera'), ('back', 'Back Camera')]
  • attendance_device_tracking Boolean
    default=False string='Device & Location Tracking'
  • attendance_from_systray Boolean
    default=False string='Attendance From Systray'
  • attendance_kiosk_delay Integer
    default=10
  • attendance_kiosk_key Char
    copy=False default=<expr> groups='hr_attendance.group_hr_attendance_user'
  • attendance_kiosk_mode Selection
    default='barcode_manual' string='Attendance Mode' args: [('barcode', 'Barcode / RFID'), ('barcode_manual', 'Barcode / RFID and Manual Selection'), ('manual', 'Manual Selection')]
  • attendance_kiosk_url Char
    compute='_compute_attendance_kiosk_url'
  • attendance_kiosk_use_pin Boolean
    string='Employee PIN Identification'
  • attendance_overtime_validation Selection
    default='no_validation' string='Extra Hours Validation' args: [('no_validation', 'Automatically Approved'), ('by_manager', 'Approved by Manager')]
  • auto_check_out Boolean
    default=False string='Automatic Check Out'
  • auto_check_out_tolerance Float
    default=2 export_string_translation=False
  • hr_attendance_display_overtime Boolean
    string='Display Extra Hours'
  • overtime_company_threshold Integer
    default=0 string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    default=0 string='Tolerance Time In Favor Of Employee'
Public methods (1)
  • write(self, vals)

New fields (14)
  • absence_management Boolean
    readonly=False related='company_id.absence_management'
  • attendance_barcode_source Selection
    readonly=False related='company_id.attendance_barcode_source'
  • attendance_device_tracking Boolean
    readonly=False related='company_id.attendance_device_tracking'
  • attendance_from_systray Boolean
    readonly=False related='company_id.attendance_from_systray'
  • attendance_kiosk_delay Integer
    readonly=False related='company_id.attendance_kiosk_delay'
  • attendance_kiosk_mode Selection
    readonly=False related='company_id.attendance_kiosk_mode'
  • attendance_kiosk_url Char
    related='company_id.attendance_kiosk_url'
  • attendance_kiosk_use_pin Boolean
    readonly=False related='company_id.attendance_kiosk_use_pin'
  • attendance_overtime_validation Selection
    readonly=False related='company_id.attendance_overtime_validation'
  • auto_check_out Boolean
    readonly=False related='company_id.auto_check_out'
  • auto_check_out_tolerance Float
    readonly=False related='company_id.auto_check_out_tolerance'
  • hr_attendance_display_overtime Boolean
    readonly=False related='company_id.hr_attendance_display_overtime'
  • overtime_company_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Employee'
Public methods (3)
  • get_values(self)
    @api.model
  • regenerate_kiosk_key(self)
  • set_values(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources/Attendances
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Nicolas Martinelli, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Luis Torres, Julien Mougenot, svs-odoo, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, William Braeckman, Ahmad Khanalizadeh, sofiagvaladze, Abdelouahab (abla), Dossogne Bertrand, luvi, Vincent Larcin, Thomas Lefebvre (thle), Gaetan Vanden Bergh (gavb), Louis Wicket (wil), Victor Piryns (pivi), Yash Vaishnav, Mahamadasif Ansari, Levi Siuzdak (sile), Dylan Kiss (dyki), Simon Goffaux (sigo), Mahdi Cheikh Rouhou (macr), omra-odoo, Walid (wasa), kdeb@odoo.com, Mattis Megevand, Mélanie, Youssef Bashandy, Ethan Vincent, Maryam Kia, jugj-odoo, Abderraouf Ghrissi (abgh), Bastien Fafchamps (bafa), mega, Tanguy Quéguineur, nihp-odoo, Chrysanthe (chgo), sami odoo, Louis (wil), aamo-odoo, thle-odoo, Mathieu Coutant, kais-odoo, Abdelrahman Mahmoud (amah), sabr, Léo Gizard, ahta, sben-odoo, Ezzuldin Zaky (ezza), Chris Duvivier, Pierre Pulinckx (pipu), bona-odoo, Krzysztof Magusiak (krma), Ajit Singh, Harrison Hutton, Maeva De Keyser (MDEK), Bertrand Dossogne, romc-odoo, adip-odoo, ksar-odoo, dhka-odoo, Einar Andersen (eian), renol-odoo, Jurgen Gjini, karygauss03, djsh-odoo, Manal El Kaidi (maelk), Yahia, UemuS, K
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (21)
XML IDNameModelTypeStatus
hr_attendance.public_kiosk_mode Attendance Kiosk ir.ui.view qweb New
hr_attendance_employee_simple_tree_view hr.attendance.list hr.attendance list New
hr_attendance_management_view_filter hr_attendance_management_view_filter hr.attendance search New
hr_attendance_overtime_view_pivot hr.attendance.overtime.pivot hr.attendance.overtime pivot New
hr_attendance_validated_hours_employee_simple_tree_view hr.attendance.list hr.attendance list New
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_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
hr_user_view_form hr.user.preferences.view.form.attendance.inherit res.users xpath Inherits hr.res_users_view_form_profile
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_overtime_graph hr.attendance.overtime.graph hr.attendance.overtime graph New
view_attendance_overtime_search hr.attendance.overtime.search hr.attendance.overtime search New
view_attendance_overtime_tree hr.attendance.overtime.list hr.attendance.overtime list New
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 xpath Inherits hr.view_employee_form
view_employee_tree_inherit_leave hr.employee.list.leave hr.employee xpath Inherits hr.view_employee_tree
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (9)

New fields (26)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In' tracking=True
  • check_out Datetime
    string='Check Out' tracking=True
  • color Integer
    compute='_compute_color'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee group_expand='_read_group_employee_id' index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • expected_hours Float
    aggregator='sum' compute='_compute_expected_hours' store=True string='Regular Hours'
  • in_browser Char
    readonly=True string='Browser'
  • in_city Char
    readonly=True string='City'
  • in_country_name Char
    help='Based on IP Address' readonly=True string='Country'
  • in_ip_address Char
    readonly=True string='IP Address'
  • in_latitude Float
    aggregator=None digits=(10, 7) readonly=True string='Latitude'
  • in_longitude Float
    aggregator=None digits=(10, 7) readonly=True string='Longitude'
  • in_mode Selection
    default='manual' readonly=True selection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual'), ('technical', 'Technical')] string='Mode'
  • manager_id Many2one → hr.employee
    comodel_name='hr.employee' export_string_translation=False readonly=True related='employee_id.parent_id'
  • no_validated_overtime_hours Boolean
    compute='_compute_no_validated_overtime_hours'
  • out_browser Char
    readonly=True
  • out_city Char
    readonly=True
  • out_country_name Char
    help='Based on IP Address' readonly=True
  • out_ip_address Char
    readonly=True
  • out_latitude Float
    aggregator=None digits=(10, 7) readonly=True
  • out_longitude Float
    aggregator=None digits=(10, 7) readonly=True
  • out_mode Selection
    default='manual' readonly=True selection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual'), ('technical', 'Technical'), ('auto_check_out', 'Automatic Check-Out')]
  • overtime_hours Float
    compute='_compute_overtime_hours' store=True string='Worked Extra Hours'
  • overtime_status Selection
    compute='_compute_overtime_status' readonly=False selection=[('to_approve', 'To Approve'), ('approved', 'Approved'), ('refused', 'Refused')] store=True tracking=True
  • validated_overtime_hours Float
    compute='_compute_validated_overtime_hours' readonly=False store=True string='Validated Extra Hours' tracking=True
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (11)
  • action_approve_overtime(self)
  • action_in_attendance_maps(self)
  • action_out_attendance_maps(self)
  • action_refuse_overtime(self)
  • action_try_kiosk(self)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • get_kiosk_url(self)
  • has_demo_data(self)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (6)
  • adjustment Boolean
    default=False
  • company_id Many2one
    related='employee_id.company_id'
  • date Date
    string='Day'
  • duration Float
    default=0.0 required=True string='Extra Hours'
  • duration_real Float
    default=0.0 help='Extra-hours including the threshold duration' string='Extra Hours (Real)'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
Public methods (1)
  • init(self)

New fields (13)
  • attendance_ids One2many → hr.attendance
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance', 'employee_id'
  • attendance_manager_id Many2one → res.users
    domain="[('share', '=', False), ('company_ids', 'in', company_id)]" groups='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=False store=True args: 'res.users'
  • attendance_state Selection
    compute='_compute_attendance_state' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • hours_last_month Float
    compute='_compute_hours_last_month' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • hours_last_month_display Char
    compute='_compute_hours_last_month' groups='hr.group_hr_user'
  • hours_previously_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • hours_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' store=True args: 'hr.attendance'
  • last_attendance_worked_hours Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' related='last_attendance_id.check_in' store=True tracking=False
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' related='last_attendance_id.check_out' store=True tracking=False
  • overtime_ids One2many → hr.attendance.overtime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance.overtime', 'employee_id'
  • total_overtime Float
    compute='_compute_total_overtime' compute_sudo=True groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
Public methods (5)
  • action_archive(self)
  • action_open_last_month_attendances(self)
  • action_open_last_month_overtime(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • attendance_manager_id Many2one
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.attendance_manager_id'
  • attendance_state Selection
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.attendance_state'
  • hours_today Float
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.hours_today'
  • last_attendance_id Many2one
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.last_attendance_id'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.last_check_in'
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.last_check_out'
  • total_overtime Float
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.total_overtime'
Public methods (0)

No public methods.

New fields (14)
  • absence_management Boolean
    default=False string='Absence Management'
  • attendance_barcode_source Selection
    default='front' string='Barcode Source' args: [('scanner', 'Scanner'), ('front', 'Front Camera'), ('back', 'Back Camera')]
  • attendance_from_systray Boolean
    default=True string='Attendance From Systray'
  • attendance_kiosk_delay Integer
    default=10
  • attendance_kiosk_key Char
    copy=False default=<expr> groups='hr_attendance.group_hr_attendance_manager'
  • attendance_kiosk_mode Selection
    default='barcode_manual' string='Attendance Mode' args: [('barcode', 'Barcode / RFID'), ('barcode_manual', 'Barcode / RFID and Manual Selection'), ('manual', 'Manual Selection')]
  • attendance_kiosk_url Char
    compute='_compute_attendance_kiosk_url'
  • attendance_kiosk_use_pin Boolean
    string='Employee PIN Identification'
  • attendance_overtime_validation Selection
    default='no_validation' string='Extra Hours Validation' args: [('no_validation', 'Automatically Approved'), ('by_manager', 'Approved by Manager')]
  • auto_check_out Boolean
    default=False string='Automatic Check Out'
  • auto_check_out_tolerance Float
    default=2 export_string_translation=False
  • hr_attendance_display_overtime Boolean
    string='Display Extra Hours'
  • overtime_company_threshold Integer
    default=0 string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    default=0 string='Tolerance Time In Favor Of Employee'
Public methods (1)
  • write(self, vals)

New fields (13)
  • absence_management Boolean
    readonly=False related='company_id.absence_management'
  • attendance_barcode_source Selection
    readonly=False related='company_id.attendance_barcode_source'
  • attendance_from_systray Boolean
    readonly=False related='company_id.attendance_from_systray'
  • attendance_kiosk_delay Integer
    readonly=False related='company_id.attendance_kiosk_delay'
  • attendance_kiosk_mode Selection
    readonly=False related='company_id.attendance_kiosk_mode'
  • attendance_kiosk_url Char
    related='company_id.attendance_kiosk_url'
  • attendance_kiosk_use_pin Boolean
    readonly=False related='company_id.attendance_kiosk_use_pin'
  • attendance_overtime_validation Selection
    readonly=False related='company_id.attendance_overtime_validation'
  • auto_check_out Boolean
    readonly=False related='company_id.auto_check_out'
  • auto_check_out_tolerance Float
    readonly=False related='company_id.auto_check_out_tolerance'
  • hr_attendance_display_overtime Boolean
    readonly=False related='company_id.hr_attendance_display_overtime'
  • overtime_company_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Employee'
Public methods (3)
  • get_values(self)
    @api.model
  • regenerate_kiosk_key(self)
  • set_values(self)

New fields (8)
  • attendance_manager_id Many2one
    readonly=False related='employee_id.attendance_manager_id'
  • attendance_state Selection
    related='employee_id.attendance_state'
  • display_extra_hours Boolean
    related='company_id.hr_attendance_display_overtime'
  • hours_last_month Float
    related='employee_id.hours_last_month'
  • hours_last_month_display Char
    related='employee_id.hours_last_month_display'
  • last_check_in Datetime
    related='employee_id.last_attendance_id.check_in'
  • last_check_out Datetime
    related='employee_id.last_attendance_id.check_out'
  • total_overtime Float
    related='employee_id.total_overtime'
Public methods (3)
  • SELF_READABLE_FIELDS(self)
    @property
  • action_open_last_month_attendances(self)
  • action_open_last_month_overtime(self)

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources/Attendances
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Denis Ledoux, Xavier Morel, Goffin Simon, Aaron Bohy, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Luis Torres, Victor Feyens, Samuel Degueldre, Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, William Braeckman, Kevin Baptiste, odoo, Philippe Wauthy, sofiagvaladze, thcl-odoo, Abdelouahab (abla), Dossogne Bertrand, niyasraphy, nda-odoo, Thomas Lefebvre (thle), Louis Wicket (wil), althaf shaik, Victor Piryns (pivi), Yash Vaishnav, Mahamadasif Ansari, Levi Siuzdak (sile), Dylan Kiss (dyki), Bruno Boi, FrancoisGe, Chong Wang (cwg), Leloup Loïc (lole), Simon Goffaux (sigo), prye-odoo, Brieuc-brd, Mahdi Cheikh Rouhou (macr), ravb-odoo, Mattis Megevand, dasz, Mélanie, Ethan Vincent, jugj-odoo, Abderraouf Ghrissi (abgh), Tanguy Quéguineur, Ahmed Mohamed, Chrysanthe (chgo), sami odoo, Louis (wil), mano-odoo, aamo-odoo, Mathieu Coutant, Elisabeth Dickinson, Abdelrahman Mahmoud (amah), sabr, David Van Droogenbroeck (DROD), Pierre Pulinckx (pipu), K Theja (kthe), bona-odoo, Maeva De Keyser (MDEK), Bertrand Dossogne, ksar-odoo, dhka-odoo, hamzairfan, renol-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - phone_validation
    - mail
    - bus
    - web_tour
    - resource
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (16)
XML IDNameModelTypeStatus
hr_attendance.public_kiosk_mode Attendance Kiosk ir.ui.view qweb New
hr_attendance_employee_simple_tree_view hr.attendance.tree hr.attendance tree New
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_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
hr_user_view_form hr.user.preferences.view.form.attendance.inherit res.users xpath Inherits hr.res_users_view_form_profile
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_overtime_search hr.attendance.overtime.search hr.attendance.overtime search New
view_attendance_overtime_tree hr.attendance.overtime.tree hr.attendance.overtime tree New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_employee_form_inherit_hr_attendance hr.employee hr.employee xpath Inherits hr.view_employee_form
view_employee_tree_inherit_leave hr.employee.tree.leave hr.employee xpath Inherits hr.view_employee_tree
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (9)

New fields (21)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In' tracking=True
  • check_out Datetime
    string='Check Out' tracking=True
  • color Integer
    compute='_compute_color'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • in_browser Char
    readonly=True string='Browser'
  • in_city Char
    readonly=True string='City'
  • in_country_name Char
    help='Based on IP Address' readonly=True string='Country'
  • in_ip_address Char
    readonly=True string='IP Address'
  • in_latitude Float
    digits=(10, 7) readonly=True string='Latitude'
  • in_longitude Float
    digits=(10, 7) readonly=True string='Longitude'
  • in_mode Selection
    default='manual' readonly=True selection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual')] string='Mode'
  • out_browser Char
    readonly=True
  • out_city Char
    readonly=True
  • out_country_name Char
    help='Based on IP Address' readonly=True
  • out_ip_address Char
    readonly=True
  • out_latitude Float
    digits=(10, 7) readonly=True
  • out_longitude Float
    digits=(10, 7) readonly=True
  • out_mode Selection
    default='manual' readonly=True selection=[('kiosk', 'Kiosk'), ('systray', 'Systray'), ('manual', 'Manual')]
  • overtime_hours Float
    compute='_compute_overtime_hours' store=True string='Over Time'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (6)
  • action_in_attendance_maps(self)
  • action_out_attendance_maps(self)
  • copy(self, default=None)
    @api.returns('self', <expr>)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (6)
  • adjustment Boolean
    default=False
  • company_id Many2one
    related='employee_id.company_id'
  • date Date
    string='Day'
  • duration Float
    default=0.0 required=True string='Extra Hours'
  • duration_real Float
    default=0.0 help='Extra-hours including the threshold duration' string='Extra Hours (Real)'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
Public methods (1)
  • init(self)

New fields (13)
  • attendance_ids One2many → hr.attendance
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance', 'employee_id'
  • attendance_manager_id Many2one → res.users
    domain="[('share', '=', False), ('company_ids', 'in', company_id)]" groups='hr_attendance.group_hr_attendance_manager' 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=False store=True args: 'res.users'
  • attendance_state Selection
    compute='_compute_attendance_state' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • hours_last_month Float
    compute='_compute_hours_last_month' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • hours_last_month_display Char
    compute='_compute_hours_last_month'
  • hours_previously_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • hours_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' store=True args: 'hr.attendance'
  • last_attendance_worked_hours Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' related='last_attendance_id.check_in' store=True tracking=False
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' related='last_attendance_id.check_out' store=True tracking=False
  • overtime_ids One2many → hr.attendance.overtime
    groups='hr_attendance.group_hr_attendance_officer,hr.group_hr_user' args: 'hr.attendance.overtime', 'employee_id'
  • total_overtime Float
    compute='_compute_total_overtime' compute_sudo=True
Public methods (5)
  • action_archive(self)
  • action_open_last_month_attendances(self)
  • action_open_last_month_overtime(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • attendance_manager_id Many2one
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.attendance_manager_id'
  • attendance_state Selection
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.attendance_state'
  • hours_today Float
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.hours_today'
  • last_attendance_id Many2one
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.last_attendance_id'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.last_check_in'
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_officer' related='employee_id.last_check_out'
  • total_overtime Float
    groups='hr_attendance.group_hr_attendance_officer' readonly=True related='employee_id.total_overtime'
Public methods (0)

No public methods.

New fields (12)
  • attendance_barcode_source Selection
    default='front' string='Barcode Source' args: [('scanner', 'Scanner'), ('front', 'Front Camera'), ('back', 'Back Camera')]
  • attendance_from_systray Boolean
    default=True string='Attendance From Systray'
  • attendance_kiosk_delay Integer
    default=10
  • attendance_kiosk_key Char
    copy=False default=<expr> groups='hr_attendance.group_hr_attendance_manager'
  • attendance_kiosk_mode Selection
    default='barcode_manual' string='Attendance Mode' args: [('barcode', 'Barcode / RFID'), ('barcode_manual', 'Barcode / RFID and Manual Selection'), ('manual', 'Manual Selection')]
  • attendance_kiosk_url Char
    compute='_compute_attendance_kiosk_url'
  • attendance_kiosk_use_pin Boolean
    string='Employee PIN Identification'
  • hr_attendance_display_overtime Boolean
    string='Display Extra Hours'
  • hr_attendance_overtime Boolean
    string='Count Extra Hours'
  • overtime_company_threshold Integer
    default=0 string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    default=0 string='Tolerance Time In Favor Of Employee'
  • overtime_start_date Date
    string='Extra Hours Starting Date'
Public methods (1)
  • write(self, vals)

New fields (11)
  • attendance_barcode_source Selection
    readonly=False related='company_id.attendance_barcode_source'
  • attendance_from_systray Boolean
    readonly=False related='company_id.attendance_from_systray'
  • attendance_kiosk_delay Integer
    readonly=False related='company_id.attendance_kiosk_delay'
  • attendance_kiosk_mode Selection
    readonly=False related='company_id.attendance_kiosk_mode'
  • attendance_kiosk_url Char
    related='company_id.attendance_kiosk_url'
  • attendance_kiosk_use_pin Boolean
    readonly=False related='company_id.attendance_kiosk_use_pin'
  • hr_attendance_display_overtime Boolean
    readonly=False related='company_id.hr_attendance_display_overtime'
  • hr_attendance_overtime Boolean
    readonly=False string='Count Extra Hours'
  • overtime_company_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Employee'
  • overtime_start_date Date
    readonly=False string='Extra Hours Starting Date'
Public methods (3)
  • get_values(self)
    @api.model
  • regenerate_kiosk_key(self)
  • set_values(self)

New fields (8)
  • attendance_manager_id Many2one
    readonly=False related='employee_id.attendance_manager_id'
  • attendance_state Selection
    related='employee_id.attendance_state'
  • display_extra_hours Boolean
    related='company_id.hr_attendance_display_overtime'
  • hours_last_month Float
    related='employee_id.hours_last_month'
  • hours_last_month_display Char
    related='employee_id.hours_last_month_display'
  • last_check_in Datetime
    related='employee_id.last_attendance_id.check_in'
  • last_check_out Datetime
    related='employee_id.last_attendance_id.check_out'
  • total_overtime Float
    related='employee_id.total_overtime'
Public methods (3)
  • SELF_READABLE_FIELDS(self)
    @property
  • action_open_last_month_attendances(self)
  • action_open_last_month_overtime(self)

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources/Attendances
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, Goffin Simon, Géry Debongnie, Wolfgang Taferner, Yannick Tivisse, qsm-odoo, Romeo Fragomeli, Victor Feyens, Gorash, William Braeckman, Kevin Baptiste, Philippe Wauthy, Víctor Martínez, Florian Damhaut, Audric Onockx (auon), Agustín Castro Bugallo, Abdelouahab (abla), Jinjiu Liu, Dossogne Bertrand, nda-odoo, Thomas Lefebvre (thle), tsm-odoo, stefanorigano (SRI), jugj-odoo, Abderraouf Ghrissi (abgh), Ahmed Mohamed, Martin Trigaux (mat), asno-odoo, Rob Coekaerts
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:52
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (14)
XML IDNameModelTypeStatus
hr_attendance_report_view_graph hr.attendance.report.view.graph hr.attendance.report graph New
hr_attendance_report_view_pivot hr.attendance.report.view.pivot hr.attendance.report pivot New
hr_attendance_report_view_search hr.attendance.report.view.search hr.attendance.report search New
hr_attendance_view_filter hr_attendance_view_filter hr.attendance search New
hr_attendance_view_form hr.attendance.form hr.attendance form New
hr_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
hr_user_view_form hr.user.preferences.view.form.attendance.inherit res.users xpath Inherits hr.res_users_view_form_profile
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_overtime_search hr.attendance.overtime.search hr.attendance.overtime search New
view_attendance_overtime_tree hr.attendance.overtime.tree hr.attendance.overtime tree New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_employee_form_inherit_hr_attendance hr.employee hr.employee xpath Inherits hr.view_employee_form
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (9)

New fields (5)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In'
  • check_out Datetime
    string='Check Out'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (5)
  • copy(self)
    @api.returns('self', <expr>)
  • create(self, vals_list)
    @api.model_create_multi
  • name_get(self)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • adjustment Boolean
    default=False
  • company_id Many2one
    related='employee_id.company_id'
  • date Date
    string='Day'
  • duration Float
    default=0.0 required=True string='Extra Hours'
  • duration_real Float
    default=0.0 help='Extra-hours including the threshold duration' string='Extra Hours (Real)'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
Public methods (1)
  • init(self)

New fields (6)
  • check_in Date
    readonly=True args: 'Check In'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • department_id Many2one → hr.department
    readonly=True string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    readonly=True string='Employee' args: 'hr.employee'
  • overtime_hours Float
    readonly=True args: 'Extra Hours'
  • worked_hours Float
    readonly=True args: 'Hours Worked'
Public methods (1)
  • init(self)

New fields (10)
  • attendance_ids One2many → hr.attendance
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' args: 'hr.attendance', 'employee_id'
  • attendance_state Selection
    compute='_compute_attendance_state' groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • hours_last_month Float
    compute='_compute_hours_last_month' groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user'
  • hours_last_month_display Char
    compute='_compute_hours_last_month' groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user'
  • hours_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user' store=True args: 'hr.attendance'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' related='last_attendance_id.check_in' store=True
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' related='last_attendance_id.check_out' store=True
  • overtime_ids One2many → hr.attendance.overtime
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' args: 'hr.attendance.overtime', 'employee_id'
  • total_overtime Float
    compute='_compute_total_overtime' compute_sudo=True groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user'
Public methods (3)
  • attendance_manual(self, next_action, entered_pin=None)
  • attendance_scan(self, barcode)
    @api.model
    Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee. Returns either an action or a warning.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (4)
  • attendance_state Selection
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.attendance_state'
  • hours_today Float
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.hours_today'
  • last_attendance_id Many2one
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.last_attendance_id'
  • total_overtime Float
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.total_overtime'
Public methods (1)
  • action_employee_kiosk_confirm(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • attendance_barcode_source Selection
    default='front' string='Barcode Source' args: [('scanner', 'Scanner'), ('front', 'Front Camera'), ('back', 'Back Camera')]
  • attendance_kiosk_delay Integer
    default=10
  • attendance_kiosk_mode Selection
    default='barcode_manual' string='Attendance Mode' args: [('barcode', 'Barcode / RFID'), ('barcode_manual', 'Barcode / RFID and Manual Selection'), ('manual', 'Manual Selection')]
  • hr_attendance_overtime Boolean
    string='Count Extra Hours'
  • overtime_company_threshold Integer
    default=0 string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    default=0 string='Tolerance Time In Favor Of Employee'
  • overtime_start_date Date
    string='Extra Hours Starting Date'
Public methods (1)
  • write(self, vals)

New fields (8)
  • attendance_barcode_source Selection
    readonly=False related='company_id.attendance_barcode_source'
  • attendance_kiosk_delay Integer
    readonly=False related='company_id.attendance_kiosk_delay'
  • attendance_kiosk_mode Selection
    readonly=False related='company_id.attendance_kiosk_mode'
  • group_attendance_use_pin Boolean
    implied_group='hr_attendance.group_hr_attendance_use_pin' string='Employee PIN'
  • hr_attendance_overtime Boolean
    readonly=False string='Count Extra Hours'
  • overtime_company_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Employee'
  • overtime_start_date Date
    readonly=False string='Extra Hours Starting Date'
Public methods (2)
  • get_values(self)
    @api.model
  • set_values(self)

New fields (6)
  • attendance_state Selection
    related='employee_id.attendance_state'
  • hours_last_month Float
    related='employee_id.hours_last_month'
  • hours_last_month_display Char
    related='employee_id.hours_last_month_display'
  • last_check_in Datetime
    related='employee_id.last_attendance_id.check_in'
  • last_check_out Datetime
    related='employee_id.last_attendance_id.check_out'
  • total_overtime Float
    related='employee_id.total_overtime'
Public methods (1)
  • SELF_READABLE_FIELDS(self)
    @property
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources/Attendances
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Goffin Simon, Aaron Bohy, Barad Mahendra, Yannick Tivisse, Xavier-Do, Sébastien Theys, Julien Mougenot, nie, IEL, Mathieu Duckerts-Antoine, William Braeckman, Kevin Baptiste, Víctor Martínez, Florian Damhaut, Audric Onockx (auon), Agustín Castro Bugallo, Abdelouahab (abla), Jinjiu Liu, dht-odoo, nda-odoo, Thomas Lefebvre (thle), Leonardo Pavan Rocha, jugj-odoo, Marc Durepos, Ahmed Mohamed
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (16)
XML IDNameModelTypeStatus
hr_attendance_report_view_graph hr.attendance.report.view.graph hr.attendance.report graph New
hr_attendance_report_view_pivot hr.attendance.report.view.pivot hr.attendance.report pivot New
hr_attendance_report_view_search hr.attendance.report.view.search hr.attendance.report search New
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_form_inherit hr.attendance.form.inherit hr.attendance form Inherits hr_attendance.hr_attendance_view_form
hr_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
hr_user_view_form hr.user.preferences.view.form.attendance.inherit res.users xpath Inherits hr.res_users_view_form_profile
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_overtime_search hr.attendance.overtime.search hr.attendance.overtime search New
view_attendance_overtime_tree hr.attendance.overtime.tree hr.attendance.overtime tree New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_attendance_tree_inherit hr.attendance.tree.inherit hr.attendance tree Inherits hr_attendance.view_attendance_tree
view_employee_form_inherit_hr_attendance hr.employee hr.employee xpath Inherits hr.view_employee_form
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (9)

New fields (5)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In'
  • check_out Datetime
    string='Check Out'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (5)
  • copy(self)
    @api.returns('self', <expr>)
  • create(self, vals_list)
    @api.model_create_multi
  • name_get(self)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • adjustment Boolean
    default=False
  • company_id Many2one
    related='employee_id.company_id'
  • date Date
    string='Day'
  • duration Float
    default=0.0 required=True string='Extra Hours'
  • duration_real Float
    default=0.0 help='Extra-hours including the threshold duration' string='Extra Hours (Real)'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
Public methods (1)
  • init(self)

New fields (5)
  • check_in Date
    readonly=True args: 'Check In'
  • department_id Many2one → hr.department
    readonly=True string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    readonly=True string='Employee' args: 'hr.employee'
  • overtime_hours Float
    readonly=True args: 'Extra Hours'
  • worked_hours Float
    readonly=True args: 'Hours Worked'
Public methods (1)
  • init(self)

New fields (10)
  • attendance_ids One2many → hr.attendance
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' help='list of attendances for the employee' args: 'hr.attendance', 'employee_id'
  • attendance_state Selection
    compute='_compute_attendance_state' groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • hours_last_month Float
    compute='_compute_hours_last_month' groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user'
  • hours_last_month_display Char
    compute='_compute_hours_last_month' groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user'
  • hours_today Float
    compute='_compute_hours_today' groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user' store=True args: 'hr.attendance'
  • last_check_in Datetime
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' related='last_attendance_id.check_in' store=True
  • last_check_out Datetime
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' related='last_attendance_id.check_out' store=True
  • overtime_ids One2many → hr.attendance.overtime
    groups='hr_attendance.group_hr_attendance_user,hr.group_hr_user' args: 'hr.attendance.overtime', 'employee_id'
  • total_overtime Float
    compute='_compute_total_overtime' compute_sudo=True groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user'
Public methods (3)
  • attendance_manual(self, next_action, entered_pin=None)
  • attendance_scan(self, barcode)
    @api.model
    Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee. Returns either an action or a warning.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (4)
  • attendance_state Selection
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.attendance_state'
  • hours_today Float
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.hours_today'
  • last_attendance_id Many2one
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.last_attendance_id'
  • total_overtime Float
    groups='hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance' readonly=True related='employee_id.total_overtime'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • hr_attendance_overtime Boolean
    string='Count Extra Hours'
  • overtime_company_threshold Integer
    default=0 string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    default=0 string='Tolerance Time In Favor Of Employee'
  • overtime_start_date Date
    string='Extra Hours Starting Date'
Public methods (1)
  • write(self, vals)

New fields (5)
  • group_attendance_use_pin Boolean
    implied_group='hr_attendance.group_hr_attendance_use_pin' string='Employee PIN'
  • hr_attendance_overtime Boolean
    readonly=False string='Count Extra Hours'
  • overtime_company_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Company'
  • overtime_employee_threshold Integer
    readonly=False string='Tolerance Time In Favor Of Employee'
  • overtime_start_date Date
    readonly=False string='Extra Hours Starting Date'
Public methods (2)
  • get_values(self)
    @api.model
  • set_values(self)

New fields (6)
  • attendance_state Selection
    related='employee_id.attendance_state'
  • hours_last_month Float
    related='employee_id.hours_last_month'
  • hours_last_month_display Char
    related='employee_id.hours_last_month_display'
  • last_check_in Datetime
    related='employee_id.last_attendance_id.check_in'
  • last_check_out Datetime
    related='employee_id.last_attendance_id.check_out'
  • total_overtime Float
    related='employee_id.total_overtime'
Public methods (1)
  • SELF_READABLE_FIELDS(self)
    @property
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources/Attendances
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Xavier Morel, Goffin Simon, Aaron Bohy, GitHub, Barad Mahendra, Wolfgang Taferner, Yannick Tivisse, Adrien Dieudonne, Jorge Pinna Puissant, Xavier-Do, jvm-odoo, Julien Mougenot, Swapnesh Shah, nie, IEL, Mathieu Duckerts-Antoine, jbm-odoo, Arnaud Joset, William Braeckman, Kevin Baptiste, bve-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (15)
XML IDNameModelTypeStatus
assets_backend hr_attendance assets ir.ui.view qweb Inherits web.assets_backend
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_form_inherit hr.attendance.form.inherit hr.attendance form Inherits hr_attendance.hr_attendance_view_form
hr_attendance_view_graph hr.attendance.graph hr.attendance graph New
hr_attendance_view_pivot hr.attendance.pivot hr.attendance pivot New
hr_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
hr_user_view_form hr.user.preferences.view.form.attendance.inherit res.users xpath Inherits hr.res_users_view_form_profile
qunit_suite hr attendance tests ir.ui.view qweb Inherits web.qunit_suite_tests
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_attendance_tree_inherit hr.attendance.tree.inherit hr.attendance tree Inherits hr_attendance.view_attendance_tree
view_employee_form_inherit_hr_attendance hr.employee hr.employee xpath Inherits hr.view_employee_form
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (4)

New fields (5)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In'
  • check_out Datetime
    string='Check Out'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (2)
  • copy(self)
    @api.returns('self', <expr>)
  • name_get(self)

New fields (8)
  • attendance_ids One2many → hr.attendance
    help='list of attendances for the employee' args: 'hr.attendance', 'employee_id'
  • attendance_state Selection
    compute='_compute_attendance_state' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • hours_last_month Float
    compute='_compute_hours_last_month'
  • hours_last_month_display Char
    compute='_compute_hours_last_month'
  • hours_today Float
    compute='_compute_hours_today'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' store=True args: 'hr.attendance'
  • last_check_in Datetime
    related='last_attendance_id.check_in' store=True
  • last_check_out Datetime
    related='last_attendance_id.check_out' store=True
Public methods (3)
  • attendance_manual(self, next_action, entered_pin=None)
  • attendance_scan(self, barcode)
    @api.model
    Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee. Returns either an action or a warning.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (1)
  • group_attendance_use_pin Boolean
    implied_group='hr_attendance.group_hr_attendance_use_pin' string='Employee PIN'
Public methods (0)

No public methods.

New fields (5)
  • attendance_state Selection
    related='employee_id.attendance_state'
  • hours_last_month Float
    related='employee_id.hours_last_month'
  • hours_last_month_display Char
    related='employee_id.hours_last_month_display'
  • last_check_in Datetime
    related='employee_id.last_attendance_id.check_in'
  • last_check_out Datetime
    related='employee_id.last_attendance_id.check_out'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources/Attendances
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Géry Debongnie, Aaron Bohy, GitHub, Wolfgang Taferner, Yannick Tivisse, Jorge Pinna Puissant, Adrian Torres, Xavier-Do, jvm-odoo, Sébastien Theys, Lucas Lefèvre, Naglis Jonaitis, Swapnesh Shah, nie, IEL, William Braeckman, Kevin Baptiste, pha-odoo, Sapan Zaveri
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - mail_bot
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (15)
XML IDNameModelTypeStatus
assets_backend hr_attendance assets ir.ui.view qweb Inherits web.assets_backend
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_form_inherit hr.attendance.form.inherit hr.attendance form Inherits hr_attendance.hr_attendance_view_form
hr_attendance_view_graph hr.attendance.graph hr.attendance graph New
hr_attendance_view_pivot hr.attendance.pivot hr.attendance pivot New
hr_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
hr_user_view_form hr.user.preferences.view.form.attendance.inherit res.users xpath Inherits hr.res_users_view_form_profile
qunit_suite hr attendance tests ir.ui.view qweb Inherits web.qunit_suite
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_attendance_tree_inherit hr.attendance.tree.inherit hr.attendance tree Inherits hr_attendance.view_attendance_tree
view_employee_form_inherit_hr_attendance hr.employee hr.employee xpath Inherits hr.view_employee_form
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (4)

New fields (5)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In'
  • check_out Datetime
    string='Check Out'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (2)
  • copy(self)
    @api.returns('self', <expr>)
  • name_get(self)

New fields (8)
  • attendance_ids One2many → hr.attendance
    help='list of attendances for the employee' args: 'hr.attendance', 'employee_id'
  • attendance_state Selection
    compute='_compute_attendance_state' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • hours_last_month Float
    compute='_compute_hours_last_month'
  • hours_last_month_display Char
    compute='_compute_hours_last_month'
  • hours_today Float
    compute='_compute_hours_today'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' store=True args: 'hr.attendance'
  • last_check_in Datetime
    related='last_attendance_id.check_in' store=True
  • last_check_out Datetime
    related='last_attendance_id.check_out' store=True
Public methods (3)
  • attendance_manual(self, next_action, entered_pin=None)
  • attendance_scan(self, barcode)
    @api.model
    Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee. Returns either an action or a warning.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (1)
  • group_attendance_use_pin Boolean
    implied_group='hr_attendance.group_hr_attendance_use_pin' string='Employee PIN'
Public methods (0)

No public methods.

New fields (5)
  • attendance_state Selection
    related='employee_id.attendance_state'
  • hours_last_month Float
    related='employee_id.hours_last_month'
  • hours_last_month_display Char
    related='employee_id.hours_last_month_display'
  • last_check_in Datetime
    related='employee_id.last_attendance_id.check_in'
  • last_check_out Datetime
    related='employee_id.last_attendance_id.check_out'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Goffin Simon, Nicolas Martinelli, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Adrien Dieudonne, RomainLibert, Jorge Pinna Puissant, Adrian Torres, Xavier-Do, fw-bot, Kinjal Mehta, David Beguin
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (15)
XML IDNameModelTypeStatus
assets_backend hr_attendance assets ir.ui.view qweb Inherits web.assets_backend
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_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
print_employee_badge print_employee_badge ir.ui.view qweb New
qunit_suite hr attendance tests ir.ui.view qweb Inherits web.qunit_suite
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_employee_filter_inherit_hr_attendance hr.employee.filter.inherit.attendance hr.employee xpath Inherits hr.view_employee_filter
view_employee_form_inherit_hr_attendance hr.employee hr.employee xpath Inherits hr.view_employee_form
view_employee_kanban_inherit_hr_attendance hr.employee hr.employee templates Inherits hr.hr_kanban_view_employees
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (3)

New fields (5)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In'
  • check_out Datetime
    string='Check Out'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (2)
  • copy(self)
    @api.multi@api.returns('self', <expr>)
  • name_get(self)
    @api.multi

New fields (6)
  • attendance_ids One2many → hr.attendance
    help='list of attendances for the employee' args: 'hr.attendance', 'employee_id'
  • attendance_state Selection
    compute='_compute_attendance_state' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance Status'
  • barcode Char
    copy=False default=_default_random_barcode help='ID used for employee identification.' string='Badge ID'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' store=True args: 'hr.attendance'
  • manual_attendance Boolean
    compute='_compute_manual_attendance' help='The employee will have access to the "My Attendances" menu to check in and out from his session' inverse='_inverse_manual_attendance' string='Manual Attendance'
  • pin Char
    copy=False default=_default_random_pin help='PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration).' string='PIN'
Public methods (5)
  • attendance_action(self, next_action)
    @api.multi
    Changes the attendance of the employee. Returns an action to the check in/out message, next_action defines which menu the check in/out message should return to. ("My Attendances" or "Kiosk Mode")
  • attendance_action_change(self)
    @api.multi
    Check In/Check Out action Check In: create a new attendance record Check Out: modify check_out field of appropriate attendance record
  • attendance_manual(self, next_action, entered_pin=None)
    @api.multi
  • attendance_scan(self, barcode)
    @api.model
    Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee. Returns either an action or a warning.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (1)
  • group_attendance_use_pin Boolean
    implied_group='hr_attendance.group_hr_attendance_use_pin' string='Employee PIN'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Aaron Bohy, GitHub, Olivier Colson, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Laurent Smet, DVE, Denis Vermylen, Alexandre Saunier
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (14)
XML IDNameModelTypeStatus
assets_backend hr_attendance assets ir.ui.view qweb Inherits web.assets_backend
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_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
print_employee_badge print_employee_badge ir.ui.view qweb New
qunit_suite hr attendance tests ir.ui.view qweb Inherits web.qunit_suite
res_config_settings_view_form res.config.settings.view.form.inherit.hr.attendance res.config.settings xpath Inherits base.res_config_settings_view_form
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_employee_form_inherit_hr_attendance hr.employee hr.employee xpath Inherits hr.view_employee_form
view_employee_kanban_inherit_hr_attendance hr.employee hr.employee templates Inherits hr.hr_kanban_view_employees
view_hr_attendance_kanban hr.attendance.kanban hr.attendance kanban New
Models touched (3)

New fields (5)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In'
  • check_out Datetime
    string='Check Out'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (2)
  • copy(self)
    @api.multi
  • name_get(self)
    @api.multi

New fields (6)
  • attendance_ids One2many → hr.attendance
    help='list of attendances for the employee' args: 'hr.attendance', 'employee_id'
  • attendance_state Selection
    compute='_compute_attendance_state' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance'
  • barcode Char
    copy=False default=_default_random_barcode help='ID used for employee identification.' string='Badge ID'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' args: 'hr.attendance'
  • manual_attendance Boolean
    compute='_compute_manual_attendance' help='The employee will have access to the "My Attendances" menu to check in and out from his session' inverse='_inverse_manual_attendance' string='Manual Attendance'
  • pin Char
    copy=False default=_default_random_pin help='PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration).' string='PIN'
Public methods (5)
  • attendance_action(self, next_action)
    @api.multi
    Changes the attendance of the employee. Returns an action to the check in/out message, next_action defines which menu the check in/out message should return to. ("My Attendances" or "Kiosk Mode")
  • attendance_action_change(self)
    @api.multi
    Check In/Check Out action Check In: create a new attendance record Check Out: modify check_out field of appropriate attendance record
  • attendance_manual(self, next_action, entered_pin=None)
    @api.multi
  • attendance_scan(self, barcode)
    @api.model
    Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee. Returns either an action or a warning.
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (1)
  • group_attendance_use_pin Boolean
    implied_group='hr_attendance.group_hr_attendance_use_pin' string='Employee PIN'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/hr_attendance
VERSION
VERSION 2.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Denis Ledoux, Christophe Simonis, Goffin Simon, Nicolas Martinelli, Julien Legros, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, Denis Vermylen (dve)
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - bus
    - web_tour
    - resource
    - report
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (12)
XML IDNameModelTypeStatus
assets_backend hr_attendance assets ir.ui.view qweb Inherits web.assets_backend
hr_attendance_view_config base.config.setting.hr.form.attendance base.config.settings form New
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_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
hr_employees_view_kanban hr.employee.kanban hr.employee kanban New
print_employee_badge print_employee_badge ir.ui.view qweb New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_employee_form_inherit_hr_attendance hr.employee hr.employee field Inherits hr.view_employee_form
view_employee_kanban_inherit_hr_attendance hr.employee hr.employee field Inherits hr.hr_kanban_view_employees
Models touched (3)

New fields (1)
  • group_attendance_use_pin Selection
    help='Enable or disable employee PIN identification at check in' implied_group='hr_attendance.group_hr_attendance_use_pin' string='Employee PIN' args: [(0, 'Employees do not need to enter their PIN to check in manually in the "Kiosk Mode".'), (1, 'Employees must enter their PIN to check in manually in the "Kiosk Mode".')]
Public methods (0)

No public methods.

New fields (5)
  • check_in Datetime
    default=fields.Datetime.now required=True string='Check In'
  • check_out Datetime
    string='Check Out'
  • department_id Many2one → hr.department
    readonly=True related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    default=_default_employee index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • worked_hours Float
    compute='_compute_worked_hours' readonly=True store=True string='Worked Hours'
Public methods (2)
  • copy(self)
    @api.multi
  • name_get(self)
    @api.multi

New fields (6)
  • attendance_ids One2many → hr.attendance
    help='list of attendances for the employee' args: 'hr.attendance', 'employee_id'
  • attendance_state Selection
    compute='_compute_attendance_state' selection=[('checked_out', 'Checked out'), ('checked_in', 'Checked in')] string='Attendance'
  • barcode Char
    copy=False default=_default_random_barcode help='ID used for employee identification.' string='Badge ID'
  • last_attendance_id Many2one → hr.attendance
    compute='_compute_last_attendance_id' args: 'hr.attendance'
  • manual_attendance Boolean
    compute='_compute_manual_attendance' help='The employee will have access to the "My Attendances" menu to check in and out from his session' inverse='_inverse_manual_attendance' string='Manual Attendance'
  • pin Char
    copy=False default=_default_random_pin help='PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration).' string='PIN'
Public methods (4)
  • attendance_action(self, next_action)
    @api.multi
    Changes the attendance of the employee. Returns an action to the check in/out message, next_action defines which menu the check in/out message should return to. ("My Attendances" or "Kiosk Mode")
  • attendance_action_change(self)
    @api.multi
    Check In/Check Out action Check In: create a new attendance record Check Out: modify check_out field of appropriate attendance record
  • attendance_manual(self, next_action, entered_pin=None)
    @api.multi
  • attendance_scan(self, barcode)
    @api.model
    Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee. Returns either an action or a warning.
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/hr_attendance
VERSION
VERSION 1.1
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Richard Mathot, Géry Debongnie, Aaron Bohy, Yannick Tivisse, qsm-odoo, Martin Geubelle
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - bus
    - resource
    - web_tip
    - report
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module aims to manage employee's attendances.
==================================================

Keeps account of the attendances of the employees on the basis of the
actions(Sign in/Sign out) performed by them.
       

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
assets_backend hr_attendance assets ir.ui.view qweb Inherits web.assets_backend
edit_attendance_reason hr.action.reason.form hr.action.reason form New
hr_department_view_kanban hr.department.kanban.inherit hr.department data Inherits hr.hr_department_view_kanban
report_attendanceerrors report_attendanceerrors ir.ui.view qweb New
view_attendance_form hr.attendance.form hr.attendance form New
view_attendance_reason hr.action.reason.tree hr.action.reason tree New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_attendance_who hr.attendance.tree hr.attendance tree New
view_hr_attendance_error Attendance Report Error hr.attendance.error form New
view_hr_attendance_filter view_hr_attendance_filter hr.attendance search New
view_hr_attendance_graph hr.attendance.graph hr.attendance graph New
view_hr_attendance_pivot hr.attendance.pivot hr.attendance pivot New
Models touched (1)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/hr_attendance
VERSION
VERSION 1.1
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Foram Katharotiya (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, Fabien Meghazi, ggh-openerp, Christophe Simonis, Xavier Morel, Cedric Snauwaert, Simon Lejeune, Paramjit Singh Sahota, Richard Mathot, Géry Debongnie, Aaron Bohy, ged-odoo, sgo@tinyerp.com
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - resource
    - board
    - report
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module aims to manage employee's attendances.
==================================================

Keeps account of the attendances of the employees on the basis of the
actions(Sign in/Sign out) performed by them.
       

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
assets_backend hr_attendance assets ir.ui.view qweb Inherits web.assets_backend
edit_attendance_reason hr.action.reason.form hr.action.reason form New
hr_attendace_group hr.config.settings.inherit hr.config.settings data Inherits hr.view_human_resources_configuration
hr_attendance_employee hr.employee.form1 hr.employee field Inherits hr.view_employee_form
report_attendanceerrors report_attendanceerrors ir.ui.view qweb New
view_attendance_form hr.attendance.form hr.attendance form New
view_attendance_reason hr.action.reason.tree hr.action.reason tree New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_attendance_who hr.attendance.tree hr.attendance tree New
view_hr_attendance_error Attendance Report Error hr.attendance.error form New
view_hr_attendance_filter view_hr_attendance_filter hr.attendance search New
view_hr_attendance_graph hr.attendance.graph hr.attendance graph New
Models touched (1)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/7.0/hr_attendance
VERSION
VERSION 1.1
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Jagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Jalpesh Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Numerigraphe - Lionel Sausin, Christophe Matthieu, Pinakin Nayi (OpenERP), Harry (OpenERP), Antonin Bourguignon, pankita shah (Open ERP), Martin Trigaux, Ajay Chauhan (OpenERP), Purnendu Singh (OpenERP), Fabien Pinckaers, Meera Trambadia (OpenERP), Olivier Dony, Twinkle (OpenERP), Tejas Tank, Vo Minh Thu, Hardik, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), Alexis de Lattre, help, Fabien Meghazi, niv-openerp, Christophe Simonis, Dharti Ratani (OpenERP), Bhumi Thakkar (Open ERP), Vaibhav (OpenERP)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - resource
    - process
    - board
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module aims to manage employee's attendances.
==================================================

Keeps account of the attendances of the employees on the basis of the
actions(Sign in/Sign out) performed by them.
       

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
edit_attendance_reason hr.action.reason.form hr.action.reason form New
hr_attendace_group hr.config.settings.inherit hr.config.settings data Inherits hr.view_human_resources_configuration
hr_attendance_employee hr.employee.form1 hr.employee field Inherits hr.view_employee_form
view_attendance_form hr.attendance.form hr.attendance form New
view_attendance_reason hr.action.reason.tree hr.action.reason tree New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_attendance_who hr.attendance.tree hr.attendance tree New
view_hr_attendance_error Attendance Report Error hr.attendance.error form New
view_hr_attendance_filter view_hr_attendance_filter hr.attendance search New
view_hr_attendance_month Attendances Report Monthly hr.attendance.month form New
view_hr_attendance_week Attendances Report Weekly hr.attendance.week form New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/6.1/hr_attendance
VERSION
VERSION 1.1
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Jagdish Panchal (Open ERP), Rucha (Open ERP), Stephane Wirtel, Fabien Pinckaers, Meera Trambadia (OpenERP), Olivier Dony, Divyesh Makwana (Open ERP), Thibault Delavallée, Vo Minh Thu, pso (OpenERP), Launchpad Translations on behalf of openerp, Quentin (OpenERP), vro, niv-openerp, Ujjvala Collins (OpenERP), , Carlos Vásquez, Husen Daudi, Els Van Vossel, Israel Fermin Montilla, Hardik Ansodariy (OpenERP), rch-openerp, Bharat (OpenERP), mtr, fp, Mustufa Rangwala, Hemendra Paregi (Open ERP)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:41:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - mail
    - base_tools
    - resource
    - process
    - board
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module aims to manage employee's attendances.
==================================================

Keeps account of the attendances of the employees on the basis of the
actions(Sign in/Sign out) performed by them.
       

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
edit_attendance_reason hr.action.reason.form hr.action.reason form New
hr_attendance_employee hr.employee.form1 hr.employee field Inherits hr.view_employee_form
view_attendance_form hr.attendance.form hr.attendance form New
view_attendance_reason hr.action.reason.tree hr.action.reason tree New
view_attendance_tree hr.attendance.tree hr.attendance tree New
view_attendance_who hr.attendance.tree hr.attendance tree New
view_hr_attendance_error Attendance Report Error hr.attendance.error form New
view_hr_attendance_filter view_hr_attendance_filter hr.attendance search New
view_hr_attendance_message hr.sign.in.out.form hr.sign.in.out form New
view_hr_attendance_month Attendances Report Monthly hr.attendance.month form New
view_hr_attendance_si_ask hr.sign.in.out.ask.form hr.sign.in.out.ask form New
view_hr_attendance_sigh_in_out hr.sign.in.out.form hr.sign.in.out form New
view_hr_attendance_so_ask hr.sign.in.out.ask.form hr.sign.in.out.ask form New
view_hr_attendance_week Attendances Report Weekly hr.attendance.week form New
Models touched (0)

No models found for this module.