/** * Format products for easier displaying * * @param object $products * * @return array */ public function format_product_details($products) { if (empty($products)) { return false; } $orders_page = get_permalink(WC_Vendors::$pv_options->get_option('orders_page')); $default_commission = WC_Vendors::$pv_options->get_option('default_commission'); $total_qty = $total_cost = 0; $data = array('products' => array(), 'total_qty' => '', 'total_cost' => ''); foreach ($products as $product) { $ids[] = $product->ID; } $orders = WCV_Queries::sum_orders_for_products($ids, array('vendor_id' => get_current_user_id())); if ($orders) { foreach ($orders as $order_item) { if ($order_item->qty < 1) { continue; } $commission_rate = WCV_Commission::get_commission_rate($order_item->product_id); $_product = get_product($order_item->product_id); $id = !empty($_product->parent->id) ? $_product->parent->id : $order_item->product_id; $data['products'][$id] = array('id' => $id, 'title' => $_product->get_title(), 'qty' => !empty($data['products'][$id]) ? $data['products'][$id]['qty'] + $order_item->qty : $order_item->qty, 'cost' => !empty($data['products'][$id]) ? $data['products'][$id]['cost'] + $order_item->line_total : $order_item->line_total, 'view_orders_url' => esc_url(add_query_arg('orders_for_product', $id, $orders_page)), 'commission_rate' => $commission_rate); $total_qty += $order_item->qty; $total_cost += $order_item->line_total; } } $data['total_qty'] = $total_qty; $data['total_cost'] = $total_cost; // Sort by product title if (!empty($data['products'])) { usort($data['products'], array($this, 'sort_by_title')); } return $data; }
/** * Commission due for a product based on a rate and price * * @param float $product_price * @param unknown $product_id * * @return float */ public static function calculate_commission($product_price, $product_id, $order) { $commission_rate = WCV_Commission::get_commission_rate($product_id); $commission = $product_price * ($commission_rate / 100); $commission = round($commission, 2); return apply_filters('wcv_commission_rate', $commission, $product_id, $product_price, $order); }