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);