/** * Store all commission due for an order * * @return bool * * @param int $order_id */ public function log_commission_due($order_id) { global $woocommerce; $order = new WC_Order($order_id); $dues = PV_Vendors::get_vendor_dues_from_order($order, false); foreach ($dues as $vendor_id => $details) { // Only process vendor commission if (!PV_Vendors::is_vendor($vendor_id)) { continue; } // See if they currently have an amount due $due = PV_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 $total_due = 0; $insert_due = array(); foreach ($details as $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' => $detail['shipping'], 'tax' => $detail['tax'], 'qty' => $detail['qty'], 'time' => $order->order_date); $total_due += $detail['total']; } if (!empty($insert_due)) { PV_Vendors::update_total_due($vendor_id, $total_due); PV_Commission::insert_new_commission(array_values($insert_due)); } } }
/** * * * @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 = PV_Vendors::get_vendor_dues_from_order($order, false); 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']; 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 : PV_Vendors::get_vendor_paypal($product['vendor_id']); $receiverOptions->receiver = $receiverId; $receiverOptions->invoiceData = new InvoiceData(); $receiverOptions->invoiceData->item = $invoice_items; $receiverOptions->invoiceData->totalTax = $tax_given; $receiverOptions->invoiceData->totalShipping = $shipping_given; } return $setPaymentOptionsRequest; }