| 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/18.0/hr_attendance_report_theoretical_time |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Víctor Martínez, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr-attendance |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:16 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/calendar: - calendar_public_holiday OCA/hr-holidays: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - digest - bus - web_tour - html_editor - portal - web_editor - http_routing - auth_signup - resource - phone_validation - resource_mail - barcodes - hr_holidays - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
openupgradelib |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module adds a new report called "Theoretical vs Attended Time Analysis" that compares worked time, measured through attendances records, with the theoretical time, computed from employee's working calendar, public holidays and employee specific leaves. Missing attendance days are generated on the fly in the report with their corresponding theoretical hours. There is the possibility of counting as theoretical time some leave types if specified in them. As an example, imagine a work week with 40 theoretical hours, and these attendance situation: - Monday: Worked 10 hours - Tuesday: Worked 10 hours - Wednesday: Worked 10 hours - Thursday: Worked 10 hours - Friday: Ask for a compensation leave (said leave type), as already worked 40 hours. On the report, whole week should put 40 theoretical hours - 8 per day - against 40 worked hours (although they were on previous days, and none on Friday). On contrary, if you want to take a holiday one of that days, you should ask for a leave type without the check for counting as theoretical time, and then the whole week will be 32 theoretical hours against the worked hours of that week without the leave. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance | field | Inherits hr_attendance.hr_attendance_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr.view_employee_form | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
company_id
Many2one
related='employee_id.company_id'
date
Date
readonly=True
department_id
Many2one → hr.department
comodel_name='hr.department'
readonly=True
string='Department'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (0)No public methods.
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
No new fields.
Public methods (0)No public methods.
category_ids
Many2many → hr.employee.category
comodel_name='hr.employee.category'
string='Tag'
department_id
Many2one → hr.department
comodel_name='hr.department'
string='Department'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
string='Employees'
default_get(self, fields)
populate(self)
view_report(self)
| 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/17.0/hr_attendance_report_theoretical_time |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Víctor Martínez, Weblate, OCA-git-bot, Juanjo, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr-attendance |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:08 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr-holidays: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - phone_validation - bus - web_tour - resource - barcodes - hr_holidays - calendar - onboarding |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module adds a new report called "Theoretical vs Attended Time Analysis" that compares worked time, measured through attendances records, with the theoretical time, computed from employee's working calendar, public holidays and employee specific leaves. Missing attendance days are generated on the fly in the report with their corresponding theoretical hours. There is the possibility of counting as theoretical time some leave types if specified in them. As an example, imagine a work week with 40 theoretical hours, and these attendance situation: - Monday: Worked 10 hours - Tuesday: Worked 10 hours - Wednesday: Worked 10 hours - Thursday: Worked 10 hours - Friday: Ask for a compensation leave (said leave type), as already worked 40 hours. On the report, whole week should put 40 theoretical hours - 8 per day - against 40 worked hours (although they were on previous days, and none on Friday). On contrary, if you want to take a holiday one of that days, you should ask for a leave type without the check for counting as theoretical time, and then the whole week will be 32 theoretical hours against the worked hours of that week without the leave. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance | field | Inherits hr_attendance.hr_attendance_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr.view_employee_form | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
company_id
Many2one
related='employee_id.company_id'
date
Date
readonly=True
department_id
Many2one → hr.department
comodel_name='hr.department'
readonly=True
string='Department'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
category_ids
Many2many → hr.employee.category
comodel_name='hr.employee.category'
string='Tag'
department_id
Many2one → hr.department
comodel_name='hr.department'
string='Department'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
string='Employees'
default_get(self, fields)
populate(self)
view_report(self)
| 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/16.0/hr_attendance_report_theoretical_time |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Dũng (Trần Đình) |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr-attendance |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:53 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr-holidays: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - barcodes - hr_holidays - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance.report | field | Inherits hr_attendance.hr_attendance_report_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr.view_employee_form | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
theoretical_hours
Float
readonly=True
No public methods.
company_id
Many2one
related='employee_id.company_id'
date
Date
readonly=True
department_id
Many2one → hr.department
comodel_name='hr.department'
readonly=True
string='Department'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
category_ids
Many2many → hr.employee.category
comodel_name='hr.employee.category'
string='Tag'
department_id
Many2one → hr.department
comodel_name='hr.department'
string='Department'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
string='Employees'
default_get(self, fields)
populate(self)
view_report(self)
| 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/15.0/hr_attendance_report_theoretical_time |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Víctor Martínez, Weblate, OCA-git-bot, David, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr-attendance |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:39 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr-holidays: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - barcodes - hr_holidays - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance.report | field | Inherits hr_attendance.hr_attendance_report_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr.view_employee_form | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
theoretical_hours
Float
readonly=True
No public methods.
company_id
Many2one
related='employee_id.company_id'
date
Date
readonly=True
department_id
Many2one → hr.department
comodel_name='hr.department'
readonly=True
string='Department'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
category_ids
Many2many → hr.employee.category
comodel_name='hr.employee.category'
string='Tag'
department_id
Many2one → hr.department
comodel_name='hr.department'
string='Department'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
string='Employees'
default_get(self, fields)
populate(self)
view_report(self)
| 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_report_theoretical_time |
| VERSION | |
| VERSION | 1.0.5 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Maksym Yankin, Aritz Olea |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr-attendance |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:06 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr-holidays: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - barcodes - hr_holidays - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance | field | Inherits hr_attendance.hr_attendance_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr.view_employee_form | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
date
Date
readonly=True
string='Date'
department_id
Many2one → hr.department
comodel_name='hr.department'
readonly=True
string='Department'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
category_ids
Many2many → hr.employee.category
comodel_name='hr.employee.category'
string='Tag'
department_id
Many2one → hr.department
comodel_name='hr.department'
string='Department'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
string='Employees'
default_get(self, fields)
populate(self)
view_report(self)
| 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/13.0/hr_attendance_report_theoretical_time |
| VERSION | |
| VERSION | 1.1.5 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | mreficent, Enric Tobella, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Pedro Gonzalez |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr-attendance |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:17 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr-holidays: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - mail_bot - barcodes - hr_holidays - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance | field | Inherits hr_attendance.hr_attendance_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr.view_employee_form | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
date
Date
readonly=True
string='Date'
department_id
Many2one → hr.department
comodel_name='hr.department'
readonly=True
string='Department'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
category_ids
Many2many → hr.employee.category
comodel_name='hr.employee.category'
string='Tag'
department_id
Many2one → hr.department
comodel_name='hr.department'
string='Department'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
string='Employees'
default_get(self, fields)
populate(self)
view_report(self)
| 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_report_theoretical_time |
| VERSION | |
| VERSION | 1.5.1 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Enric Tobella, david, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Timon Tschanz, Jaime Arroyo |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:19 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - barcodes - hr_holidays - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance | field | Inherits hr_attendance.hr_attendance_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr_attendance.view_employee_form_inherit_hr_attendance | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
date
Date
readonly=True
string='Date'
department_id
Many2one → hr.department
comodel_name='hr.department'
readonly=True
string='Department'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
category_ids
Many2many → hr.employee.category
string='Tag'
args: 'hr.employee.category'
department_id
Many2one → hr.department
string='Department'
args: 'hr.department'
employee_ids
Many2many → hr.employee
string='Employees'
args: 'hr.employee'
default_get(self, fields)
populate(self)
view_report(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/11.0/hr_attendance_report_theoretical_time |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | OCA Transbot, oca-travis, OCA-git-bot, Jaime Arroyo |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:58 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr: - hr_holidays_public odoo/odoo: - hr_attendance - hr - base_setup - base - web - bus - web_tour - resource - barcodes - hr_holidays - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.holidays.status | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
hr_attendance_view_pivot |
hr.attendance.pivot - Don't show "Theoretical hours" measure | hr.attendance | field | Inherits hr_attendance.hr_attendance_view_pivot |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr_attendance.view_employee_form_inherit_hr_attendance | |
wizard_theoretical_time_form_view |
wizard.theoretical.time.form (in hr_attendance_report_theoretical_time) | wizard.theoretical.time | form | New |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
No public methods.
date
Date
readonly=True
string='Date'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
No new fields.
Public methods (1)search(self, args, offset=0, limit=None, order=None, count=False)
category_ids
Many2many → hr.employee.category
string='Tag'
args: 'hr.employee.category'
department_id
Many2one → hr.department
string='Department'
args: 'hr.department'
employee_ids
Many2many → hr.employee
string='Employees'
args: 'hr.employee'
default_get(self, fields)
populate(self)
view_report(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/10.0/hr_attendance_report_theoretical_time |
| VERSION | |
| VERSION | 2.0.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, david, OCA Transbot, oca-travis, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:19:57 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/hr: - hr_holidays_compute_days - hr_public_holidays odoo/odoo: - hr_attendance - hr - base_setup - base - web_kanban - web - bus - web_tour - resource - report - barcodes - hr_holidays - calendar - base_action_rule - web_calendar - product - decimal_precision |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.holidays.status | field | Inherits hr_holidays.edit_holiday_status_form | |
hr_attendance_theoretical_view_filter |
hr.attendance.theoretical.time.report | search | New | |
hr_attendance_theoretical_view_graph |
hr.attendance.theoretical.time.report | graph | New | |
hr_attendance_theoretical_view_pivot |
hr.attendance.theoretical.time.report | pivot | New | |
recompute_theoretical_attendance_form |
recompute.theoretical.attendance | form | New | |
view_employee_form_inherit_hr_attendance |
hr.employee | field | Inherits hr_attendance.view_employee_form_inherit_hr_attendance |
theoretical_hours
Float
compute='_compute_theoretical_hours'
compute_sudo=True
store=True
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
date
Date
readonly=True
string='Date'
difference
Float
readonly=True
employee_id
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
string='Employee'
theoretical_hours
Float
readonly=True
string='Theoric'
worked_hours
Float
readonly=True
string='Worked'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
theoretical_hours_start_date
Date
help='Fill this field for setting a manual start date for computing the theoretical hours independently from the attendances. If not filled, employee creation date or the calendar start date will be used (the greatest of both).'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, vals)
write(self, vals)
include_in_theoretical
Boolean
help="If you check this mark, leaves in this category won't reduce the number of theoretical hours in the attendance report."
string='Include in theoretical hours'
No public methods.
date_from
Datetime
help='Recompute attendances from this date'
required=True
string='From'
date_to
Datetime
help='Recompute attendances up to this date'
required=True
string='To'
employee_ids
Many2many → hr.employee
comodel_name='hr.employee'
help='Recompute these employees attendances'
required=True
string='Employees'
action_recompute(self)
| STATUS | |
|---|---|
| STATUS | Open migration PR - not merged yet for this version |
| REPOSITORY | |
| REPOSITORY | OCA/hr-attendance |
| PULL REQUEST | |
| PULL REQUEST | [19.0][MIG] hr_attendance_report_theoretical_time: Migration to 19.0 (#283) |