/**
  * 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;
 }
Example #4
0
 /**
  *
  *
  * @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;
 }