Odoo 19.0 Community · Persistent

hr.leave.allocation: fields, relations and API

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

Model identity

Technical name
hr.leave.allocation
Label
Time Off Allocation
Type
Persistent (models.Model)
SQL table
hr_leave_allocation
Origin module
Time Off (hr_holidays)
Extended by
hr_holidays_attendance
Default order (_order)
create_date desc
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
accrual_plan_idAccrual Planmany2one
computed, stored
active_employeeActive Employeeboolean
read-only

related: employee_id.active

actual_lastcallActual Lastcalldate
allocation_typeAllocation Typeselection
requiredread-only

Values: regular (Regular Allocation), accrual (Accrual Allocation)

already_accruedAlready Accruedboolean
approver_idFirst Approval

This area is automatically filled by the user who validates the allocation

many2one
read-only
can_approveCan Approveboolean
computed
can_refuseCan Refuseboolean
computed
can_validateCan Validateboolean
computed
carried_over_days_expiration_dateCarried over days expiration datedate
date_fromStart Datedate
required
date_toEnd Datedate
department_idDepartmentmany2one
computed, stored
duration_displayAllocated (Days/Hours)

Field allowing to see the allocation duration in days or hours depending on the type_request_unit

char
computed
employee_company_idEmployee Companymany2one
read-only

related: employee_id.company_id

employee_idEmployeemany2one
required
employee_overtimeEmployee Overtimefloat
computed

added by HR Attendance Holidays (hr_holidays_attendance)

expiring_carryover_daysThe number of carried over days that will expire on carried_over_days_expiration_datefloat
holiday_status_idTime Off Typemany2one
requiredcomputed, stored
is_name_customIs Name Customboolean
read-only
is_officerIs Officerboolean
computed
last_executed_carryover_dateLast Executed Carryover Datedate
lastcallDate of the last accrual allocationdate
read-only
leaves_takenTime off Takenfloat
computed
manager_idManagermany2one
computed, stored
max_leavesMax Leavesfloat
computed
nameDescriptionchar
computed, stored
name_validityDescription with validitychar
computed
nextcallDate of the next accrual allocationdate
read-only
notesReasonstext
number_of_daysNumber of Days

Duration in days. Reference field to use when necessary.

float
computed, stored
number_of_days_displayDuration (days)

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.

float
computed
number_of_hours_displayDuration (hours)

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.

float
computed, stored
overtime_deductibleOvertime Deductibleboolean
computed

added by HR Attendance Holidays (hr_holidays_attendance)

second_approver_idSecond Approval

This area is automatically filled by the user who validates the allocation with second level (If time off type need second validation)

many2one
read-only
stateStatus

The status is 'To Approve', when an allocation request is created. The status is 'Refused', when an allocation request is refused by manager. The status is 'Approved', when an allocation request is approved by manager.

selection
read-only

Values: confirm (To Approve), refuse (Refused), validate1 (Second Approval), validate (Approved)

type_request_unitType Request Unitselection
computed

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

validation_typeValidation Typeselection
read-only

related: holiday_status_id.allocation_validation_type

virtual_remaining_leavesAvailable Time Offfloat
computed
yearly_accrued_amountYearly Accrued Amountfloat
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_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

website_message_idsWebsite Messages

Website communication history

one2many

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 19 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.leave.allocation/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","allocation_type","date_from","employee_id","holiday_status_id"],"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.leave.allocation/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","allocation_type","date_from","employee_id","holiday_status_id"], "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-leave-allocation">hr.leave.allocation (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.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.