/** * Get all data needed for this report and store in the class */ private function query_report_data() { $vendor = yith_get_vendor('current', 'user'); if (!$vendor->is_valid() && !$vendor->has_limited_access()) { return false; } $this->report_data = new stdClass(); $date_query = YITH_Reports()->get_wp_query_date_args($this->start_date, $this->end_date); $query_args = array_merge(array('vendor_id' => $vendor->id), $date_query); $commission_status = YITH_Commissions()->get_status(); $commission_status['all'] = 'all'; foreach ($commission_status as $key => $value) { $commission_ids = YITH_Commissions()->get_commissions(array_merge($query_args, array('status' => $key))); $data = "commissions_{$key}"; $data_amount = "{$data}_amount"; $data_count = "{$data}_count"; $this->report_data->{$data_amount} = 0; foreach ($commission_ids as $commision_id) { $commission = YITH_Commission($commision_id); if ('all' == $key && ('cancelled' == $commission->status || 'refunded' == $commission->status)) { continue; } $this->report_data->{$data}[$commision_id] = new stdClass(); $this->report_data->{$data}[$commision_id]->amount = $this->round_chart_totals($commission->get_amount()); $this->report_data->{$data}[$commision_id]->commission_date = $commission->get_date(); $this->report_data->{$data_count}[$commision_id] = new stdClass(); $this->report_data->{$data_count}[$commision_id]->count = 1; $this->report_data->{$data_count}[$commision_id]->commission_date = $commission->get_date(); $this->report_data->{$data_amount} += $commission->get_amount(); } } }
/** * Change commission label value * * @param $attribute_label The Label Value * @param $meta_key The Meta Key value * @param bool|\The $product The Product object * * @return string The label value */ public function commissions_attribute_label($attribute_label, $meta_key, $product = false) { global $pagenow; if ($product && 'post.php' == $pagenow && isset($_GET['post']) && ($order = wc_get_order($_GET['post']))) { $line_items = $order->get_items('line_item'); $item_meta_key = wp_get_post_parent_id($order->id) ? '_commission_id' : '_child__commission_id'; foreach ($line_items as $line_item_id => $line_item) { if ($line_item['product_id'] == $product->id) { $commission_id = wc_get_order_item_meta($line_item_id, $item_meta_key, true); $admin_url = YITH_Commission($commission_id)->get_view_url('admin'); $attribute_label = $item_meta_key == $meta_key ? sprintf("<a href='%s' class='%s'>" . __('commission_id', 'yith_wc_product_vendors') . '</a>', $admin_url, 'commission-id-label') : $attribute_label; } } } return $attribute_label; }
/** * Delete wishlist on bulk action * * @since 1.0.0 */ public function process_bulk_action() { // Detect when a bulk action is being triggered... if (!isset($_REQUEST['page']) || $_REQUEST['page'] != YITH_Commissions()->get_screen() || !isset($_REQUEST['action']) || !isset($_REQUEST['commissions'])) { return; } $vendor = yith_get_vendor('current', 'user'); if (!$vendor->is_super_user()) { return; } $action = $_REQUEST['action'] != -1 ? $_REQUEST['action'] : $_REQUEST['action2']; $commissions = $_REQUEST['commissions']; $message = 'updated'; // change status action if (in_array($action, array_keys(YITH_Commissions()->get_status()))) { foreach ($commissions as $commission_id) { YITH_Commission($commission_id)->update_status($action); } } else { if ('pay' == $action) { $data = array(); foreach ($commissions as $commission_id) { $commission = YITH_Commission($commission_id); $vendor = $commission->get_vendor(); $data[] = array('paypal_email' => $vendor->paypal_email, 'amount' => round($commission->get_amount(), 2), 'request_id' => $commission->id); } // process payment $result = YITH_Vendors_Credit()->pay($data); foreach ($commissions as $commission_id) { /** @var YITH_Commission $commission */ $commission = YITH_Commission($commission_id); // set as processing, because paypal will set as paid as soon as the transaction is completed if ($result['status']) { $message = 'pay-process'; $commission->update_status('processing'); } else { $message = 'pay-failed'; $commission->add_note(sprintf(__('Payment failed: %s', 'yith_wc_product_vendors'), $result['messages'])); } } } else { return; } } wp_redirect(esc_url_raw(add_query_arg('message', $message, wp_get_referer()))); exit; }
/** * Prepare items for table * * @return void * @since 1.0.0 */ public function prepare_items() { // sets pagination arguments $per_page = $this->get_items_per_page('edit_commissions_per_page'); $current_page = absint($this->get_pagenum()); // commissions args $args = array('status' => $this->get_current_view(), 'paged' => $current_page, 'number' => $per_page); // merge Unpaid with Processing if ('unpaid' == $args['status']) { $args['status'] = array('unpaid', 'processing'); } if ($this->_vendor->is_valid() && $this->_vendor->has_limited_access() && $this->_vendor->is_owner()) { $args['user_id'] = get_current_user_id(); } $args = apply_filters('yith_wpv_commissions_table_args', $args); $commission_ids = YITH_Commissions()->get_commissions($args); $total_items = YITH_Commissions()->count_commissions('last-query'); // sets columns headers $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array($columns, $hidden, $sortable); $items = array(); foreach ($commission_ids as $commission_id) { $items[$commission_id] = YITH_Commission($commission_id); } // retrieve data for table $this->items = $items; // sets pagination args $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items / $per_page))); }
if (!defined('ABSPATH')) { exit; // Exit if accessed directly } $vendor_products = $vendor->get_products(array('fields' => 'ids')); ?> <tbody> <?php foreach ($items as $item_id => $item) { $_product = apply_filters('woocommerce_order_item_product', $order->get_product_from_item($item), $item); if (!in_array($_product->id, $vendor_products)) { continue; } $item_meta = new WC_Order_Item_Meta($item['item_meta'], $_product); /** @var $commission YITH_Commission */ $commission = !empty($item['commission_id']) ? YITH_Commission($item['commission_id']) : false; if (apply_filters('woocommerce_order_item_visible', true, $item)) { ?> <tr class="<?php echo esc_attr(apply_filters('woocoomerce_order_item_class', 'order_item', $item, $order)); ?> "> <td style="text-align:left; vertical-align:middle; border: 1px solid #eee; word-wrap:break-word;"><?php // Show title/image etc if ($show_image) { echo apply_filters('woocommerce_order_item_thumbnail', '<img src="' . ($_product->get_image_id() ? current(wp_get_attachment_image_src($_product->get_image_id(), 'thumbnail')) : wc_placeholder_img_src()) . '" alt="' . __('Product Image', 'woocommerce') . '" height="' . esc_attr($image_size[1]) . '" width="' . esc_attr($image_size[0]) . '" style="vertical-align:middle; margin-right: 10px;" />', $item); } // Product name echo apply_filters('woocommerce_order_item_name', $item['name'], $item); // SKU if ($show_sku && is_object($_product) && $_product->get_sku()) {
/** * Multiple Delete Bulk commission * * @param $order_id array The order ids to apply the bulk action * @param $action string Bulk action type * * @author Andrea Grillo <*****@*****.**> * @since 1.8.4 * @return void */ public function bulk_action($order_ids, $action = 'delete') { switch ($action) { case 'delete': foreach ($order_ids as $order_id) { $commission_ids = YITH_Commissions()->get_commissions(array('order_id' => $order_id, 'status' => $this->get_status())); foreach ($commission_ids as $commission_id) { $commission = YITH_Commission($commission_id); if ($commission_id) { $commission->remove(); } } } break; } }
/** * Process success payment * * @param $args */ public function handle_payment_successful($args) { if (empty($args['unique_id'])) { return; } $commission = YITH_Commission(absint($args['unique_id'])); // perform only if the commission is in progress if (!$commission->has_status('processing')) { return; } // emails WC()->mailer(); // if completed, set as paid if ($args['status'] == 'Completed') { $commission->update_status('paid', sprintf(__('Commission paid via PayPal (txn ID: %s)', 'yith_wc_product_vendors'), $args['txn_id'])); do_action('yith_vendors_commissions_paid', $commission); } else { $commission->update_status('unpaid', sprintf(__('Payment %s', 'yith_wc_product_vendors'), $args['status'])); do_action('yith_vendors_commissions_unpaid', $commission); } }
/** * Get all data needed for this report and store in the class */ private function query_report_data() { $vendor = yith_get_vendor('current', 'user'); if (!$vendor->is_valid() && !$vendor->has_limited_access()) { return false; } $this->report_data = new stdClass(); $date_query = YITH_Reports()->get_wp_query_date_args($this->start_date, $this->end_date); $query_args = array_merge(array('vendor_id' => $vendor->id), $date_query); $products = $vendor->get_products(); $commission_ids = YITH_Commissions()->get_commissions(array_merge($query_args, array('status' => 'all'))); $orders = array(); $this->report_data->orders_all_count = 0; $this->report_data->orders_all_product_total = 0; $this->report_data->orders_refunded_total = 0; $this->report_data->orders_gross_amount = 0; $this->report_data->orders_net_amount = 0; foreach ($commission_ids as $commision_id) { $commission = YITH_Commission($commision_id); $order = $commission->get_order(); $line_items = $order->get_items('line_item'); $refunds = $order->get_refunds(); if (!in_array($order->id, $orders)) { $orders[] = $order->id; $this->report_data->orders_all_count++; } // order placed if (!isset($this->report_data->orders_count[$order->id])) { $this->report_data->orders_count[$order->id] = new stdClass(); $this->report_data->orders_count[$order->id]->order_date = $order->post->post_date; $this->report_data->orders_count[$order->id]->count = 0; } $this->report_data->orders_count[$order->id]->count += 1; foreach ($line_items as $line_item_id => $line_item) { if (in_array($line_item['product_id'], $products)) { // net sales $this->report_data->orders_net[$order->id] = new stdClass(); $this->report_data->orders_net[$order->id]->amount = $this->round_chart_totals(floatval($line_item['line_total'])); $this->report_data->orders_net[$order->id]->order_date = $order->post->post_date; $this->report_data->orders_net_count[$order->id] = new stdClass(); $this->report_data->orders_net_count[$order->id]->count = absint($line_item['qty']); $this->report_data->orders_net_count[$order->id]->order_date = $order->post->post_date; $this->report_data->orders_net_amount += floatval($line_item['line_total']); // gross sales $this->report_data->orders_gross[$order->id] = new stdClass(); $chart_totals = floatval($line_item['line_total']) + floatval($line_item['line_tax']); $this->report_data->orders_gross[$order->id]->amount = $this->round_chart_totals($chart_totals); $this->report_data->orders_gross[$order->id]->order_date = $order->post->post_date; $this->report_data->orders_gross_amount += $chart_totals; // items purchased $this->report_data->orders_all_product[$order->id] = new stdClass(); $this->report_data->orders_all_product[$order->id]->count = $line_item['qty']; $this->report_data->orders_all_product[$order->id]->order_date = $order->post->post_date; $this->report_data->orders_all_product_total += $line_item['qty']; // charged for shipping $this->report_data->orders_all_product[$order->id] = new stdClass(); $this->report_data->orders_all_product[$order->id]->count = $line_item['qty']; $this->report_data->orders_all_product[$order->id]->order_date = $order->post->post_date; // $this->report_data->orders_all_product_total += $line_item['qty']; $this->report_data->orders_refunded[$order->id] = new stdClass(); $this->report_data->orders_refunded[$order->id]->amount = 0; $this->report_data->orders_refunded[$order->id]->order_date = $order->post->post_date; } } } }
/** * Change commission label value * * @param $attribute_label The Label Value * @param $meta_key The Meta Key value * @param bool|\The $product The Product object * * @return string The label value */ public function commissions_attribute_label($attribute_label, $meta_key, $product = false) { global $pagenow; if ($product && 'post.php' == $pagenow && isset($_GET['post']) && ($order = wc_get_order($_GET['post']))) { $line_items = $order->get_items('line_item'); $item_meta_key = wp_get_post_parent_id($order->id) ? '_commission_id' : '_child__commission_id'; foreach ($line_items as $line_item_id => $line_item) { if ($line_item['product_id'] == $product->id) { $commission_id = wc_get_order_item_meta($line_item_id, $item_meta_key, true); $commission = YITH_Commission($commission_id); $admin_url = YITH_Commission($commission_id)->get_view_url('admin'); $url_attribute_label = sprintf("<a href='%s' class='%s'>%s</a> <small>(%s: <strong>%s</strong>)</small>", $admin_url, 'commission-id-label', __('commission_id', 'yith_wc_product_vendors'), __('status', 'yith_wc_product_vendors'), strtolower($commission->get_status('display'))); $attribute_label = $item_meta_key == $meta_key ? $url_attribute_label : $attribute_label; } } } return $attribute_label; }