Odoo 20.0 Community · Persistent

hr.work.entry.type: fields, relations and API

The hr.work.entry.type model ("Time Type") is a persistent model declared by the Work Entries module, then extended by 1 other module. It exposes 70 fields, 40 of them declared directly on the model; 32 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 20 JSON-2 API call.

Model identity

Technical name
hr.work.entry.type
Label
Time Type
Type
Persistent (models.Model)
SQL table
hr_work_entry_type
Origin module
Work Entries (hr_work_entry)
Extended by
hr_holidays
Default order (_order)
sequence
Inherits from (mixins)
mail.threadmail.activity.mixin

Model fields

40 own fields, 24 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

70 of 70 fields shown

Technical nameLabelTypeDetails
activeActive

If the active field is set to false, it will allow you to hide the time type without removing it.

boolean
allocation_countAllocationsinteger
computed

added by Time Off (hr_holidays)

allocation_notif_subtype_idAllocation Notification Subtypemany2one

added by Time Off (hr_holidays)

allocation_validation_typeApproval

Select the level of approval needed in case of request by employee # - No validation needed: The employee's request is automatically approved. # - Approved by Time Off Officer: The employee's request need to be manually approved # by the Time Off Officer, Employee's Approver or both.

selection

Values: no_validation (None), hr (By HR Responsible), manager (By Time Off Approver), both (By HR Responsible and Time Off Approver)

added by Time Off (hr_holidays)

allow_request_on_topAllow Request on Top

If checked, users can request another leave on top of the ones of this type.

boolean

added by Time Off (hr_holidays)

allows_negativeAllow Negative

If checked, users request can exceed the allocated days and balance can go in negative.

boolean

added by Time Off (hr_holidays)

amount_rateRate

The percentage of wages paid. For standard paid leave set to 100%, for unpaid leave to 0%, or for double-pay to 200%.

float
codePayroll Code

The code is used as a reference in salary rules. Careful, changing an existing code can lead to unwanted behaviors.

char
required
colorColor

The color selected here will be used in every screen with the time type.

integer
count_asCount As

Determines if the entry counts as working time or absence.

selection
required

Values: working_time (Working Time), absence (Absence)

count_days_asCount Days as

If you take a leave on the whole week, worked days will result in a various number based on the working hours of the employee, calendar days will result in 7 in every case.

selection

Values: working (Working Days), calendar (Calendar Days)

added by Time Off (hr_holidays)

country_codeCountry Codechar
read-only

related: country_id.code

country_idCountrymany2one
create_calendar_meetingDisplay Time Off in Calendar

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.

boolean

added by Time Off (hr_holidays)

descriptionDescriptiontext
translatable
display_codeDisplay Code

This code can be changed, it is only for a display purpose (3 letters max)

char
translatable
elligible_for_accrual_rateEligible for Accrual Rate

If checked, this time type will be taken into account for accruals computation.

boolean
computed, stored

added by Time Off (hr_holidays)

employee_requestsAllow Employee Requests

Extra Days Requests Allowed: User can request an allocation for himself. Not Allowed: User cannot request an allocation.

boolean
required

added by Time Off (hr_holidays)

external_codeExternal Code

Use this code to export your data to a third party

char
group_days_leaveGroup Time Offfloat
computed

added by Time Off (hr_holidays)

has_valid_allocationHas Valid Allocation

This indicates if it is still possible to use this type of leave

boolean
computed

added by Time Off (hr_holidays)

hide_on_dashboardHide On Dashboard

Non-visible allocations can still be selected when taking a leave, but will simply not be displayed on the leave dashboard.

boolean

added by Time Off (hr_holidays)

include_public_holidays_in_durationIgnore Public Holidays

Public holidays should be counted in the leave duration when applying for leaves

boolean

added by Time Off (hr_holidays)

is_usedIs Usedboolean
computed

added by Time Off (hr_holidays)

leave_notif_subtype_idTime Off Notification Subtypemany2one

added by Time Off (hr_holidays)

leave_validation_typeTime Off Validationselection

Values: no_validation (None), hr (By HR Responsible), manager (By Time Off Approver), both (By HR Responsible and Time Off Approver)

added by Time Off (hr_holidays)

leaves_takenTime off Already Taken

This value is given by the sum of all time off requests with a negative value.

float
computed

added by Time Off (hr_holidays)

max_allowed_negativeMaximum Excess Amount

Define the maximum level of negative days this kind of time off can reach. Value must be at least 1.

integer

added by Time Off (hr_holidays)

max_leavesMaximum Allowed

This value is given by the sum of all time off requests with a positive value.

float
computed

added by Time Off (hr_holidays)

nameNamechar
requiredtranslatable
request_unitDuration Type

Define the minimum time off duration in which an employee can take when requesting a leave

selection
required

Values: day (Full Day), half_day (Half-Day), hour (Custom Hours)

added by Time Off (hr_holidays)

requires_allocationRequires Allocationboolean
required

added by Time Off (hr_holidays)

resource_calendar_attendance_idsResource Calendar Attendanceone2many
read-only

inverse: work_entry_type_id

resource_calendar_selectableSelectable in Working Scheduleboolean
computed, stored
sequenceSequenceinteger
support_documentSupporting Document Expected

When enabled, employees will see a notice that this leave type requires a supporting document.

boolean

added by Time Off (hr_holidays)

time_off_selectableSelectable in Time Offboolean

added by Time Off (hr_holidays)

unit_of_measureUnit

Define if the time type will be allocated/accrued in hours or days

selection
required

Values: hour (Hours), day (Days)

added by Time Off (hr_holidays)

unpaidIs Unpaidboolean

added by Time Off (hr_holidays)

virtual_remaining_leavesVirtual Remaining Time Off

Maximum Time Off Allowed - Time Off Already Taken - Time Off Waiting Approval

float
computed

added by Time Off (hr_holidays)

activity_calendar_event_idNext Activity Calendar Eventmany2one
computed

inherited from mail.activity.mixin

activity_date_deadlineNext Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

activity_exception_decorationActivity Exception Decoration

Type of the exception activity on record.

selection
computed

Values: warning (Alert), danger (Error)

inherited from mail.activity.mixin

activity_exception_iconIcon

Icon to indicate an exception activity.

char
computed

inherited from mail.activity.mixin

activity_idsActivitiesone2many

inverse: res_id

inherited from mail.activity.mixin

activity_plans_idsActivity Plansmany2many
computed

inherited from mail.activity.mixin

activity_stateActivity State

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
computed

Values: overdue (Overdue), today (Today), planned (Planned)

inherited from mail.activity.mixin

activity_summaryNext Activity Summarychar

related: activity_ids.summary

inherited from mail.activity.mixin

activity_type_iconActivity Type Iconchar

related: activity_ids.icon

inherited from mail.activity.mixin

activity_type_idNext Activity Typemany2one

related: activity_ids.activity_type_id

inherited from mail.activity.mixin

activity_user_idResponsible Usermany2one
read-onlycomputed

inherited from mail.activity.mixin

has_messageHas Messageboolean
computed

inherited from mail.thread

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

my_activity_date_deadlineMy Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 20 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/hr.work.entry.type/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","code","count_as","employee_requests","request_unit"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/hr.work.entry.type/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","code","count_as","employee_requests","request_unit"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/hr-work-entry-type">hr.work.entry.type (Odoo 20.0)</a>

Sources

Data verified on September 25, 2026 · Odoo 20.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.