feat(admin): add affiliate marketing screens and admin order integration

This commit is contained in:
Dwindi Ramadhana
2026-06-01 00:57:53 +07:00
parent 53209c4381
commit 322c0e739d
10 changed files with 1242 additions and 15 deletions

View File

@@ -672,6 +672,39 @@ class OrdersController
}
}
// Get related affiliate referral
if (ModuleRegistry::is_enabled('affiliate')) {
if (class_exists('\WooNooW\Modules\Affiliate\AffiliateTracker')) {
global $wpdb;
$referral = \WooNooW\Modules\Affiliate\AffiliateTracker::get_referral_for_order($id);
if ($referral) {
$affiliates_table = $wpdb->prefix . 'woonoow_affiliates';
$affiliate = $wpdb->get_row($wpdb->prepare(
"SELECT a.*, u.display_name as affiliate_name, u.user_email as affiliate_email
FROM $affiliates_table a
LEFT JOIN $wpdb->users u ON a.user_id = u.ID
WHERE a.id = %d",
$referral->affiliate_id
));
if ($affiliate) {
$data['affiliate'] = [
'has_referral' => true,
'referral_id' => (int) $referral->id,
'commission' => (float) $referral->commission_amount,
'currency' => $referral->currency,
'status' => $referral->status,
'cancelled_reason' => $referral->cancelled_reason ?: null,
'affiliate_id' => (int) $affiliate->id,
'affiliate_name' => $affiliate->affiliate_name ?: __('Unknown', 'woonoow'),
'affiliate_email' => $affiliate->affiliate_email ?: '',
'commission_rate' => (float) $affiliate->commission_rate,
];
}
}
}
}
// Allow plugins to modify response (Level 1 compatibility)
$data = apply_filters('woonoow/order_api_data', $data, $order, $req);