TIP: You can type at any time to perform a new search.
Maintenance
maintenance · odoo/odoo
- Repository
- odoo/odoo · module folder
- Module version
- 1.0
- Category
- Supply Chain/Maintenance
- Folder size
- 4.29 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://www.odoo.com/app/maintenance
- Last tracking update
- 2026-08-15 22:44:18
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Arnold Moyaux, Julien Castiaux, Prakash Prajapati, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, JF Aubert, Renaud Thiry, Louis Wicket (wil), Adrien Widart (awt), Victor Piryns (pivi), Djamel Touati, Dylan Kiss (dyki), Nguyễn Đại Dương, Paul Stroobant, nihp-odoo, yagp-odoo, dhha-odoo, gteboul, Pierre Pulinckx, Bastien PIERRE, chha-odoo, Krzysztof Magusiak (krma), Basioni (basm), rare-odoo, srap-odoo, saurabh, Atri Patel(atpa), chpa-odoo
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- base_maintenance, hr_maintenance, maintenance_equipment_category_hierarchy, maintenance_equipment_certification, maintenance_equipment_tags, maintenance_product, maintenance_request_repair, maintenance_request_tags, stock_maintenance
- Description
Track equipment and maintenance requests
Code Analysis ⓘ
Views touched (25)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_equipment_category_view_form |
equipment.category.form | maintenance.equipment.category | form | New |
hr_equipment_category_view_search |
equipment.category.search | maintenance.equipment.category | search | New |
hr_equipment_category_view_tree |
equipment.category.list | maintenance.equipment.category | list | New |
hr_equipment_request_view_form |
equipment.request.form | maintenance.request | form | New |
hr_equipment_request_view_graph |
equipment.request.graph | maintenance.request | graph | New |
hr_equipment_request_view_kanban |
equipment.request.kanban | maintenance.request | kanban | New |
hr_equipment_request_view_pivot |
equipment.request.pivot | maintenance.request | pivot | New |
hr_equipment_request_view_search |
equipment.request.search | maintenance.request | search | New |
hr_equipment_request_view_tree |
equipment.request.list | maintenance.request | list | New |
hr_equipment_stage_view_kanban |
equipment.stage.kanban | maintenance.stage | kanban | New |
hr_equipment_stage_view_search |
equipment.stage.search | maintenance.stage | search | New |
hr_equipment_stage_view_tree |
equipment.stage.list | maintenance.stage | list | New |
hr_equipment_view_calendar |
equipment.request.calendar | maintenance.request | calendar | New |
hr_equipment_view_form |
equipment.form | maintenance.equipment | form | New |
hr_equipment_view_kanban |
equipment.kanban | maintenance.equipment | kanban | New |
hr_equipment_view_search |
equipment.search | maintenance.equipment | search | New |
hr_equipment_view_tree |
equipment.list | maintenance.equipment | list | New |
maintenance_request_view_activity |
maintenance.request.view.activity | maintenance.request | activity | New |
maintenance_team_kanban |
maintenance.team.kanban | maintenance.team | kanban | New |
maintenance_team_view_form |
maintenance.team.form | maintenance.team | form | New |
maintenance_team_view_kanban |
maintenance.team.kanban | maintenance.team | kanban | New |
maintenance_team_view_search |
maintenance.team.search | maintenance.team | search | New |
maintenance_team_view_tree |
maintenance.team.list | maintenance.team | list | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.maintenance | res.config.settings | form | Inherits base.res_config_settings_view_form |
view_maintenance_equipment_category_kanban |
maintenance.equipment.category.kanban | maintenance.equipment.category | kanban | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (7)
New fields (16)
-
activeBooleandefault=True -
assign_dateDatetracking=True args: 'Assigned Date' -
category_idMany2one → maintenance.equipment.categorygroup_expand='_read_group_category_ids'index='btree_not_null'string='Equipment Category'tracking=True args: 'maintenance.equipment.category' -
colorIntegerargs: 'Color Index' -
costFloatargs: 'Cost' -
equipment_propertiesPropertiescopy=Truedefinition='category_id.equipment_properties_definition' args: 'Properties' -
maintenance_idsOne2many → maintenance.requestargs: 'maintenance.request', 'equipment_id' -
modelCharargs: 'Model' -
nameCharrequired=Truetranslate=True args: 'Equipment Name' -
noteHtmlargs: 'Note' -
owner_user_idMany2one → res.usersindex='btree_not_null'string='Owner'tracking=True args: 'res.users' -
partner_idMany2one → res.partnercheck_company=Truestring='Vendor' args: 'res.partner' -
partner_refCharargs: 'Vendor Reference' -
scrap_dateDateargs: 'Scrap Date' -
serial_noCharcopy=False args: 'Serial Number' -
warranty_dateDateargs: 'Warranty Expiration Date'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (12)
-
colorIntegerargs: 'Color Index' -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
equipment_countIntegercompute='_compute_equipment_count'string='Equipment Count' -
equipment_idsOne2many → maintenance.equipmentcopy=Falsestring='Equipment' args: 'maintenance.equipment', 'category_id' -
equipment_properties_definitionPropertiesDefinitionargs: 'Equipment Properties' -
foldBooleancompute='_compute_fold'store=Truestring='Folded in Maintenance Pipe' -
maintenance_countIntegercompute='_compute_maintenance_count'string='Maintenance Count' -
maintenance_idsOne2many → maintenance.requestcopy=False args: 'maintenance.request', 'category_id' -
maintenance_open_countIntegercompute='_compute_maintenance_count'string='Current Maintenance' -
nameCharrequired=Truetranslate=True args: 'Category Name' -
noteHtmltranslate=True args: 'Comments' -
technician_user_idMany2one → res.usersdefault=<expr> args: 'res.users', 'Responsible'
No public methods.
New fields (12)
-
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
effective_dateDatedefault=fields.Date.context_todayhelp='This date will be used to compute the Mean Time Between Failure.'required=True args: 'Effective Date' -
estimated_next_failureDatecompute='_compute_maintenance_request'help='Computed as Latest Failure Date + MTBF'string='Estimated time before next failure (in days)' -
expected_mtbfIntegerhelp='Expected Mean Time Between Failure'string='Expected MTBF' -
latest_failure_dateDatecompute='_compute_maintenance_request'string='Latest Failure Date' -
maintenance_countIntegercompute='_compute_maintenance_count'store=Truestring='Maintenance Count' -
maintenance_idsOne2many → maintenance.requestargs: 'maintenance.request' -
maintenance_open_countIntegercompute='_compute_maintenance_count'store=Truestring='Current Maintenance' -
maintenance_team_idMany2one → maintenance.teamcheck_company=Truecompute='_compute_maintenance_team_id'index='btree_not_null'readonly=Falsestore=Truestring='Maintenance Team' args: 'maintenance.team' -
mtbfIntegercompute='_compute_maintenance_request'help='Mean Time Between Failure, computed based on done corrective maintenances.'string='MTBF' -
mttrIntegercompute='_compute_maintenance_request'help='Mean Time To Repair'string='MTTR' -
technician_user_idMany2one → res.usersstring='Technician'tracking=True args: 'res.users'
No public methods.
New fields (29)
-
archiveBooleandefault=Falsehelp='Set archive to true to hide the maintenance request without deleting it.' -
category_idMany2one → maintenance.equipment.categoryindex='btree_not_null'readonly=Truerelated='equipment_id.category_id'store=Truestring='Category' args: 'maintenance.equipment.category' -
close_dateDatehelp='Date the maintenance was finished. ' args: 'Close Date' -
colorIntegerargs: 'Color Index' -
company_idMany2one → res.companydefault=<expr>required=Truestring='Company' args: 'res.company' -
descriptionHtmlargs: 'Description' -
doneBooleanrelated='stage_id.done' -
durationFloatcompute='_compute_duration'help='Duration in hours.'store=True -
equipment_idMany2one → maintenance.equipmentcheck_company=Trueindex=Trueondelete='restrict'string='Equipment' args: 'maintenance.equipment' -
instruction_google_slideCharhelp='Paste the url of your Google Slide. Make sure the access to the document is public.' args: 'Google Slide' -
instruction_pdfBinaryargs: 'PDF' -
instruction_textHtmlargs: 'Text' -
instruction_typeSelectiondefault='text'string='Instruction' args: [('pdf', 'PDF'), ('google_slide', 'Google Slide'), ('text', 'Text')] -
kanban_stateSelectiondefault='normal'required=Truestring='Kanban State'tracking=True args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')] -
maintenance_team_idMany2one → maintenance.teamcheck_company=Truecompute='_compute_maintenance_team_id'default=_get_default_team_idindex=Truereadonly=Falserequired=Truestore=Truestring='Team' args: 'maintenance.team' -
maintenance_typeSelectiondefault='corrective'string='Maintenance Type' args: [('corrective', 'Corrective'), ('preventive', 'Preventive')] -
nameCharrequired=True args: 'Subjects' -
owner_user_idMany2one → res.usersdefault=<expr>string='Created by User' args: 'res.users' -
prioritySelectionstring='Priority' args: [('0', 'Very Low'), ('1', 'Low'), ('2', 'Normal'), ('3', 'High')] -
recurring_maintenanceBooleancompute='_compute_recurring_maintenance'readonly=Falsestore=Truestring='Recurrent' -
repeat_intervalIntegerdefault=1string='Repeat Every' -
repeat_typeSelectiondefault='forever'string='Until' args: [('forever', 'Forever'), ('until', 'Until')] -
repeat_unitSelectiondefault='week' args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')] -
repeat_untilDatestring='End Date' -
request_dateDatedefault=fields.Date.context_todayhelp='Date requested for the maintenance to happen'tracking=True args: 'Request Date' -
schedule_dateDatetimehelp='Date the maintenance team plans the maintenance. It should not differ much from the Request Date. ' args: 'Scheduled Date' -
schedule_endDatetimecompute='_compute_schedule_end'help='Expected completion date and time of the maintenance request.'readonly=Falsestore=Truestring='Scheduled End' -
stage_idMany2one → maintenance.stagecopy=Falsedefault=_default_stagegroup_expand='_read_group_stage_ids'ondelete='restrict'string='Stage'tracking=True args: 'maintenance.stage' -
user_idMany2one → res.userscompute='_compute_user_id'readonly=Falsestore=Truestring='Technician'tracking=True args: 'res.users'
-
activity_update(self)Update maintenance activities based on current record set state. It reschedule, unlink or create maintenance request activities. -
archive_equipment_request(self) -
create(self, vals_list)@api.model_create_multi -
reset_equipment_request(self)Reinsert the maintenance request into the maintenance pipe in the first stage -
write(self, vals)
New fields (4)
-
doneBooleanargs: 'Request Done' -
foldBooleanargs: 'Folded in Maintenance Pipe' -
nameCharrequired=Truetranslate=True args: 'Name' -
sequenceIntegerdefault=20 args: 'Sequence'
No public methods.
New fields (14)
-
activeBooleandefault=True -
alias_idMany2onehelp='Email alias for this maintenance team.' -
colorIntegerdefault=0 args: 'Color Index' -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
equipment_idsOne2many → maintenance.equipmentcopy=False args: 'maintenance.equipment', 'maintenance_team_id' -
member_idsMany2many → res.usersdomain="[('company_ids', 'in', company_id)]"string='Team Members' args: 'res.users', 'maintenance_team_users_rel' -
nameCharrequired=Truetranslate=True args: 'Team Name' -
request_idsOne2many → maintenance.requestcopy=False args: 'maintenance.request', 'maintenance_team_id' -
todo_request_countIntegercompute='_compute_todo_requests'string='Number of Requests' -
todo_request_count_blockIntegercompute='_compute_todo_requests'string='Number of Requests Blocked' -
todo_request_count_dateIntegercompute='_compute_todo_requests'string='Number of Requests Scheduled' -
todo_request_count_high_priorityIntegercompute='_compute_todo_requests'string='Number of Requests in High Priority' -
todo_request_count_unscheduledIntegercompute='_compute_todo_requests'string='Number of Requests Unscheduled' -
todo_request_idsOne2many → maintenance.requestcompute='_compute_todo_requests'copy=Falsestring='Requests' args: 'maintenance.request'
No public methods.
New fields (1)
-
module_maintenance_worksheetBooleanstring='Custom Maintenance Worksheets'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…