From 9533da4053e1ac51a1bd2c3785dc64e9484c2586 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Wed, 29 Jul 2026 13:21:37 -0400 Subject: [PATCH] Repair SLA verdicts missed by kanban/portal resolve; record first response on kanban resolve --- admin/database_updates/2.5.2.php | 32 ++++++++++++++++++++++++++++++++ agent/ajax.php | 3 +++ 2 files changed, 35 insertions(+) create mode 100644 admin/database_updates/2.5.2.php diff --git a/admin/database_updates/2.5.2.php b/admin/database_updates/2.5.2.php new file mode 100644 index 00000000..f6fae00a --- /dev/null +++ b/admin/database_updates/2.5.2.php @@ -0,0 +1,32 @@ + 0 + AND ticket_resolution_due_at IS NOT NULL + AND ticket_resolved_at IS NOT NULL + AND ticket_resolution_sla_met IS NULL"); + + // Same repair on the response track, for any ticket whose first response + // was recorded without the verdict being written alongside it + mysqli_query($mysqli, "UPDATE tickets + SET ticket_response_sla_met = (ticket_first_response_at <= ticket_response_due_at) + WHERE ticket_sla_id > 0 + AND ticket_response_due_at IS NOT NULL + AND ticket_first_response_at IS NOT NULL + AND ticket_response_sla_met IS NULL"); diff --git a/agent/ajax.php b/agent/ajax.php index fffebe58..8ee9ea03 100644 --- a/agent/ajax.php +++ b/agent/ajax.php @@ -508,6 +508,9 @@ if (isset($_POST['update_kanban_ticket'])) { } elseif ($status === $statuses['Resolved']) { // If the ticket was moved to a resolved status, we need to update ticket_resolved_at mysqli_query($mysqli, "UPDATE tickets SET ticket_order = $kanban, ticket_status = $status, ticket_resolved_at = NOW() WHERE ticket_id = $ticket_id"); + // An agent resolving the ticket counts as a response, same as + // resolving from the ticket itself does + setTicketFirstResponse($ticket_id); setTicketResolutionSlaMet($ticket_id); syncTicketSlaClock($ticket_id); triggerCustomAction('ticket_update', $ticket_id);