From 8121815ded45298c16192050343e5a3971f01b71 Mon Sep 17 00:00:00 2001 From: bengizmo Date: Fri, 30 May 2025 15:52:30 -0600 Subject: [PATCH] fix: Update dashboard data queries to use meta relationships for revenue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixed get_total_tickets_sold() to use _tribe_tpp_event meta instead of post_parent - Fixed get_total_revenue() to check multiple price meta keys (_tribe_tpp_ticket_price, _paid_price, _tribe_tpp_price) - Updated events table queries to properly calculate sold tickets and revenue using meta relationships - TEC doesn't use post_parent for attendee-event relationships, it uses postmeta This fixes the issue where ticket sales and revenue numbers were not showing in the dashboard. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../includes/class-hvac-dashboard-data.php | 57 +++++++++++++------ 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php index a45d077e..b09f5b95 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php @@ -117,11 +117,12 @@ class HVAC_Dashboard_Data { public function get_total_tickets_sold() { global $wpdb; - // Use direct database query to count attendees for user's events + // Use meta relationships since TEC doesn't use post_parent for attendees $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->posts} p + INNER JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key = '_tribe_tpp_event' WHERE p.post_type = %s - AND p.post_parent IN ( + AND pm.meta_value IN ( SELECT ID FROM {$wpdb->posts} WHERE post_type = %s AND post_author = %d @@ -143,17 +144,28 @@ class HVAC_Dashboard_Data { public function get_total_revenue() { global $wpdb; - // Use direct database query to sum revenue from attendees for user's events + // Use meta relationships to sum revenue - check multiple possible price fields $revenue = $wpdb->get_var( $wpdb->prepare( - "SELECT SUM(CAST(pm.meta_value AS DECIMAL(10,2))) FROM {$wpdb->posts} p - LEFT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key = '_tribe_tpp_ticket_price' - WHERE p.post_type = %s - AND p.post_parent IN ( - SELECT ID FROM {$wpdb->posts} - WHERE post_type = %s - AND post_author = %d - AND post_status IN ('publish', 'private') - )", + "SELECT SUM( + CASE + WHEN pm_price1.meta_value IS NOT NULL THEN CAST(pm_price1.meta_value AS DECIMAL(10,2)) + WHEN pm_price2.meta_value IS NOT NULL THEN CAST(pm_price2.meta_value AS DECIMAL(10,2)) + WHEN pm_price3.meta_value IS NOT NULL THEN CAST(pm_price3.meta_value AS DECIMAL(10,2)) + ELSE 0 + END + ) + FROM {$wpdb->posts} p + INNER JOIN {$wpdb->postmeta} pm_event ON p.ID = pm_event.post_id AND pm_event.meta_key = '_tribe_tpp_event' + LEFT JOIN {$wpdb->postmeta} pm_price1 ON p.ID = pm_price1.post_id AND pm_price1.meta_key = '_tribe_tpp_ticket_price' + LEFT JOIN {$wpdb->postmeta} pm_price2 ON p.ID = pm_price2.post_id AND pm_price2.meta_key = '_paid_price' + LEFT JOIN {$wpdb->postmeta} pm_price3 ON p.ID = pm_price3.post_id AND pm_price3.meta_key = '_tribe_tpp_price' + WHERE p.post_type = %s + AND pm_event.meta_value IN ( + SELECT ID FROM {$wpdb->posts} + WHERE post_type = %s + AND post_author = %d + AND post_status IN ('publish', 'private') + )", 'tribe_tpp_attendees', 'tribe_events', $this->user_id @@ -294,14 +306,27 @@ class HVAC_Dashboard_Data { p.post_date, COALESCE(pm_start.meta_value, p.post_date) as event_date, COALESCE( - (SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = 'tribe_tpp_attendees' AND post_parent = p.ID), + (SELECT COUNT(*) + FROM {$wpdb->posts} attendees + INNER JOIN {$wpdb->postmeta} pm_event ON attendees.ID = pm_event.post_id AND pm_event.meta_key = '_tribe_tpp_event' + WHERE attendees.post_type = 'tribe_tpp_attendees' AND pm_event.meta_value = p.ID), 0 ) as sold, COALESCE( - (SELECT SUM(CAST(pm_price.meta_value AS DECIMAL(10,2))) + (SELECT SUM( + CASE + WHEN pm_price1.meta_value IS NOT NULL THEN CAST(pm_price1.meta_value AS DECIMAL(10,2)) + WHEN pm_price2.meta_value IS NOT NULL THEN CAST(pm_price2.meta_value AS DECIMAL(10,2)) + WHEN pm_price3.meta_value IS NOT NULL THEN CAST(pm_price3.meta_value AS DECIMAL(10,2)) + ELSE 0 + END + ) FROM {$wpdb->posts} attendees - LEFT JOIN {$wpdb->postmeta} pm_price ON attendees.ID = pm_price.post_id AND pm_price.meta_key = '_tribe_tpp_ticket_price' - WHERE attendees.post_type = 'tribe_tpp_attendees' AND attendees.post_parent = p.ID), + INNER JOIN {$wpdb->postmeta} pm_event ON attendees.ID = pm_event.post_id AND pm_event.meta_key = '_tribe_tpp_event' + LEFT JOIN {$wpdb->postmeta} pm_price1 ON attendees.ID = pm_price1.post_id AND pm_price1.meta_key = '_tribe_tpp_ticket_price' + LEFT JOIN {$wpdb->postmeta} pm_price2 ON attendees.ID = pm_price2.post_id AND pm_price2.meta_key = '_paid_price' + LEFT JOIN {$wpdb->postmeta} pm_price3 ON attendees.ID = pm_price3.post_id AND pm_price3.meta_key = '_tribe_tpp_price' + WHERE attendees.post_type = 'tribe_tpp_attendees' AND pm_event.meta_value = p.ID), 0 ) as revenue, 50 as capacity