TIP: You can type at any time to perform a new search.
Time Off
hr_holidays · odoo/odoo
🛠 Migration considerations
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE ir_rule r SET domain_force = '["|", ("employee_id", "=", False), ("employee_id.company_id", "in", company_ids), "|", ("holiday_status_id.company_id", "=", False), ("holiday_status_id.company_id", "in", company_ids)]' FROM ir_model_data d WHERE d.res_id = r.id AND d.model = 'ir.rule' AND d.module = 'hr_holidays' AND d.name = 'hr_leave_allocation_rule_multicompany'` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
hr.leave.employee.type.report— Model 'hr.leave.employee.type.report' has `_auto = False` and its init() (re)creates a SQL VIEW: the standard reporting-model pattern, but its raw SQL isn't checked by the ORM - verify it against renamed/removed tables and columns in the target version. migration-sql-viewhr.leave.report— Model 'hr.leave.report' has `_auto = False` and its init() (re)creates a SQL VIEW: the standard reporting-model pattern, but its raw SQL isn't checked by the ORM - verify it against renamed/removed tables and columns in the target version. migration-sql-viewhr.leave.report.calendar— Model 'hr.leave.report.calendar' has `_auto = False` and its init() (re)creates a SQL VIEW: the standard reporting-model pattern, but its raw SQL isn't checked by the ORM - verify it against renamed/removed tables and columns in the target version. migration-sql-view
Found by automated static analysis: patterns worth a look before/after upgrading this module to a newer Odoo version.
- Repository
- odoo/odoo · module folder
- Module version
- 1.6
- Category
- Human Resources/Time Off
- Folder size
- 14.58 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://www.odoo.com/app/time-off
- Last tracking update
- 2026-08-17 16:17:05
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Thibault Delavallée, odoo, Odoo Translation Bot, Aaron Bohy, Géry Debongnie, Yannick Tivisse, Pierre Masereel, Adrien Dieudonne, Lucas Perais, Alexandre Kühn, Julien Castiaux, Romeo Fragomeli, Adrien Dieudonné, Sébastien Theys, Julien Mougenot, Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, William Braeckman, Ahmad Khanalizadeh, Didier (did), Abdelouahab (abla), Dossogne Bertrand, luvi, Renaud Thiry, tsm-odoo, Louis Wicket (wil), alsh-odoo, Mylyna Hy, Adrien Widart (awt), Victor Piryns (pivi), Thomas Becquevort (thbe), Levi Siuzdak (sile), Dylan Kiss (dyki), Mayurrajsinh Rathod, Leloup Loïc (lole), Simon Goffaux (sigo), Xavier Bol (xbo), Dawn Hwang, Noe Antoine, omra-odoo, sesn-odoo, Nicolas Viseur (vin), maad-odoo, Mélanie, Youssef Bashandy, ravb-odoo, bary, reka-odoo, jugj-odoo, Abderraouf Ghrissi (abgh), Nathaniel (naja), Bastien Fafchamps (bafa), mega, Tanguy Quéguineur, Alex Kühn, Chrysanthe (chgo), asno-odoo, aamo-odoo, rmun-odoo, Mathieu Coutant, Yassin Abdelkarim, kais-odoo, guce, rame-odoo, Abdelrahman Mahmoud (amah), Sanchit Gupta, ahta, Julien Schwanen, st-yes, Chris Duvivier, elhayyany, ayve-odoo, Pierre Pulinckx, Bastien PIERRE, nikj-odoo, Michaël Mattiello, Corentin Heinix (cohe), Mahdi Alijani (malj), bona-odoo, Krzysztof Magusiak (krma), yavy-odoo, Hazem Ibrahim, Maeva De Keyser (MDEK), nsirjacobs, Gurpreet Singh, pajo, Giorgio Tocco (gito), akha, kareem, jayp-odoo, josm-odoo, Bertrand Dossogne, thha-odoo, romc-odoo, npm, Mongy (abmn), adip-odoo, ksar-odoo, dhka-odoo, Einar Andersen (eian), josv-odoo, path-odoo, Hashem Elmaleeh, assh-odoo, Kevin Gerard (kege), hossamelgendy1, renol-odoo, YoussefM890, kuay-odoo, Merlin Guillaume, saurabh, Abdelouahab Laaroussi (abla), lebm-odoo, Dilya Anvarbekova, Jurgen Gjini, Federico Falcone, karygauss03, Lucas ESTEBAN (lues), dhbr-odoo, Camila Vives, Feeedeee, chpa-odoo, Faruk Avcı, Amr Yasser (amry), shmn-odoo, adak-ahmed, mear-odoo, Dylan Provoost, 3amo-magdy, soukaina tyes, Mohamed Ayman, Joseph Nechleba (jonec), Rons, Kirra Hyde, adak(ahmed), amga-odoo, Kishan (kiga), Devendra Ladhani, hamza, Brian Nguyen, Ahmed Naem (Ahnae)
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- hr_employee_calendar_planning, hr_holidays_attendance, hr_holidays_homeworking, hr_holidays_leave_report_calendar_type, hr_holidays_natural_period, hr_holidays_public, hr_holidays_settings, hr_presence, hr_work_entry_holidays, l10n_fr_hr_holidays, l10n_in_hr_holidays, payroll, project_timesheet_holidays, test_discuss_full
- Description
Manage time off requests and allocations ======================================== This application controls the time off schedule of your company. It allows employees to request time off. Then, managers can review requests for time off and approve or reject them. This way you can control the overall time off planning for the company or department. You can configure several kinds of time off (sickness, paid days, ...) and allocate time off to an employee or department quickly using time off allocation. An employee can also make a request for more days off by making a new time off allocation. It will increase the total of available days for that time off type (if the request is accepted). You can keep track of time off in different ways by following reports: * Time Off Summary * Time Off by Department * Time Off Analysis A synchronization with an internal agenda (Meetings of the CRM module) is also possible in order to automatically create a meeting when a time off request is accepted by setting up a type of meeting in time off Type.
Code Analysis ⓘ
Views touched (73)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
edit_holiday_status_form |
hr.leave.type.form | hr.leave.type | form | New |
hr_accrual_level_view_form |
hr.leave.accrual.level.form | hr.leave.accrual.level | form | New |
hr_accrual_plan_view_form |
hr.leave.accrual.plan.form | hr.leave.accrual.plan | form | New |
hr_accrual_plan_view_search |
hr.leave.accrual.plan.search | hr.leave.accrual.plan | search | New |
hr_accrual_plan_view_tree |
hr.leave.accrual.plan.list | hr.leave.accrual.plan | list | New |
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | kanban | Inherits hr.hr_department_view_kanban |
hr_employee_public_form_view_inherit |
hr.employee.public.leave.form.inherit | hr.employee.public | form | Inherits hr.hr_employee_public_view_form |
hr_employee_view_search |
hr.employee.search.view.inherit | hr.employee | search | Inherits hr.view_employee_filter |
hr_holiday_status_view_kanban |
hr.leave.type.kanban | hr.leave.type | kanban | New |
hr_holidays_cancel_leave_form |
hr.holidays.cancel.leave | form | New | |
hr_kanban_view_employees_kanban |
hr.employee.kanban.leaves.status | hr.employee | kanban | Inherits hr.hr_kanban_view_employees |
hr_kanban_view_public_employees_kanban |
hr.employee.public.kanban.leaves.status | hr.employee.public | kanban | Inherits hr.hr_employee_public_view_kanban |
hr_leave_allocation_generate_multi_wizard_view_form |
hr.leave.allocation.generate.multi.wizard | form | New | |
hr_leave_allocation_view_activity |
hr.leave.allocation.view.activity | hr.leave.allocation | activity | New |
hr_leave_allocation_view_form |
hr.leave.allocation.view.form | hr.leave.allocation | form | New |
hr_leave_allocation_view_form_dashboard |
hr.leave.view.form.dashboard | hr.leave.allocation | form | Inherits hr_holidays.hr_leave_allocation_view_form |
hr_leave_allocation_view_form_manager |
hr.leave.allocation.view.form.manager | hr.leave.allocation | form | Inherits hr_holidays.hr_leave_allocation_view_form |
hr_leave_allocation_view_form_manager_dashboard |
hr.leave.allocation.view.form.manager.dashboard | hr.leave.allocation | form | Inherits hr_holidays.hr_leave_allocation_view_form_manager |
hr_leave_allocation_view_kanban |
hr.leave.allocation.view.kanban | hr.leave.allocation | kanban | New |
hr_leave_allocation_view_search_manager |
hr.leave.allocation.view.search.my | hr.leave.allocation | search | Inherits view_hr_leave_allocation_filter |
hr_leave_allocation_view_search_my |
hr.leave.allocation.view.search.my | hr.leave.allocation | search | Inherits view_hr_leave_allocation_filter |
hr_leave_allocation_view_tree |
hr.leave.allocation.view.list | hr.leave.allocation | list | New |
hr_leave_allocation_view_tree_my |
hr.leave.allocation.view.list.my | hr.leave.allocation | list | Inherits hr_leave_allocation_view_tree |
hr_leave_employee_type_report |
hr.leave.employee.type.report.view.pivot | hr.leave.employee.type.report | pivot | New |
hr_leave_employee_view_dashboard |
hr.leave.view.dashboard | hr.leave | calendar | New |
hr_leave_generate_multi_wizard_view_form |
hr.leave.generate.multi.wizard | form | New | |
hr_leave_mandatory_day_view_form |
hr.leave.mandatory.day | form | New | |
hr_leave_mandatory_day_view_list |
hr.leave.mandatory.day | list | New | |
hr_leave_mandatory_day_view_search |
hr.leave.mandatory.day | search | New | |
hr_leave_report_calendar_view |
hr.leave.report.calendar.view | hr.leave.report.calendar | calendar | New |
hr_leave_report_calendar_view_form |
hr.leave.report.calendar.view.form | hr.leave.report.calendar | form | New |
hr_leave_report_calendar_view_search |
hr.leave.report.calendar.view.search | hr.leave.report.calendar | search | New |
hr_leave_report_calendar_year_view |
hr.leave.report.calendar.year.view | hr.leave.report.calendar | calendar | New |
hr_leave_report_graph |
report.hr.holidays.report.leave_all.graph | hr.leave.report | graph | New |
hr_leave_report_pivot |
report.hr.holidays.report.leave_all.pivot | hr.leave.report | pivot | New |
hr_leave_report_tree |
report.hr.holidays.report.leave_all.list | hr.leave.report | list | New |
hr_leave_view_activity |
hr.leave.view.activity | hr.leave | activity | New |
hr_leave_view_calendar |
hr.leave.view.calendar | hr.leave | calendar | New |
hr_leave_view_dashboard |
hr.leave.view.dashboard | hr.leave | calendar | New |
hr_leave_view_form |
hr.leave.view.form | hr.leave | form | New |
hr_leave_view_form_dashboard |
hr.leave.view.form.dashboard | hr.leave | form | Inherits hr_holidays.hr_leave_view_form |
hr_leave_view_form_dashboard_manager_new_time_off |
hr.leave.view.form.dashboard.new.time.off | hr.leave | form | Inherits hr_holidays.hr_leave_view_form_dashboard_new_time_off |
hr_leave_view_form_dashboard_new_time_off |
hr.leave.view.form.dashboard.new.time.off | hr.leave | form | Inherits hr_holidays.hr_leave_view_form_dashboard |
hr_leave_view_form_manager |
hr.leave.view.form.manager | hr.leave | form | Inherits hr_leave_view_form |
hr_leave_view_kanban |
hr.leave.view.kanban | hr.leave | kanban | New |
hr_leave_view_kanban_my |
hr.leave.view.kanban.my | hr.leave | kanban | Inherits hr_holidays.hr_leave_view_kanban |
hr_leave_view_search_manager |
hr.holidays.view.search.manager | hr.leave | search | Inherits view_hr_holidays_filter |
hr_leave_view_search_my |
hr.holidays.view.search.my | hr.leave | search | Inherits view_hr_holidays_filter |
hr_leave_view_search_report |
hr.holidays.view.search.report | hr.leave | search | Inherits view_hr_holidays_filter |
hr_leave_view_tree |
hr.holidays.view.list | hr.leave | list | New |
hr_leave_view_tree_my |
hr.holidays.view.list | hr.leave | list | Inherits hr_leave_view_tree |
is_based_on_worked_time_no |
is_based_on_worked_time_no | ir.ui.view | qweb | New |
is_based_on_worked_time_yes |
is_based_on_worked_time_yes | ir.ui.view | qweb | New |
report_holidayssummary |
report_holidayssummary | ir.ui.view | qweb | New |
resource_calendar_form_inherit |
resource.calendar.form.inherit | resource.calendar | form | Inherits resource.resource_calendar_form |
resource_calendar_leave_form_inherit |
resource.calendar.leaves.form.inherit | resource.calendar.leaves | form | Inherits resource.resource_calendar_leave_form |
resource_calendar_leaves_tree_inherit |
resource.calendar.leaves.list.inherit | resource.calendar.leaves | list | Inherits resource.resource_calendar_leave_tree |
resource_calendar_leaves_view_search_inherit |
resource.calendar.leaves.search.inherit | resource.calendar.leaves | search | Inherits resource.view_resource_calendar_leaves_search |
resource_calendar_view_tree |
resource.calendar.view.list.inherit.hr.holidays | resource.calendar | list | Inherits resource.view_resource_calendar_tree |
view_calendar_event_form_inherit |
view.calendar.event.form.inherit | calendar.event | form | Inherits calendar.view_calendar_event_form |
view_employee_form_leave_inherit |
hr.employee.leave.form.inherit | hr.employee | form | Inherits hr.view_employee_form |
view_employee_tree_inherit_leave |
hr.employee.list.leave | hr.employee | list | Inherits hr.view_employee_tree |
view_evaluation_report_graph |
hr.holidays.graph | hr.leave | graph | New |
view_holiday_graph |
hr.holidays.report_graph | hr.leave | graph | New |
view_holiday_list |
hr.holidays.report_list | hr.leave | list | New |
view_holiday_pivot |
hr.holidays.report_pivot | hr.leave | pivot | New |
view_holiday_status_normal_tree |
hr.leave.type.normal.list | hr.leave.type | list | New |
view_holidays_status_filter |
hr.leave.type.filter | hr.leave.type | search | New |
view_hr_holidays_filter |
hr.holidays.filter | hr.leave | search | New |
view_hr_holidays_filter_report |
hr.holidays.filter | hr.leave.report | search | New |
view_hr_holidays_summary_employee |
hr.holidays.summary.employee.form | hr.holidays.summary.employee | form | New |
view_hr_leave_allocation_filter |
hr.holidays.filter_allocations | hr.leave.allocation | search | New |
view_search_hr_holidays_employee_type_report |
hr.holidays.filter | hr.leave.employee.type.report | search | New |
HTTP endpoints (5)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/allocation/refuse |
HrHolidaysController.hr_holidays_allocation_refuse |
user | http | GET | |
/allocation/validate |
HrHolidaysController.hr_holidays_allocation_validate |
user | http | GET | |
/leave/approve |
HrHolidaysController.hr_holidays_request_approve |
user | http | GET | |
/leave/refuse |
HrHolidaysController.hr_holidays_request_refuse |
user | http | GET | |
/leave/validate |
HrHolidaysController.hr_holidays_request_validate |
user | http | GET |
Models touched (28)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (3)
-
absence_of_todayIntegercompute='_compute_leave_count'string='Absence by Today' -
allocation_to_approve_countIntegercompute='_compute_leave_count'string='Allocation to Approve' -
leave_to_approve_countIntegercompute='_compute_leave_count'string='Time Off to Approve'
-
action_open_allocation_department(self) -
action_open_leave_department(self)
New fields (0)
No new fields.
Public methods (1)-
action_register_departure(self)
New fields (12)
-
allocation_countFloatcompute='_compute_allocation_count'groups='hr.group_hr_user' args: 'Total number of days allocated.' -
allocation_displayCharcompute='_compute_allocation_remaining_display' -
allocation_remaining_displayCharcompute='_compute_allocation_remaining_display' -
allocations_countIntegercompute='_compute_allocation_count'groups='hr.group_hr_user' args: 'Total number of allocations' -
current_leave_idMany2one → hr.leave.typecompute='_compute_current_leave'groups='hr.group_hr_user'string='Current Time Off Type' args: 'hr.leave.type' -
current_leave_stateSelectioncompute='_compute_leave_status'groups='hr.group_hr_user'selection=[('confirm', 'Waiting Approval'), ('refuse', 'Refused'), ('validate1', 'Waiting Second Approval'), ('validate', 'Approved'), ('cancel', 'Cancelled')]string='Current Time Off Status' -
hr_icon_displaySelectionselection_add=[('presence_holiday_absent', 'On leave'), ('presence_holiday_present', 'Present but on leave')] -
is_absentBooleancompute='_compute_leave_status'search='_search_absent_employee' args: 'Absent Today' -
leave_date_fromDatecompute='_compute_leave_status'groups='hr.group_hr_user' args: 'From Date' -
leave_date_toDatecompute='_compute_leave_status' args: 'To Date' -
leave_manager_idMany2one → res.userscompute='_compute_leave_manager'domain="[('share', '=', False), ('company_ids', 'in', company_id)]"help='Select the user responsible for approving "Time Off" of this employee.\nIf empty, the approval is done by an Administrator or Approver (determined in settings/users).'readonly=Falsestore=Truestring='Time Off Approver' args: 'res.users' -
show_leavesBooleancompute='_compute_show_leaves' args: 'Able to see Remaining Time Off'
-
action_time_off_dashboard(self) -
create(self, vals_list)@api.model_create_multi -
get_allocation_requests_amount(self)@api.model -
get_mandatory_days(self, start_date, end_date) -
get_mandatory_days_data(self, date_start, date_end)@api.model -
get_public_holidays_data(self, date_start, date_end)@api.model -
get_special_days_data(self, date_start, date_end)@api.model -
get_time_off_dashboard_data(self, target_date=None)@api.model -
write(self, vals)
New fields (6)
-
allocation_displayCharcompute='_compute_allocation_display' -
allocation_remaining_displayCharrelated='employee_id.allocation_remaining_display' -
is_absentBooleancompute='_compute_leave_status'search='_search_absent_employee' args: 'Absent Today' -
leave_date_toDatecompute='_compute_leave_status' args: 'To Date' -
leave_manager_idMany2one → res.userscompute='_compute_leave_manager'domain="[('share', '=', False), ('company_ids', 'in', company_id)]"help='Select the user responsible for approving "Time Off" of this employee.\nIf empty, the approval is done by an Administrator or Approver (determined in settings/users).'readonly=Falsestore=Truestring='Time Off Approver' args: 'res.users' -
show_leavesBooleancompute='_compute_show_leaves' args: 'Able to see Remaining Time Off'
-
action_open_time_off_calendar(self)Open the time off calendar filtered on this employee. -
action_time_off_dashboard(self)
New fields (2)
-
leave_idMany2one → hr.leaverequired=Truestring='Time Off Request' args: 'hr.leave' -
reasonText
-
action_cancel_leave(self)
New fields (3)
-
date_fromDatedefault=<expr>required=Truestring='From' -
empMany2many → hr.employeestring='Employee(s)' args: 'hr.employee', 'summary_emp_rel', 'sum_id', 'emp_id' -
holiday_typeSelectiondefault='Approved'required=Truestring='Select Time Off Type' args: [('Approved', 'Approved'), ('Confirmed', 'Confirmed'), ('both', 'Both Approved and Confirmed')]
-
print_report(self)
New fields (51)
-
active_employeeBooleanrelated='employee_id.active'string='Employee Active' -
attachment_idsOne2many → ir.attachmentstring='Attachments' args: 'ir.attachment', 'res_id' -
can_approveBooleancompute='_compute_can_approve'export_string_translation=False -
can_back_to_approveBooleancompute='_compute_can_back_to_approve'export_string_translation=False -
can_cancelBooleancompute='_compute_can_cancel'export_string_translation=False -
can_refuseBooleancompute='_compute_can_refuse'export_string_translation=False -
can_validateBooleancompute='_compute_can_validate'export_string_translation=False -
colorIntegerrelated='holiday_status_id.color' args: 'Color' -
company_idMany2one → res.companycompute='_compute_company_id'store=True args: 'res.company' -
dashboard_warning_messageCharcompute='_compute_dashboard_warning_message' -
date_fromDatetimecompute='_compute_date_from_to'index=Truestore=Truetracking=True args: 'Start Date' -
date_toDatetimecompute='_compute_date_from_to'store=Truetracking=True args: 'End Date' -
department_idMany2one → hr.departmentcompute='_compute_department_id'readonly=Falsestore=Truestring='Department' args: 'hr.department' -
duration_displayCharcompute='_compute_duration_display'store=True args: 'Requested' -
employee_company_idMany2onerelated='employee_id.company_id'store=Truestring='Employee Company' -
employee_idMany2one → hr.employeedefault=<expr>domain=<expr>index=Trueondelete='restrict'required=Truestring='Employee'tracking=True args: 'hr.employee' -
first_approver_idMany2one → hr.employeecopy=Falsehelp='This area is automatically filled by the user who validate the time off'readonly=Truestring='First Approval' args: 'hr.employee' -
has_mandatory_dayBooleancompute='_compute_has_mandatory_day' -
holiday_status_idMany2one → hr.leave.typecompute='_compute_from_employee_id'domain="[\n '|',\n ('requires_allocation', '=', False),\n ('has_valid_allocation', '=', True),\n ]"readonly=Falserequired=Truestore=Truestring='Time Off Type'tracking=True args: 'hr.leave.type' -
holiday_status_requires_allocationBooleanrelated='holiday_status_id.requires_allocation' -
is_hatchedBooleancompute='_compute_is_hatched' args: 'Hatched' -
is_strikedBooleancompute='_compute_is_hatched' args: 'Striked' -
last_several_daysBooleancompute='_compute_last_several_days' args: 'All day' -
leave_type_increases_durationCharcompute='_compute_leave_type_increases_duration' -
leave_type_request_unitSelectionreadonly=Truerelated='holiday_status_id.request_unit' -
leave_type_support_documentBooleanrelated='holiday_status_id.support_document' -
max_leavesFloatcompute='_compute_leaves' -
meeting_idMany2one → calendar.eventcopy=Falsestring='Meeting' args: 'calendar.event' -
nameCharcompute='_compute_description'compute_sudo=Falsecopy=Falseinverse='_inverse_description'search='_search_description' args: 'Description' -
notesTextreadonly=False args: 'Reasons' -
number_of_daysFloatcompute='_compute_duration'help='Number of days of the time off request. Used in the calculation.'store=Truetracking=True args: 'Duration (Days)' -
number_of_hoursFloatcompute='_compute_duration'help='Number of hours of the time off request. Used in the calculation.'store=Truetracking=True args: 'Duration (Hours)' -
private_nameChargroups='hr_holidays.group_hr_holidays_responsible' args: 'Time Off Description' -
request_date_fromDateargs: 'Request Start Date' -
request_date_from_periodSelectiondefault='am'string='Date Period Start' args: [('am', 'Morning'), ('pm', 'Afternoon')] -
request_date_toDateargs: 'Request End Date' -
request_date_to_periodSelectiondefault='pm'string='Date Period End' args: [('am', 'Morning'), ('pm', 'Afternoon')] -
request_hour_fromFloatcompute='_compute_request_hour_from_to'readonly=Falsestore=Truestring='Hour from' -
request_hour_toFloatcompute='_compute_request_hour_from_to'readonly=Falsestore=Truestring='Hour to' -
request_unit_halfBooleancompute='_compute_request_unit_half'store=True args: 'Half-Day' -
request_unit_hoursBooleancompute='_compute_request_unit_hours'store=True args: 'Specific Time' -
resource_calendar_idMany2one → resource.calendarcompute='_compute_resource_calendar_id'copy=Falsereadonly=Falsestore=True args: 'resource.calendar' -
second_approver_idMany2one → hr.employeecopy=Falsehelp='This area is automatically filled by the user who validate the time off with second level (If time off type need second validation)'readonly=Truestring='Second Approval' args: 'hr.employee' -
stateSelectioncopy=Falsedefault='confirm'readonly=Falsestore=Truestring='Status'tracking=True args: [('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved'), ('cancel', 'Cancelled')] -
supported_attachment_idsMany2many → ir.attachmentcompute='_compute_supported_attachment_ids'inverse='_inverse_supported_attachment_ids'string='Attach File' args: 'ir.attachment' -
supported_attachment_ids_countIntegercompute='_compute_supported_attachment_ids' -
tzSelectioncompute='_compute_tz' args: _tz_get -
tz_mismatchBooleancompute='_compute_tz_mismatch' -
user_idMany2one → res.userscompute_sudo=Trueindex=Truereadonly=Truerelated='employee_id.user_id'related_sudo=Truestore=Truestring='User' args: 'res.users' -
validation_typeSelectionreadonly=Falserelated='holiday_status_id.leave_validation_type'string='Validation Type' -
virtual_remaining_leavesFloatcompute='_compute_leaves'string='Available Time Off'
-
action_approve(self, check_state=True) -
action_back_to_approval(self) -
action_cancel(self) -
action_documents(self) -
action_refuse(self) -
activity_update(self) -
add_follower(self, employee_id) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
get_unusual_days(self, date_from, date_to=None)@api.model -
message_subscribe(self, partner_ids=None, subtype_ids=None) -
onchange(self, values, field_names, fields_spec) -
open_pending_requests(self)@api.model -
unlink(self) -
write(self, vals)
New fields (30)
-
accrual_plan_idMany2one → hr.leave.accrual.plandefault=<expr>index=Trueondelete='cascade'required=True args: 'hr.leave.accrual.plan', 'Accrual Plan' -
accrual_validityBooleancompute='_compute_accrual_validity'export_string_translation=Falsereadonly=Falsestore=True -
accrual_validity_countIntegerdefault='1'export_string_translation=Falsehelp='You can define a period of time where the days carried over will be available' -
accrual_validity_typeSelectiondefault='day'export_string_translation=Falsehelp='This field defines the unit of time after which the accrual ends.'required=True args: [('day', 'Days'), ('month', 'Months')] -
accrued_gain_timeSelectionexport_string_translation=Falserelated='accrual_plan_id.accrued_gain_time' -
action_with_unused_accrualsSelectioncompute='_compute_action_with_unused_accruals'default='lost'export_string_translation=Falsehelp="When the Carry-Over Time is reached, according to Plan's setting, select what you want to happen with the unused time off: Lost (time will be reset to zero), Carried over (accrued time carried over to the next period.)"required=Truestore=True args: [('lost', 'Lost'), ('all', 'Carried over')] -
added_valueFloatdefault=1digits=(16, 5)export_string_translation=Falserequired=True -
added_value_typeSelectioncompute='_compute_added_value_type'export_string_translation=Falseinverse='_inverse_added_value_type'precompute=Truereadonly=Falserequired=Truestore=True args: [('day', 'Day(s)'), ('hour', 'Hour(s)')] -
can_be_carryoverBooleanexport_string_translation=Falsereadonly=Truerelated='accrual_plan_id.can_be_carryover' -
can_modify_value_typeBooleancompute='_compute_can_modify_value_type'default=Falseexport_string_translation=False -
cap_accrued_timeBooleanexport_string_translation=Falsehelp='When the field is checked the balance of an allocation using this accrual plan will never exceed the specified amount.' -
cap_accrued_time_yearlyBooleanexport_string_translation=Falsehelp='When the field is checked the total amount accrued each year will be capped at the specified amount'readonly=Falsestore=True -
carryover_optionsSelectioncompute='_compute_carryover_options'default='unlimited'export_string_translation=Falsehelp='You can limit the accrued time carried over for the next period.'readonly=Falserequired=Truestore=True args: [('unlimited', 'Unlimited'), ('limited', 'Up to')] -
first_daySelectiondefault='1'export_string_translation=False args: _get_selection_days -
first_monthSelectiondefault='1'export_string_translation=False args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June')] -
first_month_daySelectioncompute='_compute_first_month_day'default='1'export_string_translation=Falsereadonly=Falsestore=True args: _get_selection_days -
frequencySelectiondefault='daily'required=Truestring='Frequency' args: [('hourly', 'Hourly'), ('daily', 'Daily'), ('weekly', 'Weekly'), ('bimonthly', 'Twice a month'), ('monthly', 'Monthly'), ('biyearly', 'Twice a year'), ('yearly', 'Yearly')] -
maximum_leaveFloatcompute='_compute_maximum_leave'default=0digits=(16, 2)export_string_translation=Falsehelp='Choose a cap for this accrual.'readonly=Falsestore=True -
maximum_leave_yearlyFloatdigits=(16, 2)export_string_translation=False -
milestone_dateSelectioncompute='_compute_milestone_date'default='creation'export_string_translation=Falseinverse='_inverse_milestone_date'readonly=Falserequired=Truestore=True args: [('creation', 'At allocation creation'), ('after', 'After')] -
postpone_max_daysIntegerexport_string_translation=Falsehelp='Set a maximum of accruals an allocation keeps at the end of the year.' -
second_daySelectiondefault='15'export_string_translation=False args: _get_selection_days -
second_monthSelectiondefault='7'export_string_translation=False args: [('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')] -
second_month_daySelectioncompute='_compute_second_month_day'default='1'export_string_translation=Falsereadonly=Falsestore=True args: _get_selection_days -
sequenceIntegercompute='_compute_sequence'help='Sequence is generated automatically by start time delta.'store=Truestring='sequence' -
start_countIntegerexport_string_translation=Falsehelp='The accrual starts after a defined period from the allocation start date. This field defines the number of days, months or years after which accrual is used.' -
start_typeSelectiondefault='day'export_string_translation=Falsehelp='This field defines the unit of time after which the accrual starts.'required=True args: [('day', 'Days'), ('month', 'Months'), ('year', 'Years')] -
week_daySelectiondefault='0'required=Truestring='Allocation on' args: [('0', 'Monday'), ('1', 'Tuesday'), ('2', 'Wednesday'), ('3', 'Thursday'), ('4', 'Friday'), ('5', 'Saturday'), ('6', 'Sunday')] -
yearly_daySelectioncompute='_compute_yearly_day'default='1'export_string_translation=Falsereadonly=Falsestore=True args: _get_selection_days -
yearly_monthSelectiondefault='1'export_string_translation=False args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')]
-
action_save_new(self)
New fields (17)
-
accrued_gain_timeSelectiondefault='end'export_string_translation=Falserequired=True args: [('start', 'At the start of the accrual period'), ('end', 'At the end of the accrual period')] -
activeBooleandefault=True -
added_value_typeSelectiondefault='day'export_string_translation=Falsestore=True args: [('day', 'Days'), ('hour', 'Hours')] -
allocation_idsOne2many → hr.leave.allocationexport_string_translation=False args: 'hr.leave.allocation', 'accrual_plan_id' -
can_be_carryoverBooleanexport_string_translation=False -
carryover_dateSelectiondefault='year_start'export_string_translation=Falserequired=Truestring='Carry-Over Time' args: [('year_start', 'At the start of the year'), ('allocation', 'At the allocation date'), ('other', 'Custom date')] -
carryover_daySelectioncompute='_compute_carryover_day'default='1'export_string_translation=Falsereadonly=Falsestore=True args: _get_selection_days -
carryover_monthSelectiondefault=<expr>export_string_translation=False args: [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')] -
company_idMany2one → res.companycompute='_compute_company_id'domain=<expr>readonly=Falsestore='True'string='Company' args: 'res.company' -
employees_countIntegercompute='_compute_employee_count' args: 'Employees' -
is_based_on_worked_timeBooleancompute='_compute_is_based_on_worked_time'export_string_translation=Falsehelp='Only excludes requests where the time off type is set as unpaid kind of.'readonly=Falsestore=True -
level_countIntegercompute='_compute_level_count' args: 'Levels' -
level_idsOne2many → hr.leave.accrual.levelcopy=Truestring='Milestones' args: 'hr.leave.accrual.level', 'accrual_plan_id' -
nameCharrequired=True args: 'Name' -
show_transition_modeBooleancompute='_compute_show_transition_mode'export_string_translation=False -
time_off_type_idMany2one → hr.leave.typecheck_company=Truehelp='Specify if this accrual plan can only be used with this Time Off Type.\n Leave empty if this accrual plan can be used with any Time Off Type.'index='btree_not_null'string='Time Off Type' args: 'hr.leave.type' -
transition_modeSelectiondefault='immediately'export_string_translation=Falserequired=True args: [('immediately', 'Immediately'), ('end_of_accrual', "After this accrual's period")]
-
action_create_accrual_plan_level(self) -
action_open_accrual_plan_employees(self) -
action_open_accrual_plan_level(self, level_id) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi
New fields (38)
-
accrual_plan_idMany2one → hr.leave.accrual.plancompute='_compute_accrual_plan_id'domain="['|', ('time_off_type_id', '=', False), ('time_off_type_id', '=', holiday_status_id)]"index='btree_not_null'inverse='_inverse_accrual_plan_id'readonly=Falsestore=Truetracking=True args: 'hr.leave.accrual.plan' -
active_employeeBooleanreadonly=Truerelated='employee_id.active' args: 'Active Employee' -
actual_lastcallDateexport_string_translation=False -
allocation_typeSelectiondefault='regular'readonly=Truerequired=Truestring='Allocation Type' args: [('regular', 'Regular Allocation'), ('accrual', 'Accrual Allocation')] -
already_accruedBoolean -
approver_idMany2one → hr.employeecopy=Falsehelp='This area is automatically filled by the user who validates the allocation'readonly=Truestring='First Approval' args: 'hr.employee' -
can_approveBooleancompute='_compute_can_approve' args: 'Can Approve' -
can_refuseBooleancompute='_compute_can_refuse' args: 'Can Refuse' -
can_validateBooleancompute='_compute_can_validate' args: 'Can Validate' -
carried_over_days_expiration_dateDateargs: 'Carried over days expiration date' -
date_fromDatecopy=Falsedefault=fields.Date.context_todayindex=Truerequired=Truetracking=True args: 'Start Date' -
date_toDatecopy=Falsetracking=True args: 'End Date' -
department_idMany2one → hr.departmentcompute='_compute_department_id'readonly=Falsestore=Truestring='Department' args: 'hr.department' -
duration_displayCharcompute='_compute_duration_display'help='Field allowing to see the allocation duration in days or hours depending on the type_request_unit' args: 'Allocated (Days/Hours)' -
employee_company_idMany2onereadonly=Truerelated='employee_id.company_id'store=True -
employee_idMany2one → hr.employeedefault=<expr>domain=_domain_employee_idindex=Trueondelete='restrict'required=Truestring='Employee'tracking=True args: 'hr.employee' -
expiring_carryover_daysFloatargs: 'The number of carried over days that will expire on carried_over_days_expiration_date' -
holiday_status_idMany2one → hr.leave.typecompute='_compute_holiday_status_id'default=_default_holiday_status_iddomain=_domain_holiday_status_idreadonly=Falserequired=Truestore=Truestring='Time Off Type' args: 'hr.leave.type' -
is_name_customBooleanreadonly=Truestore=False -
is_officerBooleancompute='_compute_is_officer' -
last_executed_carryover_dateDateexport_string_translation=False -
lastcallDatereadonly=True args: 'Date of the last accrual allocation' -
leaves_takenFloatcompute='_compute_leaves'string='Time off Taken' -
manager_idMany2one → hr.employeecompute='_compute_manager_id'store=Truestring='Manager' args: 'hr.employee' -
max_leavesFloatcompute='_compute_leaves' -
nameCharcompute='_compute_description'compute_sudo=Falsereadonly=Falsestore=Truestring='Description' -
name_validityCharcompute='_compute_description_validity' args: 'Description with validity' -
nextcallDatedefault=Falsereadonly=True args: 'Date of the next accrual allocation' -
notesTextreadonly=False args: 'Reasons' -
number_of_daysFloatcompute='_compute_number_of_days'default=1help='Duration in days. Reference field to use when necessary.'readonly=Falsestore=Truetracking=True args: 'Number of Days' -
number_of_days_displayFloatcompute='_compute_number_of_days_display'help='For an Accrual Allocation, this field contains the theorical amount of time given to the employee, due to a previous start date, on the first run of the plan. This can be manually edited.' args: 'Duration (days)' -
number_of_hours_displayFloatcompute='_compute_number_of_hours_display'default_export_compatible=Truehelp='For an Accrual Allocation, this field contains the theorical amount of time given to the employee, due to a previous start date, on the first run of the plan. This can be manually edited.'store=True args: 'Duration (hours)' -
second_approver_idMany2one → hr.employeecopy=Falsehelp='This area is automatically filled by the user who validates the allocation with second level (If time off type need second validation)'readonly=Truestring='Second Approval' args: 'hr.employee' -
stateSelectioncopy=Falsedefault='confirm'help="The status is 'To Approve', when an allocation request is created.\nThe status is 'Refused', when an allocation request is refused by manager.\nThe status is 'Approved', when an allocation request is approved by manager."readonly=Truestring='Status'tracking=True args: [('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved')] -
type_request_unitSelectioncompute='_compute_type_request_unit' args: [('hour', 'Hours'), ('half_day', 'Half-Day'), ('day', 'Day')] -
validation_typeSelectionreadonly=Truerelated='holiday_status_id.allocation_validation_type'string='Validation Type' -
virtual_remaining_leavesFloatcompute='_compute_leaves'string='Available Time Off' -
yearly_accrued_amountFloatexport_string_translation=False
-
action_approve(self) -
action_refuse(self) -
activity_update(self) -
add_follower(self, employee_id) -
copy(self, default=None) -
create(self, vals_list)@api.model_create_multiOverride to avoid automatic logging of creation -
message_subscribe(self, partner_ids=None, subtype_ids=None) -
onchange(self, values, field_names, fields_spec) -
write(self, vals)
New fields (14)
-
accrual_plan_idMany2one → hr.leave.accrual.plandomain="['|', ('time_off_type_id', '=', False), ('time_off_type_id', '=', holiday_status_id)]" args: 'hr.leave.accrual.plan' -
allocation_modeSelectiondefault='employee'help='Allow to create requests in batchs:\n- By Employee: for a specific employee\n- By Company: all employees of the specified company\n- By Department: all employees of the specified department\n- By Employee Tag: all employees of the specific employee group category'readonly=Falserequired=Truestring='Allocation Mode' args: [('employee', 'By Employee'), ('company', 'By Company'), ('department', 'By Department'), ('category', 'By Employee Tag')] -
allocation_typeSelectiondefault='regular'required=Truestring='Allocation Type' args: [('regular', 'Regular Allocation'), ('accrual', 'Based on Accrual Plan')] -
category_idMany2one → hr.employee.categorystring='Employee Tag' args: 'hr.employee.category' -
company_idMany2one → res.companydefault=<expr>required=True args: 'res.company' -
date_fromDatedefault=fields.Date.context_todayrequired=True args: 'Start Date' -
date_toDateargs: 'End Date' -
department_idMany2one → hr.departmentargs: 'hr.department' -
durationFloatstring='Allocation' -
employee_idsMany2many → hr.employeedomain=<expr>string='Employees' args: 'hr.employee' -
holiday_status_idMany2one → hr.leave.typedomain=_domain_holiday_status_idrequired=Truestring='Time Off Type' args: 'hr.leave.type' -
nameCharcompute='_compute_name'readonly=Falsestore=True args: 'Description' -
notesTextargs: 'Reasons' -
request_unitSelectionrelated='holiday_status_id.request_unit'
-
action_generate_allocations(self)
New fields (11)
-
active_employeeBooleanreadonly=True -
company_idMany2one → res.companyreadonly=Truestring='Company' args: 'res.company' -
date_fromDatetimereadonly=True args: 'Start Date' -
date_toDatetimereadonly=True args: 'End Date' -
department_idMany2one → hr.departmentreadonly=Truestring='Department' args: 'hr.department' -
employee_idMany2one → hr.employeereadonly=Truestring='Employee' args: 'hr.employee' -
holiday_statusSelectionargs: [('taken', 'Taken'), ('left', 'Left'), ('planned', 'Planned')] -
leave_typeMany2one → hr.leave.typereadonly=Truestring='Time Off Type' args: 'hr.leave.type' -
number_of_daysFloataggregator='sum'readonly=True args: 'Number of Days' -
number_of_hoursFloataggregator='sum'readonly=True args: 'Number of Hours' -
stateSelectionreadonly=Truestring='Status' args: [('cancel', 'Cancelled'), ('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved')]
-
action_time_off_analysis(self)@api.model -
init(self)
New fields (9)
-
allocation_modeSelectiondefault='employee'help='Allow to create requests in batchs:\n- By Employee: for a specific employee\n- By Company: all employees of the specified company\n- By Department: all employees of the specified department\n- By Employee Tag: all employees of the specific employee group category'readonly=Falserequired=Truestring='Allocation Mode' args: [('employee', 'By Employee'), ('company', 'By Company'), ('department', 'By Department'), ('category', 'By Employee Tag')] -
category_idMany2one → hr.employee.categorystring='Employee Tag' args: 'hr.employee.category' -
company_idMany2one → res.companydefault=<expr>required=True args: 'res.company' -
date_fromDaterequired=True args: 'Start Date' -
date_toDaterequired=True args: 'End Date' -
department_idMany2one → hr.departmentargs: 'hr.department' -
employee_idsMany2many → hr.employeedomain=<expr>string='Employees' args: 'hr.employee' -
holiday_status_idMany2one → hr.leave.typedomain="[('company_id', 'in', [company_id, False])]"required=Truestring='Time Off Type' args: 'hr.leave.type' -
nameCharargs: 'Description'
-
action_generate_time_off(self)
New fields (8)
-
colorIntegerdefault=<expr> -
company_idMany2one → res.companydefault=<expr>required=True args: 'res.company' -
department_idsMany2many → hr.departmentstring='Departments' args: 'hr.department' -
end_dateDaterequired=True -
job_idsMany2many → hr.jobstring='Job Position' args: 'hr.job' -
nameCharrequired=True -
resource_calendar_idMany2one → resource.calendardomain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" args: 'resource.calendar', 'Working Hours' -
start_dateDaterequired=True
No public methods.
New fields (12)
-
allocation_idMany2one → hr.leave.allocationreadonly=Truestring='Allocation Request' args: 'hr.leave.allocation' -
company_idMany2one → res.companyreadonly=Truestring='Company' args: 'res.company' -
date_fromDatetimereadonly=True args: 'Start Date' -
date_toDatetimereadonly=True args: 'End Date' -
department_idMany2one → hr.departmentreadonly=Truestring='Department' args: 'hr.department' -
holiday_status_idMany2one → hr.leave.typereadonly=Truestring='Time Off Type' args: 'hr.leave.type' -
leave_idMany2one → hr.leavereadonly=Truestring='Time Off Request' args: 'hr.leave' -
leave_typeSelectionreadonly=Truestring='Request Type' args: [('allocation', 'Allocation'), ('request', 'Time Off')] -
nameCharreadonly=True args: 'Description' -
number_of_daysFloatreadonly=True args: 'Number of Days' -
number_of_hoursFloatreadonly=True args: 'Number of Hours' -
stateSelectionreadonly=Truestring='Status' args: [('cancel', 'Cancelled'), ('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved')]
-
action_open_record(self) -
init(self)
New fields (21)
-
company_idMany2one → res.companyreadonly=True args: 'res.company' -
department_idMany2one → hr.departmentreadonly=True args: 'hr.department' -
descriptionChargroups='hr_holidays.group_hr_holidays_user'readonly=True args: 'Description' -
durationFloatreadonly=Truestring='Duration' -
duration_displayCharreadonly=Truerelated='leave_id.duration_display' -
employee_idMany2one → hr.employeereadonly=True args: 'hr.employee' -
holiday_status_idMany2one → hr.leave.typegroups='hr_holidays.group_hr_holidays_user'readonly=Truestring='Time Off Type' args: 'hr.leave.type' -
is_absentBooleanrelated='employee_id.is_absent' -
is_hatchedBooleanreadonly=True args: 'Hatched' -
is_managerBooleancompute='_compute_is_manager' args: 'Manager' -
is_strikedBooleanreadonly=True args: 'Striked' -
job_idMany2one → hr.jobreadonly=True args: 'hr.job' -
leave_idMany2one → hr.leavecomodel_name='hr.leave'groups='hr_holidays.group_hr_holidays_user'readonly=True -
leave_manager_idMany2onerelated='employee_id.leave_manager_id' -
member_of_departmentBooleanrelated='employee_id.member_of_department' -
nameCharcompute='_compute_name'readonly=Truestring='Name' -
start_datetimeDatetimereadonly=Truestring='From' -
stateSelectionreadonly=True args: [('cancel', 'Cancelled'), ('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved')] -
stop_datetimeDatetimereadonly=Truestring='To' -
tzSelectionreadonly=Truestring='Timezone' args: _tz_get -
user_idMany2one → res.usersreadonly=True args: 'res.users'
-
action_approve(self) -
action_refuse(self) -
get_unusual_days(self, date_from, date_to=None)@api.model -
init(self)
New fields (35)
-
accrual_countFloatcompute='_compute_accrual_count'string='Accruals count' -
accruals_idsOne2many → hr.leave.accrual.planargs: 'hr.leave.accrual.plan', 'time_off_type_id' -
activeBooleandefault=Truehelp='If the active field is set to false, it will allow you to hide the time off type without removing it.' args: 'Active' -
allocation_countIntegercompute='_compute_allocation_count'string='Allocations' -
allocation_notif_subtype_idMany2one → mail.message.subtypedefault=<expr>string='Allocation Notification Subtype' args: 'mail.message.subtype' -
allocation_validation_typeSelectiondefault='hr'help="Select the level of approval needed in case of request by employee\n # - No validation needed: The employee's request is automatically approved.\n # - Approved by Time Off Officer: The employee's request need to be manually approved\n # by the Time Off Officer, Employee's Approver or both."string='Approval' args: [('no_validation', 'None needed'), ('hr', 'By Time Off Officer'), ('manager', "By Employee's Approver"), ('both', "By Employee's Approver and Time Off Officer")] -
allow_request_on_topBooleandefault=Falsehelp='If checked, users can request another leave on top of the ones of this type.'string='Allow Request on Top' -
allows_negativeBooleanhelp='If checked, users request can exceed the allocated days and balance can go in negative.'string='Allow Negative Cap' -
colorIntegerhelp='The color selected here will be used in every screen with the time off type.'string='Color' -
company_idMany2one → res.companydomain=<expr>string='Company' args: 'res.company' -
country_codeChardepends=['country_id']readonly=Truerelated='country_id.code' -
country_idMany2one → res.countrycompute='_compute_country_id'default=<expr>domain=<expr>store=Truestring='Country' args: 'res.country' -
create_calendar_meetingBooleandefault=Truehelp='If this field is checked, every leave request of this type will have a corresponding entry in the calendar application. There will be no entry if this stays unchecked.'string='Display Time Off in Calendar' -
elligible_for_accrual_rateBooleancompute='_compute_eligible_for_accrual_rate'help='If checked, this time off type will be taken into account for accruals computation.'readonly=Falsestore=Truestring='Eligible for Accrual Rate' -
employee_requestsBooleandefault=Falsehelp='Extra Days Requests Allowed: User can request an allocation for himself.\n\n Not Allowed: User cannot request an allocation.'required=Truestring='Allow Employee Requests' -
group_days_leaveFloatcompute='_compute_group_days_leave'string='Group Time Off' -
has_valid_allocationBooleancompute='_compute_valid'help='This indicates if it is still possible to use this type of leave'search='_search_valid' -
hide_on_dashboardBooleandefault=Falsehelp='Non-visible allocations can still be selected when taking a leave, but will simply not be displayed on the leave dashboard.'string='Hide On Dashboard' -
icon_idMany2one → ir.attachmentdomain="[('res_model', '=', 'hr.leave.type'), ('res_field', '=', 'icon_id')]"string='Cover Image' args: 'ir.attachment' -
include_public_holidays_in_durationBooleandefault=Falsehelp='Public holidays should be counted in the leave duration when applying for leaves' args: 'Ignore Public Holidays' -
is_usedBooleancompute='_compute_is_used' -
leave_notif_subtype_idMany2one → mail.message.subtypedefault=<expr>string='Time Off Notification Subtype' args: 'mail.message.subtype' -
leave_validation_typeSelectiondefault='hr'string='Time Off Validation' args: [('no_validation', 'None needed'), ('hr', 'By Time Off Officer'), ('manager', "By Employee's Approver"), ('both', "By Employee's Approver and Time Off Officer")] -
leaves_takenFloatcompute='_compute_leaves'help='This value is given by the sum of all time off requests with a negative value.'string='Time off Already Taken' -
max_allowed_negativeIntegerhelp='Define the maximum level of negative days this kind of time off can reach. Value must be at least 1.'string='Maximum Excess Amount' -
max_leavesFloatcompute='_compute_leaves'help='This value is given by the sum of all time off requests with a positive value.'search='_search_max_leaves'string='Maximum Allowed' -
nameCharrequired=Truetranslate=True args: 'Time Off Type' -
request_unitSelectiondefault='day'required=Truestring='Duration Type' args: [('day', 'Day'), ('half_day', 'Half-Day'), ('hour', 'Hours')] -
requires_allocationBooleandefault=Truerequired=Truestring='Requires allocation' -
responsible_idsMany2many → res.usersdomain=<expr>help='Choose the Time Off Officers who will be notified to approve allocation or Time Off Request. If empty, nobody will be notified'string='Notify HR' args: 'res.users', 'hr_leave_type_res_users_rel', 'hr_leave_type_id', 'res_users_id' -
sequenceIntegerdefault=100help='The type with the smallest sequence is the default value in time off request' -
support_documentBooleanstring='Supporting Document' -
time_typeSelectiondefault='leave'help="The distinction between working time (ex. Attendance) and absence (ex. Training) will be used in the computation of Accrual's plan rate."string='Kind of Time Off' args: [('other', 'Worked Time'), ('leave', 'Absence')] -
unpaidBooleandefault=False args: 'Is Unpaid' -
virtual_remaining_leavesFloatcompute='_compute_leaves'help='Maximum Time Off Allowed - Time Off Already Taken - Time Off Waiting Approval'search='_search_virtual_remaining_leaves'string='Virtual Remaining Time Off'
-
action_see_accrual_plans(self) -
action_see_days_allocated(self) -
action_see_group_leaves(self) -
check_allocation_requirement_edit_validity(self)@api.constrains('requires_allocation') -
copy_data(self, default=None) -
get_allocation_data(self, employees, target_date=None) -
get_allocation_data_request(self, target_date=None, hidden_allocations=True)@api.model -
has_accrual_allocation(self)@api.model -
requested_display_name(self)
New fields (0)
No new fields.
Public methods (2)-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (2)-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (1)
-
leave_date_toDatecompute='_compute_leave_date_to'
No public methods.
New fields (1)
-
leave_date_toDaterelated='employee_id.leave_date_to'
-
SELF_READABLE_FIELDS(self)@property -
create(self, vals_list)@api.model_create_multi
New fields (1)
-
associated_leaves_countIntegercompute='_compute_associated_leaves_count' args: 'Time Off Count'
No public methods.
New fields (2)
-
elligible_for_accrual_rateBooleandefault=Falsehelp='If checked, this time off type will be taken into account for accruals computation.'string='Eligible for Accrual Rate' -
holiday_idMany2one → hr.leavestring='Time Off Request' args: 'hr.leave'
-
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
New fields (1)
-
leave_date_toDaterelated='user_id.leave_date_to'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…