|
|
for plan in self.filtered(lambda x: x.interval > 0):
interval_timedelta = plan.get_relativedelta(
plan.interval, plan.interval_step
)
next_maintenance_todo = self.env["maintenance.request"].search(
[
("maintenance_plan_id", "=", plan.id),
("stage_id.done", "!=", True),
("close_date", "=", False),
("request_date", ">=", plan.start_maintenance_date),
],
order="request_date asc",
limit=1,
)
if next_maintenance_todo:
plan.next_maintenance_date = next_maintenance_todo.request_date
else:
last_maintenance_done = self.env["maintenance.request"].search(
[
("maintenance_plan_id", "=", plan.id),
("request_date", ">=", plan.start_maintenance_date),
],
order="request_date desc",
limit=1,
)
if last_maintenance_done:
plan.next_maintenance_date = (
last_maintenance_done.request_date + interval_timedelta
)
else:
next_date = plan.start_maintenance_date
while next_date < fields.Date.today():
next_date = next_date + interval_timedelta
plan.next_maintenance_date = next_date
|
|