| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/19.0/hr_course |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | OCA-git-bot, oca-ci, eugenio |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:47 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - digest - bus - web_tour - html_editor - portal - http_routing - auth_signup - resource - phone_validation - resource_mail |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows your to manage employee's training courses, course dates and all its validation process. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | list | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | list | New |
hr_course_form_view |
hr.course.form | hr.course | form | New |
hr_course_schedule_form_view |
hr.course.schedule.form | hr.course.schedule | form | New |
hr_course_schedule_search_view |
hr.course.schedule.search | hr.course.schedule | search | New |
hr_course_schedule_tree_view |
hr.course.schedule.tree | hr.course.schedule | list | New |
hr_course_tree_view |
hr.course.tree | hr.course | list | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_course_category_tree |
hr.course.category.tree | hr.course.category | list | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
content
Html
course_schedule_ids
One2many → hr.course.schedule
inverse_name='course_id'
args: 'hr.course.schedule'
evaluation_criteria
Html
name
Char
required=True
tracking=True
objective
Html
permanence
Boolean
default=False
string='Has Permanence'
tracking=True
permanence_time
Char
tracking=True
No public methods.
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_schedule_id.end_date'
course_schedule_id
Many2one → hr.course.schedule
ondelete='cascade'
readonly=True
required=True
args: 'hr.course.schedule'
course_start
Date
readonly=True
related='course_schedule_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_schedule_id.name'
result
Selection
default='pending'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_schedule_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
attendant_ids
Many2many → hr.employee
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
required=True
tracking=True
comment
Text
cost
Monetary
required=True
string='Course Cost'
tracking=True
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_schedule_id'
args: 'hr.course.attendee'
course_id
Many2one → hr.course
required=True
string='Course'
args: 'hr.course'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
tracking=True
instructor_ids
Many2many → res.partner
string='Instructor'
args: 'res.partner'
name
Char
required=True
tracking=True
note
Text
place
Char
start_date
Date
tracking=True
state
Selection
default='draft'
readonly=True
required=True
tracking=True
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
training_company_id
Many2one → res.partner
string='Training company'
args: 'res.partner'
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/18.0/hr_course |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Bhavesh Heliconia |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:08 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - digest - bus - web_tour - html_editor - portal - web_editor - http_routing - auth_signup - resource - phone_validation - resource_mail |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows your to manage employee's training courses, course dates and all its validation process. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | list | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | list | New |
hr_course_form_view |
hr.course.form | hr.course | form | New |
hr_course_schedule_form_view |
hr.course.schedule.form | hr.course.schedule | form | New |
hr_course_schedule_search_view |
hr.course.schedule.search | hr.course.schedule | search | New |
hr_course_schedule_tree_view |
hr.course.schedule.tree | hr.course.schedule | list | New |
hr_course_tree_view |
hr.course.tree | hr.course | list | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_course_category_tree |
hr.course.category.tree | hr.course.category | list | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
content
Html
course_schedule_ids
One2many → hr.course.schedule
inverse_name='course_id'
args: 'hr.course.schedule'
evaluation_criteria
Html
name
Char
required=True
tracking=True
objective
Html
permanence
Boolean
default=False
string='Has Permanence'
tracking=True
permanence_time
Char
tracking=True
No public methods.
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_schedule_id.end_date'
course_schedule_id
Many2one → hr.course.schedule
ondelete='cascade'
readonly=True
required=True
args: 'hr.course.schedule'
course_start
Date
readonly=True
related='course_schedule_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_schedule_id.name'
result
Selection
default='pending'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_schedule_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
attendant_ids
Many2many → hr.employee
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
required=True
tracking=True
comment
Text
cost
Monetary
required=True
string='Course Cost'
tracking=True
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_schedule_id'
args: 'hr.course.attendee'
course_id
Many2one → hr.course
required=True
string='Course'
args: 'hr.course'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
tracking=True
instructor_ids
Many2many → res.partner
string='Instructor'
args: 'res.partner'
name
Char
required=True
tracking=True
note
Text
place
Char
start_date
Date
tracking=True
state
Selection
default='draft'
readonly=True
required=True
tracking=True
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
training_company_id
Many2one → res.partner
string='Training company'
args: 'res.partner'
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/17.0/hr_course |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, DoDo, Luis Rodriguez, Manish Bohra |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - phone_validation - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows your to manage employee's training courses, course dates and all its validation process. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | tree | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | tree | New |
hr_course_form_view |
hr.course.form | hr.course | form | New |
hr_course_schedule_form_view |
hr.course.schedule.form | hr.course.schedule | form | New |
hr_course_schedule_search_view |
hr.course.schedule.search | hr.course.schedule | search | New |
hr_course_schedule_tree_view |
hr.course.schedule.tree | hr.course.schedule | tree | New |
hr_course_tree_view |
hr.course.tree | hr.course | tree | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_list |
hr.course.category.list | hr.course.category | tree | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
content
Html
course_schedule_ids
One2many → hr.course.schedule
inverse_name='course_id'
args: 'hr.course.schedule'
evaluation_criteria
Html
name
Char
required=True
tracking=True
objective
Html
permanence
Boolean
default=False
string='Has Permanence'
tracking=True
permanence_time
Char
tracking=True
No public methods.
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_schedule_id.end_date'
course_schedule_id
Many2one → hr.course.schedule
ondelete='cascade'
readonly=True
required=True
args: 'hr.course.schedule'
course_start
Date
readonly=True
related='course_schedule_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_schedule_id.name'
result
Selection
default='pending'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_schedule_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
attendant_ids
Many2many → hr.employee
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
required=True
tracking=True
comment
Text
cost
Monetary
required=True
string='Course Cost'
tracking=True
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_schedule_id'
args: 'hr.course.attendee'
course_id
Many2one → hr.course
required=True
string='Course'
args: 'hr.course'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
tracking=True
instructor_ids
Many2many → res.partner
string='Instructor'
args: 'res.partner'
name
Char
required=True
tracking=True
note
Text
place
Char
start_date
Date
tracking=True
state
Selection
default='draft'
readonly=True
required=True
tracking=True
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
training_company_id
Many2one → res.partner
string='Training company'
args: 'res.partner'
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/16.0/hr_course |
| VERSION | |
| VERSION | 1.1.2 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | Enric Tobella, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Núria Sancho, FernandoRomera |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:49 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | tree | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | tree | New |
hr_course_form_view |
hr.course.form | hr.course | form | New |
hr_course_schedule_form_view |
hr.course.schedule.form | hr.course.schedule | form | New |
hr_course_schedule_search_view |
hr.course.schedule.search | hr.course.schedule | search | New |
hr_course_schedule_tree_view |
hr.course.schedule.tree | hr.course.schedule | tree | New |
hr_course_tree_view |
hr.course.tree | hr.course | tree | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_list |
hr.course.category.list | hr.course.category | tree | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
content
Html
course_schedule_ids
One2many → hr.course.schedule
inverse_name='course_id'
args: 'hr.course.schedule'
evaluation_criteria
Html
name
Char
required=True
tracking=True
objective
Html
permanence
Boolean
default=False
string='Has Permanence'
tracking=True
permanence_time
Char
tracking=True
No public methods.
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_schedule_id.end_date'
course_schedule_id
Many2one → hr.course.schedule
ondelete='cascade'
readonly=True
required=True
args: 'hr.course.schedule'
course_start
Date
readonly=True
related='course_schedule_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_schedule_id.name'
result
Selection
default='pending'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_schedule_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
attendant_ids
Many2many → hr.employee
readonly=True
states={'waiting_attendees': [('readonly', False)]}
args: 'hr.employee'
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
required=True
states={'draft': [('readonly', False)]}
tracking=True
comment
Text
cost
Monetary
required=True
string='Course Cost'
tracking=True
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_schedule_id'
readonly=True
states={'in_validation': [('readonly', False)]}
args: 'hr.course.attendee'
course_id
Many2one → hr.course
required=True
string='Course'
args: 'hr.course'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
readonly=True
states={'draft': [('readonly', False)]}
tracking=True
instructor_ids
Many2many → res.partner
string='Instructor'
args: 'res.partner'
name
Char
required=True
tracking=True
note
Text
place
Char
start_date
Date
readonly=True
states={'draft': [('readonly', False)]}
tracking=True
state
Selection
default='draft'
readonly=True
required=True
tracking=True
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
training_company_id
Many2one → res.partner
string='Training company'
args: 'res.partner'
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/15.0/hr_course |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | GitHub, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Olga Marco, Kevin Luna |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:36 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | tree | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | tree | New |
hr_course_form_view |
hr.course.form | hr.course | form | New |
hr_course_schedule_form_view |
hr.course.schedule.form | hr.course.schedule | form | New |
hr_course_schedule_search_view |
hr.course.schedule.search | hr.course.schedule | search | New |
hr_course_schedule_tree_view |
hr.course.schedule.tree | hr.course.schedule | tree | New |
hr_course_tree_view |
hr.course.tree | hr.course | tree | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_list |
hr.course.category.list | hr.course.category | tree | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
content
Html
course_schedule_ids
One2many → hr.course.schedule
inverse_name='course_id'
args: 'hr.course.schedule'
evaluation_criteria
Html
name
Char
required=True
tracking=True
objective
Html
permanence
Boolean
default=False
string='Has Permanence'
tracking=True
permanence_time
Char
tracking=True
No public methods.
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_schedule_id.end_date'
course_schedule_id
Many2one → hr.course.schedule
ondelete='cascade'
readonly=True
required=True
args: 'hr.course.schedule'
course_start
Date
readonly=True
related='course_schedule_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_schedule_id.name'
result
Selection
default='pending'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_schedule_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
attendant_ids
Many2many → hr.employee
readonly=True
states={'waiting_attendees': [('readonly', False)]}
args: 'hr.employee'
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
required=True
states={'draft': [('readonly', False)]}
tracking=True
comment
Text
cost
Monetary
required=True
string='Course Cost'
tracking=True
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_schedule_id'
readonly=True
states={'in_validation': [('readonly', False)]}
args: 'hr.course.attendee'
course_id
Many2one → hr.course
required=True
string='Course'
args: 'hr.course'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
readonly=True
states={'draft': [('readonly', False)]}
tracking=True
instructor_ids
Many2many → res.partner
string='Instructor'
args: 'res.partner'
name
Char
required=True
tracking=True
note
Text
place
Char
start_date
Date
readonly=True
states={'draft': [('readonly', False)]}
tracking=True
state
Selection
default='draft'
readonly=True
required=True
tracking=True
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
training_company_id
Many2one → res.partner
string='Training company'
args: 'res.partner'
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/14.0/hr_course |
| VERSION | |
| VERSION | 3.1.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, Enric Tobella, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Anna Janiszewska, oca-ci, Olga Marco, Núria Sancho |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | tree | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | tree | New |
hr_course_form_view |
hr.course.form | hr.course | form | New |
hr_course_schedule_form_view |
hr.course.schedule.form | hr.course.schedule | form | New |
hr_course_schedule_search_view |
hr.course.schedule.search | hr.course.schedule | search | New |
hr_course_schedule_tree_view |
hr.course.schedule.tree | hr.course.schedule | tree | New |
hr_course_tree_view |
hr.course.tree | hr.course | tree | New |
res_config_settings_view_form |
Set course notification | res.config.settings | xpath | Inherits hr.res_config_settings_view_form |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_list |
hr.course.category.list | hr.course.category | tree | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
content
Html
course_schedule_ids
One2many → hr.course.schedule
inverse_name='course_id'
args: 'hr.course.schedule'
evaluation_criteria
Html
name
Char
required=True
string='Name'
tracking=True
objective
Html
permanence
Boolean
default=False
string='Has Permanence'
tracking=True
permanence_time
Char
string='Permanence time'
tracking=True
No public methods.
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_schedule_id.end_date'
course_expiration_alert_sent
Boolean
help='Shows if notification email for course was sent'
course_id
Many2one
related='course_schedule_id.course_id'
course_schedule_id
Many2one → hr.course.schedule
ondelete='cascade'
readonly=True
required=True
args: 'hr.course.schedule'
course_start
Date
readonly=True
related='course_schedule_id.start_date'
course_validity_end_date
Date
related='course_schedule_id.validity_end_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_schedule_id.name'
result
Selection
default='pending'
string='Result'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_schedule_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
attendant_ids
Many2many → hr.employee
readonly=True
states={'waiting_attendees': [('readonly', False)]}
args: 'hr.employee'
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Authorized by'
tracking=True
comment
Text
cost
Monetary
required=True
string='Course Cost'
tracking=True
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_schedule_id'
readonly=True
states={'in_validation': [('readonly', False)]}
args: 'hr.course.attendee'
course_expiration_alert_sent
Boolean
course_id
Many2one → hr.course
required=True
string='Course'
args: 'hr.course'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='End date'
tracking=True
instructor_ids
Many2many → res.partner
string='Instructor'
args: 'res.partner'
name
Char
required=True
string='Name'
tracking=True
note
Text
place
Char
start_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='Start date'
tracking=True
state
Selection
default='draft'
readonly=True
required=True
tracking=True
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
training_company_id
Many2one → res.partner
string='Training company'
args: 'res.partner'
validity_end_date
Date
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
process_validity(self)
send_course_expiration_notification_email(self)
validation2complete(self)
waiting2inprogress(self)
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(self)
course_expiration_alerting_delay
Integer
string='Alerting delay before end of validity (days)'
course_expiration_channel_id
Many2one → mail.channel
default=<expr>
string='Mailing list to alert'
args: 'mail.channel'
No public methods.
course_expiration_alerting_delay
Integer
readonly=False
related='company_id.course_expiration_alerting_delay'
course_expiration_channel_id
Many2one
readonly=False
related='company_id.course_expiration_channel_id'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/13.0/hr_course |
| VERSION | |
| VERSION | 2.1.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Enric Tobella, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Jaime Arroyo |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:14 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource - mail_bot |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | tree | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | tree | New |
hr_course_form_view |
hr.course.form | hr.course | form | New |
hr_course_schedule_form_view |
hr.course.schedule.form | hr.course.schedule | form | New |
hr_course_schedule_search_view |
hr.course.schedule.search | hr.course.schedule | search | New |
hr_course_schedule_tree_view |
hr.course.schedule.tree | hr.course.schedule | tree | New |
hr_course_tree_view |
hr.course.tree | hr.course | tree | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_list |
hr.course.category.list | hr.course.category | tree | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
content
Html
course_schedule_ids
One2many → hr.course.schedule
inverse_name='course_id'
args: 'hr.course.schedule'
evaluation_criteria
Html
name
Char
required=True
string='Name'
tracking=True
objective
Html
permanence
Boolean
default=False
string='Has Permanence'
tracking=True
permanence_time
Char
string='Permanence time'
tracking=True
No public methods.
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_schedule_id.end_date'
course_schedule_id
Many2one → hr.course.schedule
ondelete='cascade'
readonly=True
required=True
args: 'hr.course.schedule'
course_start
Date
readonly=True
related='course_schedule_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_schedule_id.name'
result
Selection
default='pending'
string='Result'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_schedule_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
attendant_ids
Many2many → hr.employee
readonly=True
states={'waiting_attendees': [('readonly', False)]}
args: 'hr.employee'
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Authorized by'
tracking=True
comment
Text
cost
Monetary
required=True
string='Course Cost'
tracking=True
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_schedule_id'
readonly=True
states={'in_validation': [('readonly', False)]}
args: 'hr.course.attendee'
course_id
Many2one → hr.course
required=True
string='Course'
args: 'hr.course'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='End date'
tracking=True
instructor_ids
Many2many → res.partner
string='Instructor'
args: 'res.partner'
name
Char
required=True
string='Name'
tracking=True
place
Char
start_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='Start date'
tracking=True
state
Selection
default='draft'
readonly=True
required=True
tracking=True
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
training_company_id
Many2one → res.partner
string='Training company'
args: 'res.partner'
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(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_course |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | OCA Transbot, oca-travis, Weblate, OCA-git-bot, 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 |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | tree | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | tree | New |
hr_course_form_view |
hr.course.form (in hr_courses) | hr.course | form | New |
hr_course_search_view |
hr.course.search | hr.course | search | New |
hr_course_tree_view |
hr.course.tree | hr.course | tree | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_list |
hr.course.category.list | hr.course.category | tree | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
attendant_ids
Many2many → hr.employee
readonly=True
states={'waiting_attendees': [('readonly', False)]}
args: 'hr.employee'
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Authorized by'
track_visibility='onchange'
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
cost
Monetary
required=True
string='Course Cost'
track_visibility='onchange'
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_id'
readonly=True
states={'in_validation': [('readonly', False)]}
args: 'hr.course.attendee'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='End date'
track_visibility='onchange'
name
Char
required=True
string='Name'
track_visibility='onchange'
permanence
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Has Permanence'
track_visibility='onchange'
permanence_time
Char
readonly=True
states={'draft': [('readonly', False)]}
string='Permanence time'
track_visibility='onchange'
start_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='Start date'
track_visibility='onchange'
state
Selection
default='draft'
readonly=True
required=True
track_visibility='onchange'
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_id.end_date'
course_id
Many2one → hr.course
ondelete='cascade'
readonly=True
required=True
args: 'hr.course'
course_start
Date
readonly=True
related='course_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_id.name'
result
Selection
default='pending'
string='Result'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(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_course |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Creu Blanca |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Creu Blanca |
| COMMITTERS | |
| COMMITTERS | OCA Transbot, oca-travis, Weblate, 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 |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_course_attendee_form_view |
hr.course.attendee.form | hr.course.attendee | form | New |
hr_course_attendee_tree_employee_view |
hr.course.attendee.tree.employee | hr.course.attendee | tree | New |
hr_course_attendee_tree_view |
hr.course.attendee.tree | hr.course.attendee | tree | New |
hr_course_form_view |
hr.course.form (in hr_courses) | hr.course | form | New |
hr_course_search_view |
hr.course.search | hr.course | search | New |
hr_course_tree_view |
hr.course.tree | hr.course | tree | New |
view_course_category_form |
hr.course.category.form | hr.course.category | form | New |
view_course_category_list |
hr.course.category.list | hr.course.category | tree | New |
view_course_category_search |
hr.course.category.search | hr.course.category | search | New |
view_hr_employee_form |
hr.employee.course.form | hr.employee | div | Inherits hr.view_employee_form |
attendant_ids
Many2many → hr.employee
readonly=True
states={'waiting_attendees': [('readonly', False)]}
args: 'hr.employee'
authorized_by
Many2one → hr.employee
comodel_name='hr.employee'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Authorized by'
track_visibility='onchange'
category_id
Many2one → hr.course.category
required=True
string='Category'
args: 'hr.course.category'
cost
Monetary
required=True
string='Course Cost'
track_visibility='onchange'
course_attendee_ids
One2many → hr.course.attendee
inverse_name='course_id'
readonly=True
states={'in_validation': [('readonly', False)]}
args: 'hr.course.attendee'
currency_id
Many2one → res.currency
default=<expr>
string='Currency'
args: 'res.currency'
end_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='End date'
track_visibility='onchange'
name
Char
required=True
string='Name'
track_visibility='onchange'
permanence
Boolean
readonly=True
states={'draft': [('readonly', False)]}
string='Has Permanence'
track_visibility='onchange'
permanence_time
Char
readonly=True
states={'draft': [('readonly', False)]}
string='Permanence time'
track_visibility='onchange'
start_date
Date
readonly=True
states={'draft': [('readonly', False)]}
string='Start date'
track_visibility='onchange'
state
Selection
default='draft'
readonly=True
required=True
track_visibility='onchange'
args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
all_passed(self)
back2draft(self)
cancel_course(self)
draft2waiting(self)
inprogress2validation(self)
validation2complete(self)
waiting2inprogress(self)
active
Boolean
default=True
readonly=True
course_end
Date
readonly=True
related='course_id.end_date'
course_id
Many2one → hr.course
ondelete='cascade'
readonly=True
required=True
args: 'hr.course'
course_start
Date
readonly=True
related='course_id.start_date'
employee_id
Many2one → hr.employee
readonly=True
args: 'hr.employee'
name
Char
readonly=True
related='course_id.name'
result
Selection
default='pending'
string='Result'
args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
state
Selection
readonly=True
related='course_id.state'
No public methods.
name
Char
required=True
string='Course category'
No public methods.
count_courses
Integer
compute='_compute_count_courses'
args: 'Number of courses'
courses_ids
One2many → hr.course.attendee
readonly=True
string='Courses'
args: 'hr.course.attendee', 'employee_id'
action_view_course(self)