Untitled

 avatar
unknown
plain_text
4 months ago
1.8 kB
8
Indexable
add_filter('marketking_final_vendor_commission', function($vendor_commission, $order_id, $vendor_id){
    // Categories that require minimum $20 admin commission
    $min_commission_categories = array(
        'cards',
        'toys'
    );
    
    $order = wc_get_order($order_id);
    $order_total = $order->get_total();
    $admin_commission = $order_total - $vendor_commission;
    
    // Track which categories are present in the order
    $categories_found = array();
    
    // Check each item in the order
    foreach ($order->get_items() as $item) {
        $product_id = $item->get_product_id();
        $product_cats = get_the_terms($product_id, 'product_cat');
        
        if ($product_cats && !is_wp_error($product_cats)) {
            foreach ($product_cats as $cat) {
                if (in_array($cat->slug, $min_commission_categories)) {
                    $categories_found[$cat->slug] = true;
                }
            }
        }
    }
    
    // Calculate how many unique categories with minimum commission are in the order
    $num_min_commission_categories = count($categories_found);
    
    // Calculate minimum required admin commission based on categories
    $min_required_admin_commission = $num_min_commission_categories * 20;
    
    // If current admin commission is less than required minimum
    if ($admin_commission < $min_required_admin_commission) {
        // Adjust vendor commission to ensure minimum admin commission
        $vendor_commission = $order_total - $min_required_admin_commission;
        
        // Make sure vendor commission doesn't go negative
        if ($vendor_commission < 0) {
            $vendor_commission = 0;
        }
    }
    
    return $vendor_commission;
}, 10, 3);
Editor is loading...
Leave a Comment