/** * Store all commission due for an order * * @return bool * * @param int $order_id */ public static function log_commission_due($order_id) { global $woocommerce; $order = new WC_Order($order_id); $dues = WCV_Vendors::get_vendor_dues_from_order($order, false); foreach ($dues as $vendor_id => $details) { // Only process vendor commission if (!WCV_Vendors::is_vendor($vendor_id)) { continue; } // See if they currently have an amount due $due = WCV_Vendors::count_due_by_vendor($vendor_id, $order_id); if ($due > 0) { continue; } // Get the dues in an easy format for inserting to our table $insert_due = array(); foreach ($details as $key => $detail) { $product_id = $detail['product_id']; $insert_due[$product_id] = array('order_id' => $order_id, 'vendor_id' => $vendor_id, 'product_id' => $product_id, 'total_due' => !empty($insert_due[$product_id]['total_due']) ? $detail['commission'] + $insert_due[$product_id]['total_due'] : $detail['commission'], 'total_shipping' => !empty($insert_due[$product_id]['total_shipping']) ? $detail['shipping'] + $insert_due[$product_id]['total_shipping'] : $detail['shipping'], 'tax' => !empty($insert_due[$product_id]['tax']) ? $detail['tax'] + $insert_due[$product_id]['tax'] : $detail['tax'], 'qty' => !empty($insert_due[$product_id]['qty']) ? $detail['qty'] + $insert_due[$product_id]['qty'] : $detail['qty'], 'time' => $order->order_date); } if (!empty($insert_due)) { WCV_Commission::insert_new_commission(array_values($insert_due)); } } }
function manage_commissions_column_content($column, $order_id) { if ('commissions' == $column) { $order = new WC_Order($order_id); $dues = WCV_Vendors::get_vendor_dues_from_order($order, false); foreach ($dues as $vendor_id => $details) { /* $commission = 0; $shipping = 0; $tax = 0;*/ $total = 0; foreach ($details as $value) { /* $commission += $value['commission']; $shipping += $value['shipping']; $tax += $value['tax'];*/ $total += $value['total']; } echo sprintf("%01.2f € ", $total); $vendor = get_user_by('id', $vendor_id); echo __('for', 'wcvendors') . ' <a href="/wp-admin/user-edit.php?user_id=' . $vendor_id . '">' . $vendor->display_name . '</a>'; echo '<br />'; } } }
/** * * * @param unknown $total_rows * @param unknown $order * * @return unknown */ function check_order_totals($total_rows, $order) { $commission_label = apply_filters('wcv_notify_vendor_commission_label', __('Commission Subtotal:', 'wcvendors')); $return['cart_subtotal'] = $total_rows['cart_subtotal']; $return['cart_subtotal']['label'] = $commission_label; if (WC_Vendors::$pv_options->get_option('give_tax')) { $return['tax_subtotal'] = array('label' => '', 'value' => ''); $return['tax_subtotal']['label'] = apply_filters('wcv_notify_vendor_tax_label', __('Tax Subtotal:', 'wcvendors')); } $dues = WCV_Vendors::get_vendor_dues_from_order($order); foreach ($dues as $due) { if ($this->current_vendor == $due['vendor_id']) { if (!empty($return['shipping'])) { $return['shipping'] = $total_rows['shipping']; } $return['shipping']['label'] = __('Shipping Subtotal:', 'wcvendors'); $return['shipping']['value'] = woocommerce_price($due['shipping']); if (WC_Vendors::$pv_options->get_option('give_tax')) { $return['tax_subtotal']['value'] += $due['tax']; } break; } } // Format tax price if (WC_Vendors::$pv_options->get_option('give_tax')) { $return['tax_subtotal']['value'] = woocommerce_price($return['tax_subtotal']['value']); } return $return; }
/** * * * @param unknown $order * @param unknown $author_email * @param unknown $setPaymentOptionsRequest * @param unknown $is_admin (optional) * * @return unknown */ public function set_vendor_items($order, $setPaymentOptionsRequest) { $receivers = WCV_Vendors::get_vendor_dues_from_order($order, false); $receivers_two = WCV_Vendors::get_vendor_dues_from_order($order); foreach ($receivers as $products) { $invoice_items = array(); $shipping_given = $tax_given = 0; foreach ($products as $key => $product) { $product_id = $product['product_id']; $shipping_given += $product['shipping']; $tax_given += $product['tax']; $product['commission'] = round($product['commission'], 2); if (!empty($product['commission'])) { $item = new InvoiceItem(); $item->name = get_the_title($product_id); $item->identifier = $product_id; $item->price = $product['commission']; $item->itemPrice = round($product['commission'] / $product['qty'], 2); $item->itemCount = $product['qty']; $invoice_items[] = $item; } } if (empty($invoice_items)) { continue; } $receiverOptions = new ReceiverOptions(); $setPaymentOptionsRequest->receiverOptions[] = $receiverOptions; // Set the current vendor $receiverId = new ReceiverIdentifier(); $receiverId->email = $product['vendor_id'] == 1 ? $this->main_paypal : WCV_Vendors::get_vendor_paypal($product['vendor_id']); $receiverOptions->receiver = $receiverId; $receiverOptions->invoiceData = new InvoiceData(); $receiverOptions->invoiceData->item = $invoice_items; $receiverOptions->invoiceData->totalTax = number_format($receivers_two[$product['vendor_id']]['tax'], 2); $receiverOptions->invoiceData->totalShipping = number_format($receivers_two[$product['vendor_id']]['shipping'], 2); } return $setPaymentOptionsRequest; }
/** * * * @param unknown $total_rows * @param unknown $order * * @return unknown */ function check_order_totals($total_rows, $order) { $return['cart_subtotal'] = $total_rows['cart_subtotal']; $return['cart_subtotal']['label'] = __('Commission Subtotal:', 'wcvendors'); $dues = WCV_Vendors::get_vendor_dues_from_order($order); foreach ($dues as $due) { if ($this->current_vendor == $due['vendor_id']) { if (!empty($return['shipping'])) { $return['shipping'] = $total_rows['shipping']; } $return['shipping']['label'] = __('Shipping Subtotal:', 'wcvendors'); $return['shipping']['value'] = woocommerce_price($due['shipping']); break; } } return $return; }