>
= 2 && $config_module_enable_ticketing == 1) { ?>
>
window.location.href = \'dashboard_technical.php\';'); } // Fetch financial data for the dashboard // Define variables to avoid errors in logs $largest_income_month = 0; $sql_total_payments_to_invoices = mysqli_query($mysqli, "SELECT SUM(payment_amount) AS total_payments_to_invoices FROM payments WHERE YEAR(payment_date) = $year"); $row = mysqli_fetch_array($sql_total_payments_to_invoices); $total_payments_to_invoices = floatval($row['total_payments_to_invoices']); $sql_total_revenues = mysqli_query($mysqli, "SELECT SUM(revenue_amount) AS total_revenues FROM revenues WHERE YEAR(revenue_date) = $year AND revenue_category_id > 0"); $row = mysqli_fetch_array($sql_total_revenues); $total_revenues = floatval($row['total_revenues']); $total_income = $total_payments_to_invoices + $total_revenues; $sql_total_expenses = mysqli_query($mysqli, "SELECT SUM(expense_amount) AS total_expenses FROM expenses WHERE expense_vendor_id > 0 AND YEAR(expense_date) = $year"); $row = mysqli_fetch_array($sql_total_expenses); $total_expenses = floatval($row['total_expenses']); $sql_invoice_totals = mysqli_query($mysqli, "SELECT SUM(invoice_amount) AS invoice_totals FROM invoices WHERE invoice_status NOT LIKE 'Draft' AND invoice_status NOT LIKE 'Cancelled' AND YEAR(invoice_date) = $year"); $row = mysqli_fetch_array($sql_invoice_totals); $invoice_totals = floatval($row['invoice_totals']); $sql_total_payments_to_invoices_all_years = mysqli_query($mysqli, "SELECT SUM(payment_amount) AS total_payments_to_invoices_all_years FROM payments"); $row = mysqli_fetch_array($sql_total_payments_to_invoices_all_years); $total_payments_to_invoices_all_years = floatval($row['total_payments_to_invoices_all_years']); $sql_invoice_totals_all_years = mysqli_query($mysqli, "SELECT SUM(invoice_amount) AS invoice_totals_all_years FROM invoices WHERE invoice_status NOT LIKE 'Draft' AND invoice_status NOT LIKE 'Cancelled'"); $row = mysqli_fetch_array($sql_invoice_totals_all_years); $invoice_totals_all_years = floatval($row['invoice_totals_all_years']); $receivables = $invoice_totals_all_years - $total_payments_to_invoices_all_years; $profit = $total_income - $total_expenses; $sql_accounts = mysqli_query($mysqli, "SELECT * FROM accounts WHERE account_archived_at IS NULL ORDER BY account_name ASC"); $sql_latest_invoice_payments = mysqli_query($mysqli, " SELECT * FROM payments JOIN invoices ON payment_invoice_id = invoice_id JOIN clients ON invoice_client_id = client_id ORDER BY payment_id DESC LIMIT 5 "); $sql_latest_expenses = mysqli_query($mysqli, " SELECT * FROM expenses JOIN vendors ON expense_vendor_id = vendor_id JOIN categories ON expense_category_id = category_id ORDER BY expense_id DESC LIMIT 5 "); // Get recurring totals $sql_recurring_yearly_total = mysqli_query($mysqli, "SELECT SUM(recurring_amount) AS recurring_yearly_total FROM recurring WHERE recurring_status = 1 AND recurring_frequency = 'year' AND YEAR(recurring_created_at) <= $year"); $row = mysqli_fetch_array($sql_recurring_yearly_total); $recurring_yearly_total = floatval($row['recurring_yearly_total']); $sql_recurring_monthly_total = mysqli_query($mysqli, "SELECT SUM(recurring_amount) AS recurring_monthly_total FROM recurring WHERE recurring_status = 1 AND recurring_frequency = 'month' AND YEAR(recurring_created_at) <= $year"); $row = mysqli_fetch_array($sql_recurring_monthly_total); $recurring_monthly_total = floatval($row['recurring_monthly_total']) + ($recurring_yearly_total / 12); $sql_recurring_expense_yearly_total = mysqli_query($mysqli, "SELECT SUM(recurring_expense_amount) AS recurring_expense_yearly_total FROM recurring_expenses WHERE recurring_expense_status = 1 AND recurring_expense_frequency = 'year' AND YEAR(recurring_expense_created_at) <= $year"); $row = mysqli_fetch_array($sql_recurring_expense_yearly_total); $recurring_expense_yearly_total = floatval($row['recurring_expense_yearly_total']); $sql_recurring_expense_monthly_total = mysqli_query($mysqli, "SELECT SUM(recurring_expense_amount) AS recurring_expense_monthly_total FROM recurring_expenses WHERE recurring_expense_status = 1 AND recurring_expense_frequency = 'month' AND YEAR(recurring_expense_created_at) <= $year"); $row = mysqli_fetch_array($sql_recurring_expense_monthly_total); $recurring_expense_monthly_total = floatval($row['recurring_expense_monthly_total']) + ($recurring_expense_yearly_total / 12); $sql_miles_driven = mysqli_query($mysqli, "SELECT SUM(trip_miles) AS total_miles FROM trips WHERE YEAR(trip_date) = $year"); $row = mysqli_fetch_array($sql_miles_driven); $total_miles = floatval($row['total_miles']); if ($config_module_enable_ticketing && $config_module_enable_accounting) { $sql_unbilled_tickets = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS unbilled_tickets FROM tickets WHERE ticket_closed_at IS NOT NULL AND ticket_billable = 1 AND ticket_invoice_id = 0 AND YEAR(ticket_created_at) = $year"); $row = mysqli_fetch_array($sql_unbilled_tickets); $unbilled_tickets = intval($row['unbilled_tickets']); } else { $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(recurring_id) AS recurring_invoices_added FROM recurring WHERE YEAR(recurring_created_at) = $year")); $recurring_invoices_added = intval($row['recurring_invoices_added']); } $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(client_id) AS clients_added FROM clients WHERE YEAR(client_created_at) = $year AND client_archived_at IS NULL")); $clients_added = intval($row['clients_added']); $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(vendor_id) AS vendors_added FROM vendors WHERE YEAR(vendor_created_at) = $year AND vendor_client_id = 0 AND vendor_template = 0 AND vendor_archived_at IS NULL")); $vendors_added = intval($row['vendors_added']); ?>

Cash Flow

Income by Category (Top 5)

Expenses by Category (Top 5)

Expenses by Vendor (Top 5)

Account Balances

Latest Income

Date Customer Invoice Amount

Latest Expenses

Date Vendor Category Amount

Trip Flow

CURRENT_DATE AND domain_expire < CURRENT_DATE + INTERVAL 30 DAY AND domain_archived_at IS NULL")); $expiring_domains = $sql_domains_expiring['expiring_domains']; $sql_certs_expiring = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(certificate_id) AS expiring_certs FROM certificates WHERE certificate_expire IS NOT NULL AND certificate_expire > CURRENT_DATE AND certificate_expire < CURRENT_DATE + INTERVAL 30 DAY AND certificate_archived_at IS NULL")); $expiring_certificates = $sql_certs_expiring['expiring_certs']; $sql_your_tickets = mysqli_query($mysqli, " SELECT * FROM tickets LEFT JOIN ticket_statuses ON ticket_status = ticket_status_id LEFT JOIN clients ON ticket_client_id = client_id LEFT JOIN contacts ON ticket_contact_id = contact_id WHERE ticket_assigned_to = $session_user_id AND ticket_closed_at IS NULL ORDER BY ticket_number DESC "); ?>

Your Open Tickets

Never

" : "

Never

") : $ticket_updated_at_time_ago; $client_id = intval($row['ticket_client_id']); $client_name = nullable_htmlentities($row['client_name']); $contact_id = intval($row['ticket_contact_id']); $contact_name = nullable_htmlentities($row['contact_name']); $ticket_priority_color = $ticket_priority == "High" ? "danger" : ($ticket_priority == "Medium" ? "warning" : "info"); $contact_display = empty($contact_name) ? "-" : "$contact_name"; ?>
Number Subject Client Contact Priority Status Last Response