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 <noreply@anthropic.com>
This commit is contained in:
13
api.php
13
api.php
@@ -5833,14 +5833,21 @@ switch ($action) {
|
|||||||
// PAITSI jos Zammadissa status on oikeasti muuttunut (esim. uusi viesti avasi tiketin)
|
// PAITSI jos Zammadissa status on oikeasti muuttunut (esim. uusi viesti avasi tiketin)
|
||||||
$localStatus = $existing['status'] ?? '';
|
$localStatus = $existing['status'] ?? '';
|
||||||
$newStatus = $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)
|
// Tarkista onko Zammadissa oikeasti uutta toimintaa (updated_at muuttunut)
|
||||||
$localUpdated = $existing['updated'] ?? '';
|
$localUpdated = $existing['updated'] ?? '';
|
||||||
if ($zammadUpdated > $localUpdated) {
|
if ($zammadUpdated > $localUpdated) {
|
||||||
// Zammadissa on tapahtunut jotain — avaa uudelleen
|
|
||||||
$newStatus = 'uusi';
|
$newStatus = 'uusi';
|
||||||
} else {
|
} else {
|
||||||
// Ei muutoksia — pidä suljettuna
|
|
||||||
$newStatus = 'suljettu';
|
$newStatus = 'suljettu';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user