Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ addon | version | maintainers | summary
[maintenance_equipment_sequence](maintenance_equipment_sequence/) | 18.0.1.0.0 | | Adds sequence to maintenance equipment defined in the equipment's category
[maintenance_equipment_status](maintenance_equipment_status/) | 18.0.1.0.0 | | Maintenance Equipment Status
[maintenance_equipment_tags](maintenance_equipment_tags/) | 18.0.1.0.0 | <a href='https://github.com/etobella'><img src='https://github.com/etobella.png' width='32' height='32' style='border-radius:50%;' alt='etobella'/></a> | Adds category tags to equipment
[maintenance_equipment_tier_validation](maintenance_equipment_tier_validation/) | 18.0.1.0.0 | | Support a tier validation process for maintenance equipment
[maintenance_equipment_usage](maintenance_equipment_usage/) | 18.0.1.0.0 | <a href='https://github.com/victoralmau'><img src='https://github.com/victoralmau.png' width='32' height='32' style='border-radius:50%;' alt='victoralmau'/></a> | Maintenance Equipment Usage
[maintenance_helpdesk_mgmt](maintenance_helpdesk_mgmt/) | 18.0.1.1.0 | | Allows you to link Helpdesk Tickets with maintenance requests
[maintenance_partner](maintenance_partner/) | 18.0.1.0.1 | | Add Partner information in Maintenance Requests and equipments
Expand Down
112 changes: 112 additions & 0 deletions maintenance_equipment_tier_validation/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
=====================================
Maintenance Equipment Tier Validation
=====================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e30904d90d2816384f76c1f15272dbf5be967d90a9eae54754c58f789f8ca0dc
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github
:target: https://github.com/OCA/maintenance/tree/18.0/maintenance_equipment_tier_validation
:alt: OCA/maintenance
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/maintenance-18-0/maintenance-18-0-maintenance_equipment_tier_validation
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/maintenance&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module extends the functionality of maintenance equipment to
support a tier validation process.

**Table of contents**

.. contents::
:local:

Installation
============

This module depends on ``base_tier_validation``. You can find it at
`OCA/server-ux <https://github.com/OCA/server-ux>`__.

Configuration
=============

To configure this module, you need to:

1. Go to Settings > Technical > Tier Validations > Tier Definition.
2. Create as many tiers as you want for the Maintenance Equipment model.

Usage
=====

To use this module, you need to:

1. Create a Maintenance Equipment record triggering at least one Tier
Definition.
2. Click on Request Validation.
3. Reviewers can validate or reject the pending review.
4. Once all reviews are validated, click on Validate Equipment.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/maintenance/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_equipment_tier_validation%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Quartile

Contributors
------------

- `Quartile <https://www.quartile.co>`__

- Shinnosuke Morita

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-smorita7749| image:: https://github.com/smorita7749.png?size=40px
:target: https://github.com/smorita7749
:alt: smorita7749

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-smorita7749|

This module is part of the `OCA/maintenance <https://github.com/OCA/maintenance/tree/18.0/maintenance_equipment_tier_validation>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions maintenance_equipment_tier_validation/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import models
17 changes: 17 additions & 0 deletions maintenance_equipment_tier_validation/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2026 Quartile
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Maintenance Equipment Tier Validation",
"summary": "Support a tier validation process for maintenance equipment",
"version": "18.0.1.0.0",
"category": "Maintenance",
"website": "https://github.com/OCA/maintenance",
"author": "Quartile, Odoo Community Association (OCA)",
"maintainers": ["smorita7749"],
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["maintenance", "base_tier_validation"],
"data": ["views/maintenance_equipment_views.xml"],
}
4 changes: 4 additions & 0 deletions maintenance_equipment_tier_validation/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import maintenance_equipment
from . import tier_definition
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Copyright 2026 Quartile
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from lxml import etree

from odoo import api, fields, models


class MaintenanceEquipment(models.Model):
_name = "maintenance.equipment"
_inherit = ["maintenance.equipment", "tier.validation"]
_state_from = ["draft"]
_state_to = ["confirmed"]
_cancel_state = "cancel"

_tier_validation_manual_config = False

state = fields.Selection(
selection=[
("draft", "Draft"),
("confirmed", "Confirmed"),
("cancel", "Cancelled"),
],
default="draft",
required=True,
copy=False,
tracking=True,
)

def action_validate_equipment(self):
self.write({"state": "confirmed"})

def action_reset_to_draft(self):
self.write({"state": "draft"})

def action_cancel(self):
self.write({"state": "cancel"})

@api.model
def _get_view(self, view_id=None, view_type="form", **options):
arch, view = super()._get_view(view_id, view_type, **options)
if view.type != "form":
return arch, view
# The core maintenance equipment form has no ``header`` element, so we
# add one on the fly rather than depending on ``base_maintenance`` just
# to get one. If a header is already present (e.g. because
# ``base_maintenance`` is installed), we reuse it to avoid duplicating
# it.
header = arch.find(".//header")
if header is None:
sheet = arch.find(".//sheet")
if sheet is None:
return arch, view
header = etree.Element("header")
sheet.addprevious(header)
buttons = [
{
"name": "action_validate_equipment",
"string": "Validate Equipment",
"class": "btn-primary",
"invisible": "state != 'draft' or "
"validation_status in ['pending', 'rejected']",
},
{
"name": "action_reset_to_draft",
"string": "Reset to Draft",
"invisible": "state != 'cancel'",
},
{
"name": "action_cancel",
"string": "Cancel",
"invisible": "state == 'cancel'",
},
]
for vals in buttons:
button = etree.SubElement(header, "button")
button.set("type", "object")
for attr, value in vals.items():
button.set(attr, value)
statusbar = etree.SubElement(header, "field")
statusbar.set("name", "state")
statusbar.set("widget", "statusbar")
statusbar.set("statusbar_visible", "draft,confirmed")
return arch, view
14 changes: 14 additions & 0 deletions maintenance_equipment_tier_validation/models/tier_definition.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2026 Quartile
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, models


class TierDefinition(models.Model):
_inherit = "tier.definition"

@api.model
def _get_tier_validation_model_names(self):
res = super()._get_tier_validation_model_names()
res.append("maintenance.equipment")
return res
3 changes: 3 additions & 0 deletions maintenance_equipment_tier_validation/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
4 changes: 4 additions & 0 deletions maintenance_equipment_tier_validation/readme/CONFIGURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
To configure this module, you need to:

1. Go to Settings \> Technical \> Tier Validations \> Tier Definition.
2. Create as many tiers as you want for the Maintenance Equipment model.
2 changes: 2 additions & 0 deletions maintenance_equipment_tier_validation/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- [Quartile](https://www.quartile.co)
- Shinnosuke Morita
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This module extends the functionality of maintenance equipment to support a tier validation process.
1 change: 1 addition & 0 deletions maintenance_equipment_tier_validation/readme/INSTALL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This module depends on `base_tier_validation`. You can find it at [OCA/server-ux](https://github.com/OCA/server-ux).
6 changes: 6 additions & 0 deletions maintenance_equipment_tier_validation/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
To use this module, you need to:

1. Create a Maintenance Equipment record triggering at least one Tier Definition.
2. Click on Request Validation.
3. Reviewers can validate or reject the pending review.
4. Once all reviews are validated, click on Validate Equipment.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading