oca-technical/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/models/maintenance_equipment.py
2025-08-29 15:43:03 +02:00

32 lines
1.1 KiB
Python

# Copyright 2022-2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class MaintenanceEquipment(models.Model):
_inherit = "maintenance.equipment"
usage_ids = fields.One2many(
comodel_name="maintenance.equipment.usage",
inverse_name="equipment_id",
string="Usages",
)
usage_count = fields.Integer(compute="_compute_usage_count")
in_use = fields.Boolean(compute="_compute_in_use", store=True)
@api.depends("usage_ids")
def _compute_usage_count(self):
res = self.env["maintenance.equipment.usage"].read_group(
domain=[("equipment_id", "in", self.ids)],
fields=["equipment_id"],
groupby=["equipment_id"],
)
res_dict = {x["equipment_id"][0]: x["equipment_id_count"] for x in res}
for rec in self:
rec.usage_count = res_dict.get(rec.id, 0)
@api.depends("usage_ids", "usage_ids.state")
def _compute_in_use(self):
for item in self:
item.in_use = any(usage.state == "in_use" for usage in item.usage_ids)