feat: integritet zatvaranja taska i putnog naloga
Dodaje status 'spreman_za_zavrsetak' i backend provjeru koja blokira zatvaranje taska kada je povezani putni nalog otvoren, uz 409 odgovor i opcionalni auto-close flow.\n\nPri zatvaranju putnog naloga taskovi u statusu 'servis' automatski prelaze u 'spreman_za_zavrsetak'. Frontend modal sada podržava potvrdu i retry s auto_close_work_order=true.\n\nUključeni su i ciljani testovi za novi behavior, te ažuriran prikaz statusa u dashboardu.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -126,6 +126,7 @@ class VehicleService:
|
||||
|
||||
@staticmethod
|
||||
def update_work_order(instance: WorkOrder, data: dict) -> WorkOrder:
|
||||
previous_status = instance.status
|
||||
for k, v in data.items():
|
||||
setattr(instance, k, v)
|
||||
try:
|
||||
@@ -134,8 +135,17 @@ class VehicleService:
|
||||
raise ValidationError({"detail": str(e)})
|
||||
with transaction.atomic():
|
||||
instance.save()
|
||||
# Ako je nalog zatvoren, obavijestimo kreatora/servisera
|
||||
if instance.status == 'closed':
|
||||
transitioned_to_closed = previous_status != 'closed' and instance.status == 'closed'
|
||||
if transitioned_to_closed:
|
||||
from modules.task_management.models import Task
|
||||
Task.objects.filter(
|
||||
is_active=True,
|
||||
work_order=instance,
|
||||
status='servis',
|
||||
).update(status='spreman_za_zavrsetak')
|
||||
|
||||
# Ako je nalog upravo zatvoren, obavijestimo kreatora/servisera
|
||||
if transitioned_to_closed:
|
||||
try:
|
||||
NotificationService.create_notification(
|
||||
recipient=instance.creator,
|
||||
|
||||
Reference in New Issue
Block a user