fix: Update dashboard data queries to use meta relationships for revenue
- 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 <noreply@anthropic.com>
This commit is contained in:
parent
669f5d5650
commit
8121815ded
1 changed files with 41 additions and 16 deletions
|
|
@ -117,11 +117,12 @@ class HVAC_Dashboard_Data {
|
||||||
public function get_total_tickets_sold() {
|
public function get_total_tickets_sold() {
|
||||||
global $wpdb;
|
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(
|
$count = $wpdb->get_var( $wpdb->prepare(
|
||||||
"SELECT COUNT(*) FROM {$wpdb->posts} p
|
"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
|
WHERE p.post_type = %s
|
||||||
AND p.post_parent IN (
|
AND pm.meta_value IN (
|
||||||
SELECT ID FROM {$wpdb->posts}
|
SELECT ID FROM {$wpdb->posts}
|
||||||
WHERE post_type = %s
|
WHERE post_type = %s
|
||||||
AND post_author = %d
|
AND post_author = %d
|
||||||
|
|
@ -143,12 +144,23 @@ class HVAC_Dashboard_Data {
|
||||||
public function get_total_revenue() {
|
public function get_total_revenue() {
|
||||||
global $wpdb;
|
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(
|
$revenue = $wpdb->get_var( $wpdb->prepare(
|
||||||
"SELECT SUM(CAST(pm.meta_value AS DECIMAL(10,2))) FROM {$wpdb->posts} p
|
"SELECT SUM(
|
||||||
LEFT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key = '_tribe_tpp_ticket_price'
|
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
|
WHERE p.post_type = %s
|
||||||
AND p.post_parent IN (
|
AND pm_event.meta_value IN (
|
||||||
SELECT ID FROM {$wpdb->posts}
|
SELECT ID FROM {$wpdb->posts}
|
||||||
WHERE post_type = %s
|
WHERE post_type = %s
|
||||||
AND post_author = %d
|
AND post_author = %d
|
||||||
|
|
@ -294,14 +306,27 @@ class HVAC_Dashboard_Data {
|
||||||
p.post_date,
|
p.post_date,
|
||||||
COALESCE(pm_start.meta_value, p.post_date) as event_date,
|
COALESCE(pm_start.meta_value, p.post_date) as event_date,
|
||||||
COALESCE(
|
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
|
0
|
||||||
) as sold,
|
) as sold,
|
||||||
COALESCE(
|
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
|
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'
|
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 attendees.post_parent = p.ID),
|
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
|
0
|
||||||
) as revenue,
|
) as revenue,
|
||||||
50 as capacity
|
50 as capacity
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue