Untitled

 avatar
webwizards
plain_text
17 hours ago
5.3 kB
1
Indexable
// Hook to add meta box
add_action('add_meta_boxes', 'b2bking_add_pricing_meta_box');

function b2bking_add_pricing_meta_box() {
    add_meta_box(
        'b2bking_pricing_details',
        'Product Pricing Details',
        'b2bking_pricing_meta_box_callback',
        'b2bking_conversation',
        'normal',
        'high'
    );
}

function b2bking_pricing_meta_box_callback($post) {
    // Get the quote products meta
    $quote_products = get_post_meta($post->ID, 'b2bking_quote_products', true);
    
    if (empty($quote_products)) {
        echo '<p>No products found in this conversation.</p>';
        return;
    }

    // Get the conversation author (user who made the request)
    $user_id = get_post_field('post_author', $post->ID);
    
    // Get user's group ID
    $currentusergroupidnr = get_user_meta($user_id, 'b2bking_customergroup', true);
    
    // Parse the products string
    $products = explode('|', $quote_products);
    
    if (empty($products)) {
        echo '<p>No valid products found.</p>';
        return;
    }
    
    // Add some basic styling
    echo '<style>
        .b2bking-pricing-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 10px;
        }
        .b2bking-pricing-table th,
        .b2bking-pricing-table td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }
        .b2bking-pricing-table th {
            background-color: #f2f2f2;
            font-weight: bold;
        }
        .b2bking-pricing-table tr:nth-child(even) {
            background-color: #f9f9f9;
        }
        .price-customer { color: #0073aa; font-weight: bold; }
        .price-regular { color: #666; }
        .price-group-regular { color: #d63638; }
        .price-group-sale { color: #00a32a; font-weight: bold; }
    </style>';
    
    echo '<div class="b2bking-pricing-container">';
    echo '<h4>User Group ID: ' . esc_html($currentusergroupidnr ? $currentusergroupidnr : 'No group assigned') . '</h4>';
    echo '<table class="b2bking-pricing-table">';
    echo '<thead>';
    echo '<tr>';
    echo '<th>Product</th>';
    echo '<th>Quantity</th>';
    echo '<th>Customer Price</th>';
    echo '<th>Regular Price</th>';
    echo '<th>Group Regular Price</th>';
    echo '<th>Group Sale Price</th>';
    echo '</tr>';
    echo '</thead>';
    echo '<tbody>';
    
    foreach ($products as $product_string) {
        if (empty(trim($product_string))) continue;
        
        // Parse product data: product_ID;quantity;customer_price
        $product_parts = explode(';', $product_string);
        
        if (count($product_parts) !== 3) continue;
        
        $product_id_raw = $product_parts[0];
        $quantity = $product_parts[1];
        $customer_price = $product_parts[2];
        
        // Extract product ID (remove 'product_' prefix if present)
        $product_id = str_replace('product_', '', $product_id_raw);
        $product_id = intval($product_id);
        
        if ($product_id <= 0) continue;
        
        // Get WooCommerce product object
        $product = wc_get_product($product_id);
        
        if (!$product) {
            echo '<tr>';
            echo '<td colspan="6">Product ID ' . esc_html($product_id) . ' not found</td>';
            echo '</tr>';
            continue;
        }
        
        // Get regular price from database
        $regular_price = get_post_meta($product_id, '_regular_price', true);
        
        // Get group prices
        $user_group_regular_price = '';
        $user_group_sale_price = '';
        
        if ($currentusergroupidnr) {
            $user_group_regular_price = get_post_meta($product_id, 'b2bking_regular_product_price_group_' . $currentusergroupidnr, true);
            $user_group_sale_price = get_post_meta($product_id, 'b2bking_sale_product_price_group_' . $currentusergroupidnr, true);
        }
        
        // Format prices
        $currency_symbol = get_woocommerce_currency_symbol();
        $customer_price_formatted = $customer_price ? $currency_symbol . number_format(floatval($customer_price), 2) : '-';
        $regular_price_formatted = $regular_price ? $currency_symbol . number_format(floatval($regular_price), 2) : '-';
        $group_regular_formatted = $user_group_regular_price ? $currency_symbol . number_format(floatval($user_group_regular_price), 2) : '-';
        $group_sale_formatted = $user_group_sale_price ? $currency_symbol . number_format(floatval($user_group_sale_price), 2) : '-';
        
        echo '<tr>';
        echo '<td>';
        echo '<strong>' . esc_html($product->get_name()) . '</strong><br>';
        echo '<small>ID: ' . esc_html($product_id) . '</small>';
        echo '</td>';
        echo '<td>' . esc_html($quantity) . '</td>';
        echo '<td class="price-customer">' . esc_html($customer_price_formatted) . '</td>';
        echo '<td class="price-regular">' . esc_html($regular_price_formatted) . '</td>';
        echo '<td class="price-group-regular">' . esc_html($group_regular_formatted) . '</td>';
        echo '<td class="price-group-sale">' . esc_html($group_sale_formatted) . '</td>';
        echo '</tr>';
    }
    
    echo '</tbody>';
    echo '</table>';
    echo '</div>';
}
Editor is loading...
Leave a Comment