/**
 * Output the coupons overview stats.
 *
 * @access public
 * @return void
 */
function woocommerce_coupons_overview()
{
    global $start_date, $end_date, $woocommerce, $wpdb;
    $start_date = isset($_POST['start_date']) ? $_POST['start_date'] : '';
    $end_date = isset($_POST['end_date']) ? $_POST['end_date'] : '';
    if (!$start_date) {
        $start_date = date('Ymd', strtotime(date('Ym', current_time('timestamp')) . '01'));
    }
    if (!$end_date) {
        $end_date = date('Ymd', current_time('timestamp'));
    }
    $start_date = strtotime($start_date);
    $end_date = strtotime($end_date);
    $total_order_count = apply_filters('woocommerce_reports_coupons_overview_total_order_count', absint($wpdb->get_var("\n\t\tSELECT COUNT( DISTINCT posts.ID ) as order_count\n\t\tFROM {$wpdb->posts} AS posts\n\t\tLEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID = rel.object_ID\n\t\tLEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )\n\t\tLEFT JOIN {$wpdb->terms} AS term USING( term_id )\n\t\tWHERE \tterm.slug IN ('" . implode("','", apply_filters('woocommerce_reports_order_statuses', array('completed', 'processing', 'on-hold'))) . "')\n\t\tAND \tposts.post_status \t= 'publish'\n\t\tAND \ttax.taxonomy\t\t= 'shop_order_status'\n\t\tAND \tpost_date > '" . date('Y-m-d', $start_date) . "'\n\t\tAND \tpost_date < '" . date('Y-m-d', strtotime('+1 day', $end_date)) . "'\n\t")));
    $coupon_totals = apply_filters('woocommerce_reports_coupons_overview_totals', $wpdb->get_row("\n\t\tSELECT COUNT( DISTINCT posts.ID ) as order_count, SUM( order_item_meta.meta_value ) as total_discount\n\t\tFROM {$wpdb->prefix}woocommerce_order_items as order_items\n\t\tLEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id\n\t\tLEFT JOIN {$wpdb->posts} AS posts ON order_items.order_id = posts.ID\n\t\tLEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID = rel.object_ID\n\t\tLEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )\n\t\tLEFT JOIN {$wpdb->terms} AS term USING( term_id )\n\t\tWHERE \tterm.slug IN ('" . implode("','", apply_filters('woocommerce_reports_order_statuses', array('completed', 'processing', 'on-hold'))) . "')\n\t\tAND \tposts.post_status \t= 'publish'\n\t\tAND \ttax.taxonomy\t\t= 'shop_order_status'\n\t\tAND \torder_items.order_item_type = 'coupon'\n\t\tAND \torder_item_meta.meta_key = 'discount_amount'\n\t\tAND \tpost_date > '" . date('Y-m-d', $start_date) . "'\n\t\tAND \tpost_date < '" . date('Y-m-d', strtotime('+1 day', $end_date)) . "'\n\t"));
    $coupons_by_count = apply_filters('woocommerce_reports_coupons_overview_coupons_by_count', $wpdb->get_results("\n\t\tSELECT COUNT( order_items.order_id ) as count, order_items.*\n\t\tFROM {$wpdb->prefix}woocommerce_order_items as order_items\n\t\tLEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id\n\t\tLEFT JOIN {$wpdb->posts} AS posts ON order_items.order_id = posts.ID\n\t\tLEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID = rel.object_ID\n\t\tLEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )\n\t\tLEFT JOIN {$wpdb->terms} AS term USING( term_id )\n\t\tWHERE \tterm.slug IN ('" . implode("','", apply_filters('woocommerce_reports_order_statuses', array('completed', 'processing', 'on-hold'))) . "')\n\t\tAND \tposts.post_status \t= 'publish'\n\t\tAND \ttax.taxonomy\t\t= 'shop_order_status'\n\t\tAND \torder_items.order_item_type = 'coupon'\n\t\tAND \torder_item_meta.meta_key = 'discount_amount'\n\t\tAND \torder_items.order_item_name != ''\n\t\tAND \tpost_date > '" . date('Y-m-d', $start_date) . "'\n\t\tAND \tpost_date < '" . date('Y-m-d', strtotime('+1 day', $end_date)) . "'\n\t\tGROUP BY order_items.order_item_name\n\t\tORDER BY count DESC\n\t\tLIMIT 15\n\t"));
    $coupons_by_amount = apply_filters('woocommerce_reports_coupons_overview_coupons_by_count', $wpdb->get_results("\n\t\tSELECT SUM( order_item_meta.meta_value ) as amount, order_items.*\n\t\tFROM {$wpdb->prefix}woocommerce_order_items as order_items\n\t\tLEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id\n\t\tLEFT JOIN {$wpdb->posts} AS posts ON order_items.order_id = posts.ID\n\t\tLEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID = rel.object_ID\n\t\tLEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )\n\t\tLEFT JOIN {$wpdb->terms} AS term USING( term_id )\n\t\tWHERE \tterm.slug IN ('" . implode("','", apply_filters('woocommerce_reports_order_statuses', array('completed', 'processing', 'on-hold'))) . "')\n\t\tAND \tposts.post_status \t= 'publish'\n\t\tAND \ttax.taxonomy\t\t= 'shop_order_status'\n\t\tAND \torder_items.order_item_type = 'coupon'\n\t\tAND \torder_item_meta.meta_key = 'discount_amount'\n\t\tAND \torder_items.order_item_name != ''\n\t\tAND \tpost_date > '" . date('Y-m-d', $start_date) . "'\n\t\tAND \tpost_date < '" . date('Y-m-d', strtotime('+1 day', $end_date)) . "'\n\t\tGROUP BY order_items.order_item_name\n\t\tORDER BY amount DESC\n\t\tLIMIT 15\n\t"));
    ?>
	<form method="post" action="">
		<p><label for="from"><?php 
    _e('From:', 'woocommerce');
    ?>
</label> <input type="text" name="start_date" id="from" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $start_date));
    ?>
" /> <label for="to"><?php 
    _e('To:', 'woocommerce');
    ?>
</label> <input type="text" name="end_date" id="to" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $end_date));
    ?>
" /> <input type="submit" class="button" value="<?php 
    _e('Show', 'woocommerce');
    ?>
" /></p>
	</form>

	<div id="poststuff" class="woocommerce-reports-wrap">
		<div class="woocommerce-reports-sidebar">
			<div class="postbox">
				<h3><span><?php 
    _e('Total orders containing coupons', 'woocommerce');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    if ($coupon_totals->order_count > 0) {
        echo absint($coupon_totals->order_count);
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>
			<div class="postbox">
				<h3><span><?php 
    _e('Percent of orders containing coupons', 'woocommerce');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    if ($coupon_totals->order_count > 0) {
        echo round($coupon_totals->order_count / $total_order_count * 100, 2) . '%';
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>
			<div class="postbox">
				<h3><span><?php 
    _e('Total coupon discount', 'woocommerce');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    if ($coupon_totals->total_discount > 0) {
        echo woocommerce_price($coupon_totals->total_discount);
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>
		</div>
		<div class="woocommerce-reports-main">
			<div class="woocommerce-reports-left">
				<div class="postbox">
					<h3><span><?php 
    _e('Most popular coupons', 'woocommerce');
    ?>
</span></h3>
					<div class="inside">
						<ul class="wc_coupon_list wc_coupon_list_block">
							<?php 
    if ($coupons_by_count) {
        foreach ($coupons_by_count as $coupon) {
            $post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_title = %s AND post_type = 'shop_coupon' AND post_status = 'publish' LIMIT 1;", $coupon->order_item_name));
            $link = $post_id ? admin_url('post.php?post=' . $post_id . '&action=edit') : admin_url('edit.php?s=' . esc_url($coupon->order_item_name) . '&post_status=all&post_type=shop_coupon');
            echo '<li><a href="' . $link . '" class="code"><span><span>' . esc_html($coupon->order_item_name) . '</span></span></a> - ' . sprintf(_n('Used 1 time', 'Used %d times', $coupon->count, 'woocommerce'), absint($coupon->count)) . '</li>';
        }
    } else {
        echo '<li>' . __('No coupons found', 'woocommerce') . '</li>';
    }
    ?>
						</ul>
					</div>
				</div>
			</div>
			<div class="woocommerce-reports-right">
				<div class="postbox">
					<h3><span><?php 
    _e('Greatest discount amount', 'woocommerce');
    ?>
</span></h3>
					<div class="inside">
						<ul class="wc_coupon_list wc_coupon_list_block">
							<?php 
    if ($coupons_by_amount) {
        foreach ($coupons_by_amount as $coupon) {
            $post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_title = %s AND post_type = 'shop_coupon' AND post_status = 'publish' LIMIT 1;", $coupon->order_item_name));
            $link = $post_id ? admin_url('post.php?post=' . $post_id . '&action=edit') : admin_url('edit.php?s=' . esc_url($coupon->order_item_name) . '&post_status=all&post_type=shop_coupon');
            echo '<li><a href="' . $link . '" class="code"><span><span>' . esc_html($coupon->order_item_name) . '</span></span></a> - ' . sprintf(__('Discounted %s', 'woocommerce'), woocommerce_price($coupon->amount)) . '</li>';
        }
    } else {
        echo '<li>' . __('No coupons found', 'woocommerce') . '</li>';
    }
    ?>
						</ul>
					</div>
				</div>
			</div>
		</div>
	</div>
	<script type="text/javascript">
		jQuery(function(){
			<?php 
    woocommerce_datepicker_js();
    ?>
		});
	</script>
	<?php 
}
Exemplo n.º 2
0
/**
 *
 * 
 */
function woocommerce_carts_overview()
{
    global $start_date, $end_date, $woocommerce, $wpdb, $wp_locale;
    $current_month = date("j/n/Y", mktime(0, 0, 0, 1, date("m"), date("Y")));
    $start_date = isset($_POST['start_date']) ? $_POST['start_date'] : '';
    $end_date = isset($_POST['end_date']) ? $_POST['end_date'] : '';
    if (!$start_date) {
        $start_date = $current_month;
    }
    if (!$end_date) {
        $end_date = strtotime(date('Ymd', current_time('timestamp')));
    }
    $start_date = strtotime($start_date);
    $end_date = strtotime($end_date);
    //$start_date = strtotime(date('Ymd', strtotime( date('Ym', current_time('timestamp')).'01' )));
    $end_date = strtotime(date('Ymd', current_time('timestamp')));
    // Get orders to display in widget
    $args = array('numberposts' => -1, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'carts', 'post_status' => 'publish', 'suppress_filters' => false, 'tax_query' => array(array('taxonomy' => 'shop_cart_status', 'terms' => apply_filters('woocommerce_reports_cart_statuses', array('open')), 'field' => 'slug', 'operator' => 'IN')));
    add_filter('posts_where', 'carts_abandoned_within_range');
    $open_carts = get_posts($args);
    $args = array('numberposts' => -1, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'carts', 'post_status' => 'publish', 'suppress_filters' => false, 'tax_query' => array(array('taxonomy' => 'shop_cart_status', 'terms' => apply_filters('woocommerce_reports_cart_statuses', array('converted')), 'field' => 'slug', 'operator' => 'IN')));
    $converted_carts = get_posts($args);
    $converted_counts = array();
    $updated_counts = array();
    $total_converted = 0;
    $total_updated = 0;
    // Blank date ranges to begin
    $count = 0;
    $days = ($end_date - $start_date) / (60 * 60 * 24);
    if ($days == 0) {
        $days = 1;
    }
    while ($count < $days + 1) {
        $time = strtotime(date('Ymd', strtotime('+ ' . $count . ' DAY', $start_date))) . '000';
        $converted_counts[$time] = 0;
        $updated_counts[$time] = 0;
        $count++;
    }
    if ($converted_carts) {
        foreach ($converted_carts as $converted_cart) {
            $time = strtotime(date('Ymd', strtotime($converted_cart->post_date))) . '000';
            if (isset($converted_counts[$time])) {
                $converted_counts[$time]++;
                $total_converted++;
            } else {
                $converted_counts[$time] = 1;
            }
        }
    }
    if ($open_carts) {
        foreach ($open_carts as $open_cart) {
            $time = strtotime(date('Ymd', strtotime($open_cart->post_date))) . '000';
            if (isset($updated_counts[$time])) {
                $updated_counts[$time]++;
                $total_updated++;
            } else {
                $updated_counts[$time] = 1;
            }
        }
    }
    remove_filter('posts_where', 'carts_abandoned_within_range');
    /* Script variables */
    $params = array('currency_symbol' => get_woocommerce_currency_symbol(), 'number_of_converted_carts' => __('Converted Carts', 'woocommerce'), 'number_of_updated_carts' => __('Open and Abandoned Carts', 'woocommerce'));
    $converted_counts_array = array();
    foreach ($converted_counts as $key => $count) {
        $converted_counts_array[] = array($key, $count);
    }
    $updated_counts_array = array();
    foreach ($updated_counts as $key => $amount) {
        $updated_counts_array[] = array($key, $amount);
    }
    $cart_data = array('converted_counts' => $converted_counts_array, 'updated_counts' => $updated_counts_array);
    $cart_data_json = json_encode($cart_data);
    ?>
	

<form method="post" action="">
		<p><label for="from"><?php 
    _e('From:', 'woocommerce');
    ?>
</label> <input type="text" name="start_date" id="from" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $start_date));
    ?>
" /> <label for="to"><?php 
    _e('To:', 'woocommerce');
    ?>
</label> <input type="text" name="end_date" id="to" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $end_date));
    ?>
" /> <input type="submit" class="button" value="<?php 
    _e('Show', 'woocommerce');
    ?>
" /></p>
	</form>
<div id="poststuff" class="woocommerce-reports-wrap">
		<div class="woocommerce-reports-sidebar">
			<div class="postbox">
<?php 
    $link = add_query_arg(array('post_type' => 'carts', 'mv' => 'OandA', 'start_date' => date('Y-m-d', time() - 60 * 60 * 24 * $days), 'end_date' => date('Y-m-d', time())), get_admin_url(null, 'edit.php'));
    $num_updated = '<a style = "color:#333;" href="' . $link . '">' . $total_updated . '</a>';
    ?>
				<h3><span><?php 
    _e('Open & Abandoned Carts In Range', 'woocommerce');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    if ($total_updated != '') {
        echo $num_updated . ' Carts';
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>
			<div class="postbox">
<?php 
    $link = add_query_arg(array('post_type' => 'carts', 'mv' => 'Converted', 'start_date' => date('Y-m-d', time() - 60 * 60 * 24 * $days), 'end_date' => date('Y-m-d', time())), get_admin_url(null, 'edit.php'));
    $num_converted = '<a style = "color:#333;"href="' . $link . '">' . $total_converted . '</a>';
    ?>
				<h3><span><?php 
    _e('Converted Carts In Range', 'woocommerce');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    sizeof($total_converted);
    if ($total_converted != '') {
        echo $num_converted . ' Carts';
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>

		</div>
		<div class="woocommerce-reports-main">
			<div class="postbox">
				<h3><span><?php 
    _e('Open & Abandoned Carts vs. Converted Carts', 'woocommerce');
    ?>
</span></h3>
				<div class="inside chart">
					<div id="placeholder" style="width:100%; overflow:hidden; height:568px; position:relative;"></div>
				</div>
			</div>
		</div>
	</div>
	<?php 
    ?>
	
		<script type="text/javascript">
		jQuery(function(){
			var cart_data = jQuery.parseJSON( '<?php 
    echo $cart_data_json;
    ?>
' );
		
			var d = cart_data.converted_counts;
		    var d2 = cart_data.updated_counts;
			
			for (var i = 0; i < d.length; ++i) d[i][0] += 60 * 60 * 1000;
		    for (var i = 0; i < d2.length; ++i) d2[i][0] += 60 * 60 * 1000;
			
			var placeholder = jQuery("#placeholder");
			 
			var plot = jQuery.plot(placeholder, [ { label: "<?php 
    echo esc_js(__('Converted Carts', 'woocommerce'));
    ?>
", data: d }, { label: "<?php 
    echo esc_js(__('Open & Abandoned Carts', 'woocommerce'));
    ?>
", data: d2, yaxis: 1 } ], {
				 series: {
            	stack:true,
                lines: {
                	fill: true,
                    show: !0
                },
                points: {
                    show: 0
                }
            },
				grid: {
					show: true,
					aboveData: false,
					color: '#ccc',
					backgroundColor: '#fff',
					borderWidth: 2,
					borderColor: '#ccc',
					clickable: false,
					hoverable: true,
					markings: weekendAreas
				},
				xaxis: { 
					mode: "time",
					timeformat: "%d %b", 
					monthNames: <?php 
    echo json_encode(array_values($wp_locale->month_abbrev));
    ?>
,
					tickLength: 1,
					minTickSize: [1, "day"]
				},
				yaxes: [{
				position: "right",
                min: 0,
                tickSize: 10,
                tickDecimals: 0
            }, {
                position: "right",
                min: 0,
                tickDecimals: 2
            }],
            
            colors: [ "green","red"]
		 	});
		 	
		 	placeholder.resize();
	 	
			<?php 
    woocommerce_weekend_area_js();
    ?>
			<?php 
    woocommerce_tooltip_js_carts();
    ?>
			<?php 
    woocommerce_datepicker_js();
    ?>
		});
	</script>
<?php 
    wp_enqueue_script('carts-flot-carts-resize', get_bloginfo('url') . '/wp-content/plugins/woocommerce-cart-reports/assets/js/jquery.flot.resize.js');
    wp_enqueue_script('flot-stack', get_bloginfo('url') . '/wp-content/plugins/woocommerce-cart-reports/assets/js/jquery.flot.stack.min.js');
}
/**
 * Output the top earners chart.
 *
 * @access public
 * @return void
 */
function woocommerce_top_earners()
{
    global $start_date, $end_date, $woocommerce;
    $start_date = isset($_POST['start_date']) ? $_POST['start_date'] : '';
    $end_date = isset($_POST['end_date']) ? $_POST['end_date'] : '';
    if (!$start_date) {
        $start_date = date('Ymd', strtotime(date('Ym', current_time('timestamp')) . '01'));
    }
    if (!$end_date) {
        $end_date = date('Ymd', current_time('timestamp'));
    }
    $start_date = strtotime($start_date);
    $end_date = strtotime($end_date);
    // Get orders to display in widget
    add_filter('posts_where', 'orders_within_range');
    $args = array('numberposts' => -1, 'orderby' => 'post_date', 'order' => 'ASC', 'post_type' => 'shop_order', 'post_status' => 'publish', 'suppress_filters' => 0, 'tax_query' => array(array('taxonomy' => 'shop_order_status', 'terms' => array('completed', 'processing', 'on-hold'), 'field' => 'slug', 'operator' => 'IN')));
    $orders = get_posts($args);
    $found_products = array();
    if ($orders) {
        foreach ($orders as $order) {
            $order_items = (array) get_post_meta($order->ID, '_order_items', true);
            foreach ($order_items as $item) {
                if (isset($item['line_total'])) {
                    $row_cost = $item['line_total'];
                } else {
                    $row_cost = $item['cost'] * $item['qty'];
                }
                $found_products[$item['id']] = isset($found_products[$item['id']]) ? $found_products[$item['id']] + $row_cost : $row_cost;
            }
        }
    }
    asort($found_products);
    $found_products = array_reverse($found_products, true);
    $found_products = array_slice($found_products, 0, 25, true);
    reset($found_products);
    remove_filter('posts_where', 'orders_within_range');
    ?>
	<form method="post" action="">
		<p><label for="from"><?php 
    _e('From:', 'woocommerce');
    ?>
</label> <input type="text" name="start_date" id="from" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $start_date));
    ?>
" /> <label for="to"><?php 
    _e('To:', 'woocommerce');
    ?>
</label> <input type="text" name="end_date" id="to" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $end_date));
    ?>
" /> <input type="submit" class="button" value="<?php 
    _e('Show', 'woocommerce');
    ?>
" /></p>
	</form>
	<table class="bar_chart">
		<thead>
			<tr>
				<th><?php 
    _e('Product', 'woocommerce');
    ?>
</th>
				<th colspan="2"><?php 
    _e('Sales', 'woocommerce');
    ?>
</th>
			</tr>
		</thead>
		<tbody>
			<?php 
    $max_sales = current($found_products);
    foreach ($found_products as $product_id => $sales) {
        $width = $sales > 0 ? round($sales) / round($max_sales) * 100 : 0;
        $product = get_post($product_id);
        if ($product) {
            $product_name = '<a href="' . get_permalink($product->ID) . '">' . $product->post_title . '</a>';
            $orders_link = admin_url('edit.php?s&post_status=all&post_type=shop_order&action=-1&s=' . urlencode($product->post_title) . '&shop_order_status=completed,processing,on-hold');
        } else {
            $product_name = __('Product no longer exists', 'woocommerce');
            $orders_link = admin_url('edit.php?s&post_status=all&post_type=shop_order&action=-1&s=&shop_order_status=completed,processing,on-hold');
        }
        echo '<tr><th>' . $product_name . '</th><td width="1%"><span>' . woocommerce_price($sales) . '</span></td><td class="bars"><a href="' . $orders_link . '" style="width:' . $width . '%">&nbsp;</a></td></tr>';
    }
    ?>
		</tbody>
	</table>
	<script type="text/javascript">
		jQuery(function(){
			<?php 
    woocommerce_datepicker_js();
    ?>
		});
	</script>
	<?php 
}
Exemplo n.º 4
0
    /**
     *
     */
    function sales()
    {
        global $start_date, $end_date, $woocommerce, $wpdb;
        $start_date = !empty($_POST['start_date']) ? $_POST['start_date'] : strtotime(date('Ymd', strtotime(date('Ym', current_time('timestamp')) . '01')));
        $end_date = !empty($_POST['end_date']) ? $_POST['end_date'] : strtotime(date('Ymd', current_time('timestamp')));
        if (!empty($_POST['start_date'])) {
            $start_date = strtotime($_POST['start_date']);
        }
        if (!empty($_POST['end_date'])) {
            $end_date = strtotime($_POST['end_date']);
        }
        $after = date('Y-m-d', $start_date);
        $before = date('Y-m-d', strtotime('+1 day', $end_date));
        $commission_due = $wpdb->get_var("\n\t\t\tSELECT SUM(total_due + total_shipping + tax) FROM {$wpdb->prefix}pv_commission WHERE status = 'due'\n\t\t\tAND     time >= '" . $after . "'\n\t\t\tAND     time <= '" . $before . "'\n\t\t");
        $reversed = $wpdb->get_var("\n\t\t\tSELECT SUM(total_due + total_shipping + tax) FROM {$wpdb->prefix}pv_commission WHERE status = 'reversed'\n\t\t\tAND     time >= '" . $after . "'\n\t\t\tAND     time <= '" . $before . "'\n\t\t");
        $paid = $wpdb->get_var("\n\t\t\tSELECT SUM(total_due + total_shipping + tax) FROM {$wpdb->prefix}pv_commission WHERE status = 'paid'\n\t\t\tAND     time >= '" . $after . "'\n\t\t\tAND     time <= '" . $before . "'\n\t\t");
        ?>

		<form method="post" action="">
			<p><label for="from"><?php 
        _e('From:', 'wc_product_vendor');
        ?>
</label> <input type="text"
																							 name="start_date" id="from"
																							 readonly="readonly"
																							 value="<?php 
        echo esc_attr(date('Y-m-d', $start_date));
        ?>
"/>
				<label for="to"><?php 
        _e('To:', 'wc_product_vendor');
        ?>
</label> <input type="text" name="end_date"
																						  id="to" readonly="readonly"
																						  value="<?php 
        echo esc_attr(date('Y-m-d', $end_date));
        ?>
"/>
				<input type="submit" class="button" value="<?php 
        _e('Show', 'wc_product_vendor');
        ?>
"/></p>
		</form>
		<script type="text/javascript">
			jQuery(function () {
				<?php 
        woocommerce_datepicker_js();
        ?>
			});
		</script>

		<div id="poststuff" class="woocommerce-reports-wrap">
			<div class="woocommerce-reports-sidebar">
				<div class="postbox">
					<h3><span><?php 
        _e('Total paid in range', 'wc_product_vendor');
        ?>
</span></h3>

					<div class="inside">
						<p class="stat"><?php 
        if ($paid > 0) {
            echo woocommerce_price($paid);
        } else {
            _e('n/a', 'wc_product_vendor');
        }
        ?>
</p>
					</div>
				</div>
				<div class="postbox">
					<h3><span><?php 
        _e('Total due in range', 'wc_product_vendor');
        ?>
</span></h3>

					<div class="inside">
						<p class="stat"><?php 
        if ($commission_due > 0) {
            echo woocommerce_price($commission_due);
        } else {
            _e('n/a', 'wc_product_vendor');
        }
        ?>
</p>
					</div>
				</div>
				<div class="postbox">
					<h3><span><?php 
        _e('Total reversed in range', 'wc_product_vendor');
        ?>
</span></h3>

					<div class="inside">
						<p class="stat"><?php 
        if ($reversed > 0) {
            echo woocommerce_price($reversed);
        } else {
            _e('n/a', 'wc_product_vendor');
        }
        ?>
</p>
					</div>
				</div>
			</div>

			<div class="woocommerce-reports-main">
				<div class="postbox">
					<h3><span><?php 
        _e('Recent Commission', 'wc_product_vendor');
        ?>
</span></h3>

					<div>
						<?php 
        $commission = $wpdb->get_results("\n\t\t\t\t\t\t\t\tSELECT * FROM {$wpdb->prefix}pv_commission\n\t\t\t\t\t\t\t\tORDER BY time DESC\n\t\t\t\t\t\t\t\tLIMIT 20\n\t\t\t\t\t\t\t");
        if (sizeof($commission) > 0) {
            ?>
							<div class="woocommerce_order_items_wrapper">
								<table id="commission-table" class="woocommerce_order_items" cellspacing="0">
									<thead>
									<tr>
										<th><?php 
            _e('Order', 'wc_product_vendor');
            ?>
</th>
										<th><?php 
            _e('Product', 'wc_product_vendor');
            ?>
</th>
										<th><?php 
            _e('Vendor', 'wc_product_vendor');
            ?>
</th>
										<th><?php 
            _e('Total', 'wc_product_vendor');
            ?>
</th>
										<th><?php 
            _e('Date &amp; Time', 'wc_product_vendor');
            ?>
</th>
										<th><?php 
            _e('Status', 'wc_product_vendor');
            ?>
</th>
									</tr>
									</thead>
									<tbody>
									<?php 
            $i = 1;
            foreach ($commission as $row) {
                $i++;
                ?>
										<tr<?php 
                if ($i % 2 == 1) {
                    echo ' class="alternate"';
                }
                ?>
>
											<td><?php 
                if ($row->order_id) {
                    ?>
<a
													href="<?php 
                    echo admin_url('post.php?post=' . $row->order_id . '&action=edit');
                    ?>
"><?php 
                    echo $row->order_id;
                    ?>
</a><?php 
                } else {
                    _e('N/A', 'wc_product_vendor');
                }
                ?>
											</td>
											<td><?php 
                echo get_the_title($row->product_id);
                ?>
</td>
											<td><?php 
                echo PV_Vendors::get_vendor_shop_name($row->vendor_id);
                ?>
</td>
											<td><?php 
                echo woocommerce_price($row->total_due + $row->total_shipping + $row->tax);
                ?>
</td>
											<td><?php 
                echo date(__('D j M Y \\a\\t h:ia', 'wc_product_vendor'), strtotime($row->time));
                ?>
</td>
											<td><?php 
                echo $row->status;
                ?>
</td>
										</tr>
									<?php 
            }
            ?>
									</tbody>
								</table>
							</div>
						<?php 
        } else {
            ?>
<p><?php 
            _e('No commission yet', 'wc_product_vendor');
            ?>
</p><?php 
        }
        ?>
					</div>
				</div>
			</div>
		</div>
	<?php 
    }
    function activations()
    {
        global $wpdb;
        $start_date = isset($_POST['start_date']) ? $_POST['start_date'] : '';
        $end_date = isset($_POST['end_date']) ? $_POST['end_date'] : '';
        if (!$start_date) {
            $start_date = date('Ymd', strtotime(date('Ym', current_time('timestamp')) . '01'));
        }
        if (!$end_date) {
            $end_date = date('Ymd', current_time('timestamp'));
        }
        $start_date = strtotime($start_date);
        $end_date = strtotime($end_date);
        ?>
		<form method="post" action="">
			<p><label for="from"><?php 
        _e('From:', 'woocommerce');
        ?>
</label> <input type="text" name="start_date" id="from" readonly="readonly" value="<?php 
        echo esc_attr(date('Y-m-d', $start_date));
        ?>
" /> <label for="to"><?php 
        _e('To:', 'woocommerce');
        ?>
</label> <input type="text" name="end_date" id="to" readonly="readonly" value="<?php 
        echo esc_attr(date('Y-m-d', $end_date));
        ?>
" /> <input type="submit" class="button" value="<?php 
        _e('Show', 'woocommerce');
        ?>
" /></p>
		</form>
		<script type="text/javascript">
			jQuery(function(){
				<?php 
        woocommerce_datepicker_js();
        ?>
			});
		</script>
		<?php 
        $activations = $wpdb->get_results("\n\t\t\tSELECT * FROM {$wpdb->prefix}woocommerce_software_activations as activations\n\t\t\tLEFT JOIN {$wpdb->prefix}woocommerce_software_licences as licences ON activations.key_id = licences.key_id\n\t\t\tWHERE date_format( activation_time ,'%Y%m%d') >= '" . date("Ymd", $start_date) . "'\n\t\t\tAND date_format( activation_time ,'%Y%m%d') <= '" . date("Ymd", $end_date) . "'\n\t\t\tORDER BY activation_time ASC\n\t\t\tLIMIT 50\n\t\t");
        if (sizeof($activations) > 0) {
            ?>
			<table id="activations-table" class="widefat" cellspacing="0">
				<thead>
			    	<tr>
			    		<th><?php 
            _e('Order', 'wc_software');
            ?>
</th>
			    		<th><?php 
            _e('Instance', 'wc_software');
            ?>
</th>
			    		<th><?php 
            _e('Software ID', 'wc_software');
            ?>
</th>
						<th><?php 
            _e('Licence Key', 'wc_software');
            ?>
</th>
						<th><?php 
            _e('Status', 'wc_software');
            ?>
</th>
						<th><?php 
            _e('Date &amp; Time', 'wc_software');
            ?>
</th>
						<th><?php 
            _e('Software Version', 'wc_software');
            ?>
</th>
						<th><?php 
            _e('Platform/OS', 'wc_software');
            ?>
</th>
					</tr>
				</thead>
				<tbody>
			    	<?php 
            $i = 1;
            foreach ($activations as $activation) {
                $i++;
                ?>
						<tr<?php 
                if ($i % 2 == 1) {
                    echo ' class="alternate"';
                }
                ?>
>
							<td><?php 
                if ($activation->order_id) {
                    ?>
<a href="<?php 
                    echo admin_url('post.php?post=' . $activation->order_id . '&action=edit');
                    ?>
"><?php 
                    echo $activation->order_id;
                    ?>
</a><?php 
                } else {
                    _e('N/A', 'wc_software');
                }
                ?>
</td>
							<td><?php 
                if ($activation->instance) {
                    echo $activation->instance;
                } else {
                    _e('N/A', 'wc_software');
                }
                ?>
</td>
							<td><?php 
                echo $activation->software_product_id;
                ?>
</td>
							<td><?php 
                echo $activation->licence_key;
                ?>
</td>
							<td><?php 
                echo $activation->activation_active ? __('Activated', 'wc_software') : __('Deactivated', 'wc_software');
                ?>
</td>
							<td><?php 
                echo date(__('D j M Y \\a\\t h:ia', 'wc_software'), strtotime($activation->activation_time));
                ?>
</td>
							<td><?php 
                echo $activation->software_version;
                ?>
</td>
							<td><?php 
                echo ucwords($activation->activation_platform);
                ?>
</td>
			      		</tr>
			    	<?php 
            }
            ?>
				</tbody>
			</table>
			<?php 
        } else {
            ?>
<p><?php 
            _e('No activations found.', 'wc_software');
            ?>
</p><?php 
        }
    }
function wcaf_report_daily()
{
    global $start_date, $end_date, $woocommerce, $wpdb;
    $start_date = isset($_POST['start_date']) ? $_POST['start_date'] : '';
    $end_date = isset($_POST['end_date']) ? $_POST['end_date'] : '';
    if (!$start_date) {
        $start_date = date('Ymd', strtotime(date('Ym', current_time('timestamp')) . '01'));
    }
    if (!$end_date) {
        $end_date = date('Ymd', current_time('timestamp'));
    }
    $start_date = strtotime($start_date);
    $end_date = strtotime($end_date);
    $amounts_deposited = 0;
    $num_deposits = 0;
    // Get orders to display in widget
    //add_filter( 'posts_where', 'orders_within_range' );
    if (version_compare(WC_VERSION, '2.2.0', '<')) {
        $args = array('numberposts' => -1, 'orderby' => 'post_date', 'order' => 'ASC', 'post_type' => 'shop_order', 'suppress_filters' => 0, 'meta_query' => array(array('key' => '_funds_deposited', 'value' => '1')), 'tax_query' => array(array('taxonomy' => 'shop_order_status', 'terms' => array('completed', 'processing', 'on-hold'), 'field' => 'slug', 'operator' => 'IN')));
    } else {
        $args = array('numberposts' => -1, 'orderby' => 'post_date', 'order' => 'ASC', 'post_type' => 'shop_order', 'post_status' => array('wc-completed', 'wc-processing', 'wc-on-hold'), 'suppress_filters' => 0, 'meta_query' => array(array('key' => '_funds_deposited', 'value' => '1')));
    }
    $orders = get_posts($args);
    $deposit_counts = array();
    $deposit_amounts = array();
    // Blank date ranges to begin
    $count = 0;
    $days = ($end_date - $start_date) / (60 * 60 * 24);
    if ($days == 0) {
        $days = 1;
    }
    while ($count < $days) {
        $time = strtotime(date('Ymd', strtotime('+ ' . $count . ' DAY', $start_date))) . '000';
        $deposit_counts[$time] = 0;
        $deposit_amounts[$time] = 0;
        $count++;
    }
    if ($orders) {
        foreach ($orders as $order) {
            $order_obj = new WC_Order($order->ID);
            $order_items_array = $order_obj->get_items();
            $time = strtotime(date('Ymd', strtotime($order->post_date))) . '000';
            foreach ($order_items_array as $item) {
                $item_id = isset($item['product_id']) ? $item['product_id'] : $item['id'];
                $product = X3M_AccountFunds::get_product($item_id);
                $is_deposit = get_post_meta($item_id, '_is_deposit', true);
                if ($is_deposit == 'yes') {
                    $num_deposits++;
                    $amounts_deposited += $product->get_price() * $item['qty'];
                    if (isset($deposit_counts[$time])) {
                        $deposit_counts[$time]++;
                    } else {
                        $deposit_counts[$time] = 1;
                    }
                    if (isset($deposit_amounts[$time])) {
                        $deposit_amounts[$time] = $deposit_amounts[$time] + $product->get_price() * $item['qty'];
                    } else {
                        $deposit_amounts[$time] = $product->get_price() * $item['qty'];
                    }
                }
                continue 2;
            }
        }
    }
    ?>
	<form method="post" action="">
		<p><label for="from"><?php 
    _e('From:', 'woocommerce');
    ?>
</label> <input type="text" name="start_date" id="from" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $start_date));
    ?>
" /> <label for="to"><?php 
    _e('To:', 'woocommerce');
    ?>
</label> <input type="text" name="end_date" id="to" readonly="readonly" value="<?php 
    echo esc_attr(date('Y-m-d', $end_date));
    ?>
" /> <input type="submit" class="button" value="<?php 
    _e('Show', 'woocommerce');
    ?>
" /></p>
	</form>

	<div id="poststuff" class="woocommerce-reports-wrap">
		<div class="woocommerce-reports-sidebar">
			<div class="postbox">
				<h3><span><?php 
    _e('Total deposits in range', 'wc_account_funds');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    if ($amounts_deposited > 0) {
        echo woocommerce_price($amounts_deposited);
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>
			<div class="postbox">
				<h3><span><?php 
    _e('Total deposits in range', 'wc_account_funds');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    if ($num_deposits > 0) {
        echo $num_deposits;
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>
			<div class="postbox">
				<h3><span><?php 
    _e('Average deposit in range', 'wc_account_funds');
    ?>
</span></h3>
				<div class="inside">
					<p class="stat"><?php 
    if ($amounts_deposited > 0) {
        echo woocommerce_price($amounts_deposited / $num_deposits);
    } else {
        _e('n/a', 'woocommerce');
    }
    ?>
</p>
				</div>
			</div>
		</div>
		<div class="woocommerce-reports-main">
			<div class="postbox">
				<h3><span><?php 
    _e('Deposits in range', 'wc_account_funds');
    ?>
</span></h3>
				<div class="inside chart">
					<div id="placeholder" style="width:100%; overflow:hidden; height:568px; position:relative;"></div>
				</div>
			</div>
		</div>
	</div>
	<?php 
    $deposit_counts_array = array();
    foreach ($deposit_counts as $key => $count) {
        $deposit_counts_array[] = array($key, $count);
    }
    $deposit_amounts_array = array();
    foreach ($deposit_amounts as $key => $amount) {
        $deposit_amounts_array[] = array($key, $amount);
    }
    $deposit_data = array('deposit_counts' => $deposit_counts_array, 'deposit_amounts' => $deposit_amounts_array);
    $chart_data = json_encode($deposit_data);
    ?>
	<script type="text/javascript">
		jQuery(function(){
			var deposit_data = jQuery.parseJSON( '<?php 
    echo $chart_data;
    ?>
' );
            console.log(deposit_data);
			var d = deposit_data.deposit_counts;
		    var d2 = deposit_data.deposit_amounts;

			for (var i = 0; i < d.length; ++i) d[i][0] += 60 * 60 * 1000;
		    for (var i = 0; i < d2.length; ++i) d2[i][0] += 60 * 60 * 1000;

			var placeholder = jQuery("#placeholder");

			var plot = jQuery.plot(placeholder, [ { label: "Number of deposits", data: d }, { label: "Deposit amount", data: d2, yaxis: 2 } ], {
				series: {
					lines: { show: true },
					points: { show: true }
				},
				grid: {
					show: true,
					aboveData: false,
					color: '#ccc',
					backgroundColor: '#fff',
					borderWidth: 2,
					borderColor: '#ccc',
					clickable: false,
					hoverable: true,
					markings: weekendAreas
				},
				xaxis: {
					mode: "time",
					timeformat: "%d %b",
					tickLength: 1,
					minTickSize: [1, "day"]
				},
				yaxes: [ { min: 0, tickSize: 10, tickDecimals: 0 }, { position: "right", min: 0, tickDecimals: 2 } ],
		   		colors: ["#8a4b75", "#47a03e"]
		 	});

		 	placeholder.resize();

			<?php 
    woocommerce_weekend_area_js();
    ?>
			<?php 
    woocommerce_tooltip_js();
    ?>
			<?php 
    woocommerce_datepicker_js();
    ?>
		});
	</script>
	<?php 
}