No tickets match these filters.

Clear the filters
= 2) { ?>
$row) { $ticket_prefix = escapeHtml($row['ticket_prefix']); $ticket_number = intval($row['ticket_number']); $ticket_subject = escapeHtml($row['ticket_subject']); $ticket_priority = escapeHtml($row['ticket_priority']); $ticket_status_name = escapeHtml($row['ticket_status_name']); $ticket_status_color = escapeHtml($row['ticket_status_color']); $ticket_billable = intval($row['ticket_billable']); $ticket_scheduled_for = escapeHtml($row['ticket_schedule']); $ticket_created_at = escapeHtml($row['ticket_created_at']); $ticket_created_at_time_ago = timeAgo($row['ticket_created_at']); $ticket_closed_at = escapeHtml($row['ticket_closed_at']); $ticket_resolved_at = escapeHtml($row['ticket_resolved_at']); $ticket_is_open = empty($ticket_resolved_at) && empty($ticket_closed_at); // SLA alert stages are maintained by cron/ticket_sla.php (1 = warned, 2 = breached) $ticket_sla_alert_stage = max(intval($row['ticket_response_sla_alert_stage']), intval($row['ticket_resolution_sla_alert_stage'])); $ticket_sla_paused = intval($row['ticket_status_pauses_sla']); // A paused ticket isn't running down its clock, so drop the // at-risk warning - a breach already recorded still stands if ($ticket_sla_paused && $ticket_sla_alert_stage < 2) { $ticket_sla_alert_stage = 0; } $project_id = intval($row['ticket_project_id']); $client_id = intval($row['ticket_client_id']); $client_name = escapeHtml($row['client_name']); $contact_id = intval($row['contact_id']); $contact_name = escapeHtml($row['contact_name']); $has_client = $client_id ? "&client_id=$client_id" : ""; if ($ticket_priority == "Urgent") { $ticket_priority_color = "dark"; } elseif ($ticket_priority == "High") { $ticket_priority_color = "danger"; } elseif ($ticket_priority == "Medium") { $ticket_priority_color = "warning"; } else { $ticket_priority_color = "info"; } $ticket_assigned_to = intval($row['ticket_assigned_to']); if (empty($ticket_assigned_to)) { $ticket_assigned_to_display = $ticket_is_open ? "Unassigned" : "Unassigned"; } else { $ticket_assigned_to_display = escapeHtml($row['user_name']); } if (empty($contact_name)) { $contact_display = "-"; } else { $contact_display = "$contact_name"; } $ticket_invoice_id = intval($row['ticket_invoice_id']); $ticket_quote_id = intval($row['ticket_quote_id']); // Last reply, from the batched lookup above $ticket_reply_created_at = ""; $ticket_reply_created_at_time_ago = "Never"; $ticket_reply_by_display = ""; $ticket_reply_type = "Client"; // Un-replied tickets are waiting on us if (isset($ticket_replies[$ticket_id])) { $reply = $ticket_replies[$ticket_id]; $ticket_reply_type = escapeHtml($reply['ticket_reply_type']); if ($ticket_reply_type == "Client") { $ticket_reply_by_display = escapeHtml($reply['contact_name']); } else { $ticket_reply_by_display = escapeHtml($reply['user_name']); } $ticket_reply_created_at = escapeHtml($reply['ticket_reply_created_at']); $ticket_reply_created_at_time_ago = timeAgo($reply['ticket_reply_created_at']); } // Task progress, from the batched lookup above $task_count = isset($ticket_tasks[$ticket_id]) ? intval($ticket_tasks[$ticket_id]['task_count']) : 0; $completed_task_count = isset($ticket_tasks[$ticket_id]) ? intval($ticket_tasks[$ticket_id]['completed_count']) : 0; $tasks_completed_percent = $task_count ? round(($completed_task_count / $task_count) * 100) : 0; /* * Row highlighting, in priority order. The title explains why the * row is coloured - previously you just got a red row with no * indication of which of several rules had fired. */ $row_class = ''; $row_title = ''; if ($ticket_is_open && $ticket_sla_alert_stage == 2) { $row_class = 'table-danger'; $row_title = 'SLA breached'; } elseif ($ticket_is_open && $ticket_sla_alert_stage == 1) { $row_class = 'table-warning'; $row_title = 'SLA at risk'; } elseif ($ticket_is_open && $ticket_reply_type == "Client") { $row_class = 'table-warning'; $row_title = 'Waiting on a reply from us'; } if ($ticket_is_open && $ticket_reply_created_at_time_ago == "Never") { $row_class .= ' font-weight-bold'; $row_title = $row_title ? $row_title . ', not yet replied to' : 'Not yet replied to'; } ?> title="">
Ticket Subject Client / " href="?&sort=contact_name&order="> Contact Billing Priority Status SLA Assigned Last Response Created
"> ">
/ tasks
No client
Invoiced Quoted = 2 && empty($ticket_closed_at)) { ?> class="ajax-modal" data-modal-url="modals/ticket/ticket_priority.php?id=" >
-"; } elseif ($ticket_sla_paused) { echo " Paused"; } elseif ($ticket_sla_alert_stage == 2) { echo " Breached"; } elseif ($ticket_sla_alert_stage == 1) { echo " At risk"; } elseif (!$ticket_is_open) { $sla_met = intval($row['ticket_response_sla_met'] ?? 0) && (is_null($row['ticket_resolution_due_at']) || intval($row['ticket_resolution_sla_met'] ?? 0)); echo $sla_met ? "Met" : "-"; } else { // Whichever clock is still running is the one worth showing $sla_due_at = empty($row['ticket_first_response_at']) ? $row['ticket_response_due_at'] : $row['ticket_resolution_due_at']; $sla_due_label = empty($row['ticket_first_response_at']) ? 'First response due' : 'Resolution due'; if (!empty($sla_due_at)) { echo "" . timeAgo($sla_due_at) . ""; } else { echo "-"; } } ?> = 2 && empty($ticket_closed_at)) { ?> class="ajax-modal" data-modal-url="modals/ticket/ticket_assign.php?id=" >
"; } ?>