|
|
for record in self:
maintenance_requests = record.maintenance_ids.filtered(lambda mr: mr.maintenance_type == 'corrective' and mr.state == 'done')
failure_dates = [(request.schedule_date or request.create_date).date() for request in maintenance_requests]
record.mttr = len(maintenance_requests) and sum((request.close_date - failure_date).days
if request.close_date else 0
for request, failure_date in zip(maintenance_requests, failure_dates)) / len(maintenance_requests)
record.latest_failure_date = max(failure_dates, default=False)
record.mtbf = record.latest_failure_date and (record.latest_failure_date - record.effective_date).days / len(maintenance_requests) or 0
record.estimated_next_failure = record.mtbf and record.latest_failure_date + relativedelta(days=record.mtbf) or False
|
|