From 6fdfc9ec97394f97d05880a6599ead7d76b537e5 Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Fri, 13 Mar 2026 23:27:35 +0200 Subject: [PATCH] Fix Zammad sync overwriting local ticket status Local statuses (odottaa vastausta, kasittelyssa, odottaa) set in the intra UI were being overwritten by Zammad's state on every sync. Now these statuses are preserved unless Zammad explicitly closes the ticket. Co-Authored-By: Claude Opus 4.6 --- api.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/api.php b/api.php index aef15d2..31a2b8e 100644 --- a/api.php +++ b/api.php @@ -5833,14 +5833,21 @@ switch ($action) { // PAITSI jos Zammadissa status on oikeasti muuttunut (esim. uusi viesti avasi tiketin) $localStatus = $existing['status'] ?? ''; $newStatus = $status; - if ($localStatus === 'suljettu' && $status === 'uusi') { + // Tilat jotka on asetettu lokaalisti intrassa — Zammad ei saa ylikirjoittaa + $localOnlyStatuses = ['odottaa vastausta', 'kasittelyssa', 'odottaa']; + if (in_array($localStatus, $localOnlyStatuses)) { + // Säilytä lokaali tila — paitsi jos Zammadissa on suljettu + if ($status === 'suljettu') { + $newStatus = 'suljettu'; + } else { + $newStatus = $localStatus; + } + } elseif ($localStatus === 'suljettu' && $status === 'uusi') { // Tarkista onko Zammadissa oikeasti uutta toimintaa (updated_at muuttunut) $localUpdated = $existing['updated'] ?? ''; if ($zammadUpdated > $localUpdated) { - // Zammadissa on tapahtunut jotain — avaa uudelleen $newStatus = 'uusi'; } else { - // Ei muutoksia — pidä suljettuna $newStatus = 'suljettu'; } }