| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr-attendance |
| GIT | |
| GIT | https://github.com/OCA/hr-attendance.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr-attendance/tree/14.0/hr_attendance_sheet |
| VERSION | |
| VERSION | 1.0.4 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | GitHub, Enric Tobella, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Murtaza Mithaiwala, Urvisha-OSI |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr-attendance |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:06 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - barcodes |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_attendance_company_payment_window |
res.company | notebook | Inherits base.view_company_form | |
hr_attendance_employee_view_form |
hr.attendance.employee.form | hr.employee | group | Inherits hr.view_employee_form |
hr_attendance_sheet_attendance_view_form |
hr.attendance.sheet.attendance.form | hr.attendance | sheet | Inherits hr_attendance.hr_attendance_view_form |
hr_attendance_sheet_attendance_view_tree |
hr.attendance.sheet.attendance.tree | hr.attendance | field | Inherits hr_attendance.view_attendance_tree |
hr_attendance_sheet_view_form |
hr.attendance.sheet.form | hr.attendance.sheet | form | New |
hr_attendance_sheet_view_search |
hr.attendance.sheet.search | hr.attendance.sheet | search | New |
hr_attendance_sheet_view_tree |
hr.attendance.sheet.tree | hr.attendance.sheet | tree | New |
hr_department_view_form |
hr.department.form | hr.department | field | Inherits hr.view_department_form |
report_hr_attendance_sheet_document |
report_hr_attendance_sheet_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.attendance | res.config.settings | xpath | Inherits hr_attendance.res_config_settings_view_form |
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department. This field\n is set on the department.'
related='department_id.attendance_admin'
string='Attendance Admin'
args: 'hr.employee'
attendance_sheet_id
Many2one → hr.attendance.sheet
compute='_compute_attendance_sheet_id'
store=True
string='Sheet'
args: 'hr.attendance.sheet'
auto_lunch
Boolean
help='If Auto Lunch is enabled and applied on this attendance.'
string='Auto Lunch Applied'
auto_lunch_enabled
Boolean
related='company_id.auto_lunch'
string='Auto Lunch Enabled'
company_id
Many2one → res.company
related='attendance_sheet_id.company_id'
string='Company'
args: 'res.company'
duration
Float
compute='_compute_duration'
string='Duration (Hrs)'
override_auto_lunch
Boolean
help="Enable if you don't want the auto lunch to calculate."
string='Override Auto Lunch'
override_reason
Text
help='State the reason you are overriding the auto lunch.'
string='Override Reason'
unlink(self)
write(self, vals)
active
Boolean
default=True
string='Active'
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department. This field\n is set on the department.'
related='department_id.attendance_admin'
string='Attendance Admin'
args: 'hr.employee'
attendance_ids
One2many → hr.attendance
string='Attendances'
args: 'hr.attendance', 'attendance_sheet_id'
can_review
Boolean
compute='_compute_can_review'
search='_search_can_review'
string='Can Review'
company_id
Many2one → res.company
related='employee_id.company_id'
string='Company'
args: 'res.company'
date_end
Date
index=True
required=True
string='Date To'
date_start
Date
index=True
required=True
string='Date From'
department_id
Many2one → hr.department
related='employee_id.department_id'
string='Department'
args: 'hr.department'
employee_id
Many2one → hr.employee
required=True
string='Employee'
args: 'hr.employee'
hours_to_work
Float
help='Expected working hours based on company policy. This is used on attendance sheets to calculate overtime values.'
related='employee_id.hours_to_work'
string='Hours to Work'
manager_id
Many2one → hr.employee
related='employee_id.parent_id'
string='Manager'
args: 'hr.employee'
name
Char
compute='_compute_name'
overtime
Float
compute='_compute_overtime'
store=True
review_policy
Selection
related='company_id.attendance_sheet_review_policy'
string='Review Policy'
reviewed_on
Datetime
readonly=True
string='Reviewed On'
reviewer_id
Many2one → hr.employee
readonly=True
string='Reviewer'
tracking=True
args: 'hr.employee'
state
Selection
default='draft'
index=True
readonly=True
required=True
string='Status'
tracking=True
args: [('draft', 'Draft'), ('confirm', 'Waiting Review'), ('done', 'Approved'), ('locked', 'Locked')]
total_time
Float
compute='_compute_total_time'
store=True
user_id
Many2one → res.users
related='employee_id.user_id'
store=True
string='User'
args: 'res.users'
working_hours
Many2one → resource.calendar
related='employee_id.resource_calendar_id'
string='Working Hours'
args: 'resource.calendar'
action_attendance_sheet_confirm(self)
action_attendance_sheet_done(self)
action_attendance_sheet_draft(self)
action_attendance_sheet_lock(self)
action_attendance_sheet_refuse(self)
action_attendance_sheet_unlock(self)
activity_update(self)
attendance_action_change(self)
check_pay_period_dates(self)
create(self, vals)
write(self, values)
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department.'
string='Attendance Admin'
args: 'hr.employee'
No public methods.
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department. This field\n is set on the department.'
related='department_id.attendance_admin'
string='Attendance Admin'
args: 'hr.employee'
hours_to_work
Float
help='Expected working hours based on company policy. This is used on attendance sheets to calculate overtime values.'
string='Hours to Work'
use_attendance_sheets
Boolean
help="Used in the attendance sheet auto creation process. Employees that have the 'Hourly' type will have attendance sheets automatically created"
string='Use Attendance Sheets'
No public methods.
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department. This field\n is set on the department.'
related='department_id.attendance_admin'
string='Attendance Admin'
args: 'hr.employee'
hours_to_work
Float
help='Expected working hours based on company policy. This is used on attendance sheets to calculate overtime values.'
string='Hours to Work'
use_attendance_sheets
Boolean
help="Used in the attendance sheet auto creation process. Employees that have the 'Hourly' type will have attendance sheets automatically created"
string='Use Attendance Sheets'
No public methods.
attendance_sheet_range
Selection
default='WEEKLY'
help='The range of your Attendance Sheet.'
selection=[('MONTHLY', 'Month'), ('BIWEEKLY', 'Bi-Week'), ('WEEKLY', 'Week'), ('DAILY', 'Day')]
string='Attendance Sheet Range'
attendance_sheet_review_policy
Selection
default='hr'
help='How Attendance Sheets review is performed.'
selection=[('hr', 'HR Manager/Officer'), ('employee_manager', "Employee's Manager or Attendance Admin"), ('hr_or_manager', "HR or Employee's Manager or Attendance Admin")]
string='Attendance Sheet Review Policy'
attendance_week_start
Selection
default='0'
selection=[('0', 'Monday'), ('1', 'Tuesday'), ('2', 'Wednesday'), ('3', 'Thursday'), ('4', 'Friday'), ('5', 'Saturday'), ('6', 'Sunday')]
string='Week Starting Day'
auto_lunch
Boolean
help='Applies a lunch period if duration is over the max time.'
string='Auto Lunch'
auto_lunch_duration
Float
help='The duration on an attendance that would trigger an auto lunch.'
string='Duration'
auto_lunch_hours
Float
help='Enter the lunch period that would be used for an auto lunch.'
string='Lunch Hours'
date_end
Date
index=True
readonly=True
string='Date To'
date_start
Date
default=datetime.today().date()
index=True
string='Date From'
use_attendance_sheets
Boolean
default=False
args: 'Use Attendance Sheets'
create(self, vals)
onchange_attendance_sheet_range(self)
set_date_end(self, company)
write(self, vals)
attendance_sheet_range
Selection
help='The range of your Attendance Sheet.'
readonly=False
related='company_id.attendance_sheet_range'
string='Attendance Sheet Range'
attendance_sheet_review_policy
Selection
readonly=False
related='company_id.attendance_sheet_review_policy'
attendance_week_start
Selection
help='Starting day for Attendance Sheets.'
readonly=False
related='company_id.attendance_week_start'
string='Week Starting Day'
auto_lunch
Boolean
help='Forces a lunch period if duration is over the max time.'
readonly=False
related='company_id.auto_lunch'
string='Auto Lunch'
auto_lunch_duration
Float
help='The duration on an attendance that would trigger an auto lunch.'
readonly=False
related='company_id.auto_lunch_duration'
string='Duration'
auto_lunch_hours
Float
help='Enter the lunch period that would be used for an auto lunch.'
readonly=False
related='company_id.auto_lunch_hours'
string='Lunch Hours'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/12.0/hr_attendance_sheet |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | oca-travis, Weblate, OCA-git-bot, Patrick Wilson |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:19 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - barcodes |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_attendance_company_payment_window |
res.company | notebook | Inherits base.view_company_form | |
hr_attendance_employee_view_form |
hr.attendance.employee.form | hr.employee | field | Inherits hr_attendance.view_employee_form_inherit_hr_attendance |
hr_attendance_sheet_attendance_view_form |
hr.attendance.sheet.attendance.form | hr.attendance | sheet | Inherits hr_attendance.hr_attendance_view_form |
hr_attendance_sheet_attendance_view_tree |
hr.attendance.sheet.attendance.tree | hr.attendance | field | Inherits hr_attendance.view_attendance_tree |
hr_attendance_sheet_view_form |
hr.attendance.sheet.form | hr.attendance.sheet | form | New |
hr_attendance_sheet_view_search |
hr.attendance.sheet.search | hr.attendance.sheet | search | New |
hr_attendance_sheet_view_tree |
hr.attendance.sheet.tree | hr.attendance.sheet | tree | New |
hr_department_view_form |
hr.department.form | hr.department | field | Inherits hr.view_department_form |
report_hr_attendance_sheet_document |
report_hr_attendance_sheet_document | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.attendance | res.config.settings | xpath | Inherits hr_attendance.res_config_settings_view_form |
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department. This field\n is set on the department.'
related='department_id.attendance_admin'
string='Attendance Admin'
args: 'hr.employee'
attendance_sheet_id
Many2one → hr.attendance.sheet
compute='_compute_attendance_sheet_id'
store=True
string='Sheet'
args: 'hr.attendance.sheet'
auto_lunch
Boolean
help='If Auto Lunch is enabled and applied on this attendance.'
string='Auto Lunch Applied'
auto_lunch_enabled
Boolean
related='company_id.auto_lunch'
string='Auto Lunch Enabled'
company_id
Many2one → res.company
related='attendance_sheet_id.company_id'
string='Company'
args: 'res.company'
duration
Float
compute='_compute_duration'
string='Duration (Hrs)'
override_auto_lunch
Boolean
help="Enable if you don't want the auto lunch to calculate."
string='Override Auto Lunch'
override_reason
Text
help='State the reason you are overriding the auto lunch.'
string='Override Reason'
unlink(self)
write(self, vals)
active
Boolean
default=True
string='Active'
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department. This field\n is set on the department.'
related='department_id.attendance_admin'
string='Attendance Admin'
args: 'hr.employee'
attendance_ids
One2many → hr.attendance
string='Attendances'
args: 'hr.attendance', 'attendance_sheet_id'
can_review
Boolean
compute='_compute_can_review'
search='_search_can_review'
string='Can Review'
company_id
Many2one → res.company
related='employee_id.company_id'
string='Company'
args: 'res.company'
date_end
Date
index=True
required=True
string='Date To'
date_start
Date
index=True
required=True
string='Date From'
department_id
Many2one → hr.department
related='employee_id.department_id'
string='Department'
args: 'hr.department'
employee_id
Many2one → hr.employee
required=True
string='Employee'
args: 'hr.employee'
hours_to_work
Float
help='Expected working hours based on company policy. This is used on attendance sheets to calculate overtime values.'
related='employee_id.hours_to_work'
string='Hours to Work'
manager_id
Many2one → hr.employee
related='employee_id.parent_id'
string='Manager'
args: 'hr.employee'
name
Char
compute='_compute_name'
context_dependent=True
overtime
Float
compute='_compute_overtime'
store=True
review_policy
Selection
related='company_id.attendance_sheet_review_policy'
string='Review Policy'
reviewed_on
Datetime
readonly=True
string='Reviewed On'
reviewer_id
Many2one → hr.employee
readonly=True
string='Reviewer'
track_visibility='onchange'
args: 'hr.employee'
state
Selection
default='draft'
index=True
readonly=True
required=True
string='Status'
track_visibility='onchange'
args: [('draft', 'Draft'), ('confirm', 'Waiting Review'), ('done', 'Approved'), ('locked', 'Locked')]
total_time
Float
compute='_compute_total_time'
store=True
user_id
Many2one → res.users
related='employee_id.user_id'
store=True
string='User'
args: 'res.users'
working_hours
Many2one → resource.calendar
related='employee_id.resource_calendar_id'
string='Working Hours'
args: 'resource.calendar'
action_attendance_sheet_confirm(self)
action_attendance_sheet_done(self)
action_attendance_sheet_draft(self)
action_attendance_sheet_lock(self)
action_attendance_sheet_refuse(self)
action_attendance_sheet_unlock(self)
activity_update(self)
attendance_action_change(self)
check_pay_period_dates(self)
create(self, vals)
write(self, values)
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department.'
string='Attendance Admin'
args: 'hr.employee'
No public methods.
attendance_admin
Many2one → hr.employee
help='In addition to the employees manager, this person can\n administer attendances for all employees in the department. This field\n is set on the department.'
related='department_id.attendance_admin'
string='Attendance Admin'
args: 'hr.employee'
hours_to_work
Float
help='Expected working hours based on company policy. This is used on attendance sheets to calculate overtime values.'
string='Hours to Work'
use_attendance_sheets
Boolean
help="Used in the attendance sheet auto creation process. Employees that have the 'Hourly' type will have attendance sheets automatically created"
string='Use Attendance Sheets'
No public methods.
attendance_sheet_range
Selection
default='WEEKLY'
help='The range of your Attendance Sheet.'
selection=[('MONTHLY', 'Month'), ('BIWEEKLY', 'Bi-Week'), ('WEEKLY', 'Week'), ('DAILY', 'Day')]
string='Attendance Sheet Range'
attendance_sheet_review_policy
Selection
default='hr'
help='How Attendance Sheets review is performed.'
selection=[('hr', 'HR Manager/Officer'), ('employee_manager', "Employee's Manager or Attendance Admin"), ('hr_or_manager', "HR or Employee's Manager or Attendance Admin")]
string='Attendance Sheet Review Policy'
attendance_week_start
Selection
default='0'
selection=[('0', 'Monday'), ('1', 'Tuesday'), ('2', 'Wednesday'), ('3', 'Thursday'), ('4', 'Friday'), ('5', 'Saturday'), ('6', 'Sunday')]
string='Week Starting Day'
auto_lunch
Boolean
help='Applies a lunch period if duration is over the max time.'
string='Auto Lunch'
auto_lunch_duration
Float
help='The duration on an attendance that would trigger an auto lunch.'
string='Duration'
auto_lunch_hours
Float
help='Enter the lunch period that would be used for an auto lunch.'
string='Lunch Hours'
date_end
Date
index=True
readonly=True
string='Date To'
date_start
Date
default=datetime.today().date()
index=True
string='Date From'
use_attendance_sheets
Boolean
default=False
args: 'Use Attendance Sheets'
create(self, vals)
onchange_attendance_sheet_range(self)
set_date_end(self, company)
write(self, vals)
attendance_sheet_range
Selection
help='The range of your Attendance Sheet.'
readonly=False
related='company_id.attendance_sheet_range'
string='Attendance Sheet Range'
attendance_sheet_review_policy
Selection
readonly=False
related='company_id.attendance_sheet_review_policy'
attendance_week_start
Selection
help='Starting day for Attendance Sheets.'
readonly=False
related='company_id.attendance_week_start'
string='Week Starting Day'
auto_lunch
Boolean
help='Forces a lunch period if duration is over the max time.'
readonly=False
related='company_id.auto_lunch'
string='Auto Lunch'
auto_lunch_duration
Float
help='The duration on an attendance that would trigger an auto lunch.'
readonly=False
related='company_id.auto_lunch_duration'
string='Duration'
auto_lunch_hours
Float
help='Enter the lunch period that would be used for an auto lunch.'
readonly=False
related='company_id.auto_lunch_hours'
string='Lunch Hours'
No public methods.