/** * 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)); } } }