function get_last_few_order_details($product_id, $where_date) { global $wpdb, $cat_rev, $months, $order_arr; $select = "SELECT order_item.order_id AS order_id,\n\t\t\t\t\t\t\t posts.post_date AS date,\n\t\t\t\t\t\t\t GROUP_CONCAT( distinct postmeta.meta_value\n\t\t\t\t\t\t\t\t\tORDER BY postmeta.meta_id \n\t\t\t\t\t\t\t\t\tSEPARATOR ' ' ) AS cname,\n\t\t\t\t\t\t\t ( SELECT post_meta.meta_value FROM {$wpdb->prefix}postmeta AS post_meta WHERE post_meta.post_id = order_item.order_id AND post_meta.meta_key = '_billing_country' ) AS country,\n\t\t\t\t\t\t\t ( SELECT post_meta.meta_value FROM {$wpdb->prefix}postmeta AS post_meta WHERE post_meta.post_id = order_item.order_id AND post_meta.meta_key = '_order_total' ) AS totalprice\n\t\t\t\t\t "; $from = " FROM {$wpdb->prefix}sr_woo_order_items AS order_item\n\t\t\t\t \t LEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = order_item.order_id AND posts.post_status IN ('wc-on-hold', 'wc-processing', 'wc-completed') )\n\t\t\t\t \t LEFT JOIN {$wpdb->prefix}postmeta AS postmeta ON ( order_item.order_id = postmeta.post_id AND postmeta.meta_key IN ( '_billing_first_name', '_billing_last_name' ) )\n\t\t\t\t\t"; $where = ' WHERE 1 '; $order_by = "ORDER BY date DESC"; $limit = "limit 0,5"; if (isset($product_id)) { $group_by = "GROUP BY order_id"; } if (isset($product_id) && $product_id != 0) { $where .= " AND order_item.product_id = {$product_id} "; } $query = "{$select} {$from} {$where} {$where_date} {$group_by} {$order_by} {$limit}"; $results = $wpdb->get_results($query, 'ARRAY_A'); $num_rows = $wpdb->num_rows; $no_records = $num_rows; if ($no_records == 0) { $encoded['orderDetails']['order'] = ''; $encoded['orderDetails']['orderTotalCount'] = 0; } else { $cnt = 0; $order_data = array(); foreach ($results as $result) { // put within condition $order_data[$cnt]['purchaseid'] = $result['order_id']; $order_data[$cnt]['date'] = date("d-M-Y", strtotime($result['date'])); if (!empty($_POST['detailed_view'])) { // for detailed view widget $order_data[$cnt]['totalprice'] = sprintf($_POST['SR_CURRENCY_POS'], $_POST['SR_CURRENCY_SYMBOL'], sr_number_format($result['totalprice'], $_POST['SR_DECIMAL_PLACES'])); $order_data[$cnt]['country_code'] = $result['country']; if (!empty($_POST['SR_IS_WOO22']) && $_POST['SR_IS_WOO22'] == "true") { $countries = WC()->countries->get_countries(); } elseif (!empty($_POST['SR_IS_WOO22']) && $_POST['SR_IS_WOO22'] == "false") { global $woocommerce; $countries = $woocommerce->countries->get_countries(); } $order_data[$cnt]['country_name'] = html_entity_decode($countries[$result['country']]); } else { $order_data[$cnt]['totalprice'] = woocommerce_price($result['totalprice']); } $order_data[$cnt]['cname'] = $result['cname']; $orders[] = $order_data[$cnt]; $cnt++; } $encoded['orderDetails']['order'] = $orders; $encoded['orderDetails']['orderTotalCount'] = count($orders); } return $encoded; }
function sr_query_sales($start_date, $end_date_query, $date_series, $select, $group_by, $select_top_prod, $select_top_abandoned_prod, $terms_post, $post) { global $wpdb; $monthly_sales = array(); $cumm_top_prod_graph_data = array(); $results_top_prod = array(); $top_prod_ids = array(); $top_prod_graph_data = array(); $top_gateway_graph_data = array(); $sr_currency_symbol = isset($post['SR_CURRENCY_SYMBOL']) ? $post['SR_CURRENCY_SYMBOL'] : ''; $sr_decimal_places = isset($post['SR_DECIMAL_PLACES']) ? $post['SR_DECIMAL_PLACES'] : ''; //Query for getting the cumm sales $query_monthly_sales = "SELECT SUM( postmeta.meta_value ) AS todays_sales,\n\t \t\t\t\t\t\tCOUNT(posts.ID) AS total_orders,\n\t \t\t\t\t\t\t{$select}\n\t\t FROM `{$wpdb->prefix}postmeta` AS postmeta\n\t\t LEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = postmeta.post_id )\n\t\t WHERE postmeta.meta_key IN ('_order_total')\n\t\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t AND posts.ID IN ({$terms_post})\n\t GROUP BY {$group_by}"; $results_monthly_sales = $wpdb->get_results($query_monthly_sales, 'ARRAY_A'); $rows_monthly_sales = $wpdb->num_rows; //Query for Top 5 Customers //Reg Customers $query_reg_cumm = "SELECT ID FROM `{$wpdb->users}` \n\t WHERE user_registered BETWEEN '{$start_date}' AND '{$end_date_query}'"; $reg_cumm_ids = $wpdb->get_col($query_reg_cumm); $rows_reg_cumm_ids = $wpdb->num_rows; $query_cumm_top_cust_guest = "SELECT postmeta1.meta_value AS billing_email,\n\t GROUP_CONCAT(DISTINCT postmeta2.post_id\n\t ORDER BY postmeta2.meta_id DESC SEPARATOR ',' ) AS post_id,\n\t MAX(postmeta2.post_id) AS post_id_max,\n\t SUM(postmeta2.meta_value) as total\n\t \n\t FROM {$wpdb->prefix}postmeta AS postmeta1\n\t JOIN {$wpdb->prefix}posts AS posts ON (posts.ID = postmeta1.post_id)\n\t INNER JOIN {$wpdb->prefix}postmeta AS postmeta2\n\t ON (postmeta2.post_ID = postmeta1.post_ID AND postmeta2.meta_key IN ('_order_total'))\n\t WHERE postmeta1.meta_key IN ('_billing_email')\n\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t AND posts.id IN (SELECT post_id FROM {$wpdb->prefix}postmeta\n\t WHERE meta_key IN ('_customer_user')\n\t AND meta_value = 0\n\t AND post_id IN ({$terms_post}))\n\t GROUP BY postmeta1.meta_value\n\t ORDER BY total DESC\n\t LIMIT 5"; $results_cumm_top_cust_guest = $wpdb->get_results($query_cumm_top_cust_guest, 'ARRAY_A'); $rows_cumm_top_cust_guest = $wpdb->num_rows; if ($rows_cumm_top_cust_guest > 0) { $post_id = array(); $results_cumm_top_cust = array(); foreach ($results_cumm_top_cust_guest as $results_cumm_top_cust_guest1) { $post_id[] = $results_cumm_top_cust_guest1['post_id_max']; } $post_id_imploded = implode(",", $post_id); $query_cumm_top_cust_guest_detail = "SELECT postmeta.post_id as post_id,\n\t GROUP_CONCAT(postmeta.meta_key\n\t ORDER BY postmeta.meta_id DESC SEPARATOR '###' ) AS meta_key,\n\t GROUP_CONCAT(postmeta.meta_value\n\t ORDER BY postmeta.meta_id DESC SEPARATOR '###' ) AS meta_value\n\t FROM {$wpdb->prefix}postmeta AS postmeta\n\t WHERE postmeta.post_id IN ({$post_id_imploded})\n\t AND postmeta.meta_key IN ('_billing_first_name' , '_billing_last_name')\n\t GROUP BY postmeta.post_id\n\t ORDER BY FIND_IN_SET(postmeta.post_id,'{$post_id_imploded}')"; $results_cumm_top_cust_guest_detail = $wpdb->get_results($query_cumm_top_cust_guest_detail, 'ARRAY_A'); for ($i = 0; $i < sizeof($results_cumm_top_cust_guest_detail); $i++) { $results_cumm_top_cust[$i] = array(); $guest_meta_values = explode('###', $results_cumm_top_cust_guest_detail[$i]['meta_value']); $guest_meta_key = explode('###', $results_cumm_top_cust_guest_detail[$i]['meta_key']); if (count($guest_meta_values) != count($guest_meta_key)) { continue; } unset($results_cumm_top_cust_guest_detail[$i]['meta_value']); unset($results_cumm_top_cust_guest_detail[$i]['meta_key']); $guest_meta_key_values = array_combine($guest_meta_key, $guest_meta_values); $results_cumm_top_cust[$i]['total'] = $sr_currency_symbol . sr_number_format($results_cumm_top_cust_guest[$i]['total'], $sr_decimal_places); $results_cumm_top_cust[$i]['calc_total'] = floatval($results_cumm_top_cust_guest[$i]['total']); // value used only for sorting purpose $results_cumm_top_cust[$i]['name'] = $guest_meta_key_values['_billing_first_name'] . " " . $guest_meta_key_values['_billing_last_name']; $results_cumm_top_cust[$i]['billing_email'] = $results_cumm_top_cust_guest[$i]['billing_email']; $results_cumm_top_cust[$i]['post_ids'] = json_encode($results_cumm_top_cust_guest[$i]['post_id']); } } $query_cumm_top_cust_reg = "SELECT postmeta1.meta_value AS user_id,\n\t GROUP_CONCAT(DISTINCT postmeta1.post_id\n\t ORDER BY postmeta1.meta_id DESC SEPARATOR ',' ) AS post_id,\n\t SUM(postmeta2.meta_value) as total\n\t \n\t FROM {$wpdb->prefix}postmeta AS postmeta1\n\t JOIN {$wpdb->prefix}posts AS posts ON (posts.ID = postmeta1.post_id)\n\t INNER JOIN {$wpdb->prefix}postmeta AS postmeta2\n\t ON (postmeta2.post_ID = postmeta1.post_ID AND postmeta2.meta_key IN ('_order_total'))\n\t WHERE postmeta1.meta_key IN ('_customer_user')\n\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t AND posts.id IN (SELECT post_id FROM {$wpdb->prefix}postmeta\n\t WHERE meta_key IN ('_customer_user')\n\t AND meta_value > 0\n\t AND post_id IN ({$terms_post}))\n\t GROUP BY postmeta1.meta_value\n\t ORDER BY total DESC\n\t LIMIT 5"; $results_cumm_top_cust_reg = $wpdb->get_results($query_cumm_top_cust_reg, 'ARRAY_A'); $rows_cumm_top_cust_reg = $wpdb->num_rows; if ($rows_cumm_top_cust_reg > 0) { foreach ($results_cumm_top_cust_reg as $results_cumm_top_cust_reg1) { $user_id[] = $results_cumm_top_cust_reg1['user_id']; } if (!empty($user_id)) { $user_ids_imploded = implode(",", $user_id); } $query_reg_details = "SELECT users.ID as cust_id,\n\t users.user_email as email,\n\t GROUP_CONCAT(usermeta.meta_key\n\t ORDER BY usermeta.umeta_id DESC SEPARATOR '###' ) AS meta_key,\n\t GROUP_CONCAT(usermeta.meta_value\n\t ORDER BY usermeta.umeta_id DESC SEPARATOR '###' ) AS meta_value\n\t FROM {$wpdb->users} as users\n\t JOIN {$wpdb->usermeta} as usermeta ON (users.ID = usermeta.user_id)\n\t WHERE users.ID IN ({$user_ids_imploded})\n\t AND usermeta.meta_key IN ('first_name','last_name')\n\t GROUP BY users.ID\n\t ORDER BY FIND_IN_SET('users.ID','{$user_ids_imploded}')"; $results_reg_details = $wpdb->get_results($query_reg_details, 'ARRAY_A'); for ($i = sizeof($results_cumm_top_cust), $j = 0; $j < sizeof($results_reg_details); $i++, $j++) { $results_cumm_top_cust[$i] = array(); $reg_meta_values = explode('###', $results_reg_details[$j]['meta_value']); $reg_meta_key = explode('###', $results_reg_details[$j]['meta_key']); if (count($reg_meta_values) != count($reg_meta_key)) { continue; } unset($results_reg_details[$j]['meta_value']); unset($results_reg_details[$j]['meta_key']); $reg_meta_key_values = array_combine($reg_meta_key, $reg_meta_values); $results_cumm_top_cust[$i]['total'] = $sr_currency_symbol . sr_number_format($results_cumm_top_cust_reg[$j]['total'], $sr_decimal_places); $results_cumm_top_cust[$i]['calc_total'] = floatval($results_cumm_top_cust_reg[$j]['total']); // value used only for sorting purpose $results_cumm_top_cust[$i]['name'] = $reg_meta_key_values['first_name'] . " " . $reg_meta_key_values['last_name']; $results_cumm_top_cust[$i]['billing_email'] = $results_reg_details[$j]['email']; $results_cumm_top_cust[$i]['post_ids'] = json_encode($results_cumm_top_cust_reg[$j]['post_id']); } } if (!empty($results_cumm_top_cust)) { usort($results_cumm_top_cust, 'usort_callback'); $results_cumm_top_cust = array_slice($results_cumm_top_cust, 0, 5); } else { $results_cumm_top_cust = ""; } //Top 5 Products //Query to get the Top 5 Products $query_top_prod = "SELECT order_item.product_id as product_id,\n\t order_item.product_name as product_name,\n\t SUM( order_item.sales ) AS product_sales ,\n\t SUM( order_item.quantity ) AS product_qty\n\t FROM `{$wpdb->prefix}sr_woo_order_items` AS order_item\n\t LEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = order_item.order_id )\n\t WHERE posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t AND posts.id IN ({$terms_post})\n\t GROUP BY order_item.product_id\n\t ORDER BY product_sales DESC\n\t LIMIT 5"; $results_top_prod = $wpdb->get_results($query_top_prod, 'ARRAY_A'); $rows_top_prod = $wpdb->num_rows; if ($rows_top_prod > 0) { foreach (array_keys($results_top_prod) as $results_top_prod1) { $top_prod_ids[] = $results_top_prod[$results_top_prod1]['product_id']; if (isset($post['top_prod_option'])) { $results_top_prod[$results_top_prod1]['product_sales_display'] = $sr_currency_symbol . sr_number_format($results_top_prod[$results_top_prod1]['product_sales'], $sr_decimal_places); } } if (!empty($top_prod_ids)) { $top_prod_ids1 = implode(",", $top_prod_ids); } //Query to get the Top 5 Products graph related data $query_top_prod_graph = "SELECT order_item.product_id as product_id,\n\t SUM( order_item.sales ) AS product_sales,\n\t SUM( order_item.quantity ) AS product_qty,\n\t {$select}\n\t FROM `{$wpdb->prefix}sr_woo_order_items` AS order_item\n\t LEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = order_item.order_id )\n\t WHERE posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t AND order_item.product_id IN ({$top_prod_ids1})\n\t GROUP BY order_item.product_id,{$group_by}\n\t ORDER BY FIND_IN_SET(order_item.product_id,'{$top_prod_ids1}')"; $results_top_prod_graph = $wpdb->get_results($query_top_prod_graph, 'ARRAY_A'); $rows_top_prod_graph = $wpdb->num_rows; if ($rows_top_prod_graph > 0) { foreach ($results_top_prod_graph as $results_top_prod_graph1) { $top_prod_graph_temp[] = $results_top_prod_graph1['product_id']; } for ($i = 0, $j = 0, $k = 0; $i < sizeof($results_top_prod_graph); $i++) { if ($i > 0) { if ($results_top_prod_graph[$i]['product_id'] == $prod_id) { $j++; $top_prod_graph_data[$k][$j]['product_sales'] = $results_top_prod_graph[$i]['product_sales']; $top_prod_graph_data[$k][$j]['product_qty'] = $results_top_prod_graph[$i]['product_qty']; $top_prod_graph_data[$k][$j][$group_by] = $results_top_prod_graph[$i][$group_by]; if ($group_by == "display_date_time") { $top_prod_graph_data[$k][$j]['display_time'] = $results_top_prod_graph[$i]['display_time']; $top_prod_graph_data[$k][$j]['comp_time'] = $results_top_prod_graph[$i]['comp_time']; } $prod_id = $results_top_prod_graph[$i]['product_id']; } else { $k++; $j = 0; $top_prod_graph_data[$k] = array(); $top_prod_graph_data[$k][$j]['product_sales'] = $results_top_prod_graph[$i]['product_sales']; $top_prod_graph_data[$k][$j]['product_qty'] = $results_top_prod_graph[$i]['product_qty']; $top_prod_graph_data[$k][$j][$group_by] = $results_top_prod_graph[$i][$group_by]; if ($group_by == "display_date_time") { $top_prod_graph_data[$k][$j]['display_time'] = $results_top_prod_graph[$i]['display_time']; $top_prod_graph_data[$k][$j]['comp_time'] = $results_top_prod_graph[$i]['comp_time']; } $prod_id = $results_top_prod_graph[$i]['product_id']; } } else { $top_prod_graph_data[$k] = array(); $top_prod_graph_data[$k][$j]['product_sales'] = $results_top_prod_graph[$i]['product_sales']; $top_prod_graph_data[$k][$j]['product_qty'] = $results_top_prod_graph[$i]['product_qty']; $top_prod_graph_data[$k][$j][$group_by] = $results_top_prod_graph[$i][$group_by]; if ($group_by == "display_date_time") { $top_prod_graph_data[$k][$j]['display_time'] = $results_top_prod_graph[$i]['display_time']; $top_prod_graph_data[$k][$j]['comp_time'] = $results_top_prod_graph[$i]['comp_time']; } $prod_id = $results_top_prod_graph[$i]['product_id']; } } } } $monthly_sales_temp = $date_series; $max_sales = 0; $total_monthly_sales = 0; $tot_cumm_orders = 0; $tot_cumm_orders_qty = 0; $total_orders = 0; if ($rows_monthly_sales > 0) { foreach ($results_monthly_sales as $results_monthly_sale) { if ($group_by == "display_date_time") { $monthly_sales_temp[$results_monthly_sale['comp_time']]['post_date'] = date("Y-m-d", strtotime($start_date)) . ' ' . $results_monthly_sale['display_time']; $monthly_sales_temp[$results_monthly_sale['comp_time']]['sales'] = floatval($results_monthly_sale['todays_sales']); } else { $monthly_sales_temp[$results_monthly_sale[$group_by]]['sales'] = floatval($results_monthly_sale['todays_sales']); } if ($max_sales < $results_monthly_sale['todays_sales']) { $max_sales = $results_monthly_sale['todays_sales']; } $total_monthly_sales = $total_monthly_sales + $results_monthly_sale['todays_sales']; $total_orders = $total_orders + $results_monthly_sale['total_orders']; } foreach ($monthly_sales_temp as $monthly_sales_temp1) { $monthly_sales[] = $monthly_sales_temp1; } } //Top 5 Products Graph $cumm_top_prod_graph_data = array(); $index = 0; $max_values = array(); if (!empty($top_prod_graph_data)) { foreach ($top_prod_graph_data as $results_top_prod_graph1) { $cumm_top_prod_graph_data[$index] = array(); $temp = array(); $cumm_date = $date_series; $max = 0; for ($j = 0; $j < sizeof($results_top_prod_graph1); $j++) { if ($group_by == "display_date_time") { $cumm_date[$results_top_prod_graph1[$j]['comp_time']]['post_date'] = date("Y-m-d", strtotime($start_date)) . ' ' . $results_top_prod_graph1[$j]['display_time']; } if (isset($post['top_prod_option'])) { if ($post['top_prod_option'] == 'sr_opt_top_prod_price') { if ($results_top_prod_graph1[$j]['product_sales'] > $max) { $max = floatval($results_top_prod_graph1[$j]['product_sales']); } if ($group_by == "display_date_time") { $cumm_date[$results_top_prod_graph1[$j]['comp_time']]['sales'] = floatval($results_top_prod_graph1[$j]['product_sales']); } else { $cumm_date[$results_top_prod_graph1[$j][$group_by]]['sales'] = floatval($results_top_prod_graph1[$j]['product_sales']); } } else { if ($post['top_prod_option'] == 'sr_opt_top_prod_qty') { if ($results_top_prod_graph1[$j]['product_qty'] > $max) { $max = intval($results_top_prod_graph1[$j]['product_qty']); } if ($group_by == "display_date_time") { $cumm_date[$results_top_prod_graph1[$j]['comp_time']]['sales'] = intval($results_top_prod_graph1[$j]['product_qty']); } else { $cumm_date[$results_top_prod_graph1[$j][$group_by]]['sales'] = intval($results_top_prod_graph1[$j]['product_qty']); } } } } else { if ($results_top_prod_graph1[$j]['product_sales'] > $max) { $max = floatval($results_top_prod_graph1[$j]['product_sales']); } $cumm_date[$results_top_prod_graph1[$j][$group_by]]['sales'] = floatval($results_top_prod_graph1[$j]['product_sales']); } $product_sales_display = $results_top_prod_graph1[$j]['product_sales']; } foreach ($cumm_date as $cumm_date1) { $temp[] = $cumm_date1; } if (isset($post['option'])) { // Condition to handle the change of graph on option select $cumm_top_prod_graph_data[$index]['graph_data'] = $temp; $cumm_top_prod_graph_data[$index]['max_value'] = $max; } else { $results_top_prod[$index]['graph_data'] = $temp; $results_top_prod[$index]['max_value'] = $max; } $index++; } } //Query for Avg. Items Per Customer $query_cumm_reg_cust_count = "SELECT COUNT(DISTINCT postmeta.meta_value) AS cust_orders\n\t\t FROM {$wpdb->prefix}postmeta AS postmeta\n\t\t JOIN {$wpdb->prefix}posts AS posts ON (posts.ID = postmeta.post_id)\n\t\t WHERE postmeta.meta_key IN ('_customer_user')\n\t\t AND postmeta.meta_value > 0\n\t\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t AND posts.id IN ({$terms_post})\n\t\t GROUP BY postmeta.meta_value"; $results_cumm_reg_cust_count = $wpdb->get_col($query_cumm_reg_cust_count); $rows_cumm_reg_cust_count = $wpdb->num_rows; if ($rows_cumm_reg_cust_count > 0) { $reg_cust_count = $results_cumm_reg_cust_count[0]; } else { $reg_cust_count = 0; } $query_cumm_guest_cust_count = "SELECT COUNT(DISTINCT postmeta1.meta_value) AS cust_orders\n\t\t FROM {$wpdb->prefix}postmeta AS postmeta1\n\t\t JOIN {$wpdb->prefix}posts AS posts ON (posts.ID = postmeta1.post_id)\n\t\t INNER JOIN {$wpdb->prefix}postmeta AS postmeta2 \n\t\t ON (postmeta2.post_ID = postmeta1.post_ID AND postmeta2.meta_key IN ('_customer_user'))\n\t\t WHERE postmeta1.meta_key IN ('_billing_email')\n\t\t AND postmeta2.meta_value = 0\n\t\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t AND posts.id IN ({$terms_post})\n\t\t GROUP BY postmeta1.meta_value"; $results_cumm_guest_cust_count = $wpdb->get_col($query_cumm_guest_cust_count); $rows_cumm_guest_cust_count = $wpdb->num_rows; if ($rows_cumm_guest_cust_count > 0) { $guest_cust_count = $results_cumm_guest_cust_count[0]; } else { $guest_cust_count = 0; } $total_cumm_cust_count = $reg_cust_count + $guest_cust_count; //Query for Avg. Order Total and Avg. Order Items $query_cumm_avg_order_tot_items = "SELECT COUNT(DISTINCT order_item.order_id) as no_orders,\n\t\t\t\t SUM( order_item.quantity ) AS cumm_quantity\n\t\t\t FROM `{$wpdb->prefix}sr_woo_order_items` AS order_item\n\t\t\t LEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = order_item.order_id )\n\t\t\t WHERE posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t\t \tAND posts.ID IN ({$terms_post})"; $results_cumm_avg_order_tot_items = $wpdb->get_results($query_cumm_avg_order_tot_items, 'ARRAY_A'); $rows_cumm_avg_order_tot_items = $wpdb->num_rows; if ($rows_cumm_avg_order_tot_items > 0) { $tot_cumm_orders = $results_cumm_avg_order_tot_items[0]['no_orders']; $tot_cumm_orders_qty = $results_cumm_avg_order_tot_items[0]['cumm_quantity']; } else { $tot_cumm_orders = 0; $tot_cumm_orders_qty = 0; } //Total Discount Sales Widget $query_cumm_discount_sales = "SELECT SUM( postmeta.meta_value ) AS discount_sales,\n\t \t\t\t\t\t\t{$select}\n\t\t FROM `{$wpdb->prefix}postmeta` AS postmeta\n\t\t LEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = postmeta.post_id )\n\t\t WHERE postmeta.meta_key IN ('_order_discount','_cart_discount')\n\t\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t AND posts.ID IN ({$terms_post})\n\t GROUP BY {$group_by}"; $results_cumm_discount_sales = $wpdb->get_results($query_cumm_discount_sales, 'ARRAY_A'); $rows_cumm_discount_sales = $wpdb->num_rows; $cumm_discount_sales_temp = $date_series; $cumm_discount_sales = array(); $max_discount_total = 0; $total_discount_sales = 0; if ($rows_cumm_discount_sales > 0) { foreach ($results_cumm_discount_sales as $results_cumm_discount_sale) { if ($group_by == "display_date_time") { $cumm_discount_sales_temp[$results_cumm_discount_sale['comp_time']]['post_date'] = date("Y-m-d", strtotime($start_date)) . ' ' . $results_cumm_discount_sale['display_time']; $cumm_discount_sales_temp[$results_cumm_discount_sale['comp_time']]['sales'] = floatval($results_cumm_discount_sale['discount_sales']); } else { $cumm_discount_sales_temp[$results_cumm_discount_sale[$group_by]]['sales'] = floatval($results_cumm_discount_sale['discount_sales']); } if ($max_discount_total < $results_cumm_discount_sale['discount_sales']) { $max_discount_total = $results_cumm_discount_sale['discount_sales']; } $total_discount_sales = $total_discount_sales + $results_cumm_discount_sale['discount_sales']; } foreach ($cumm_discount_sales_temp as $cumm_discount_sales_temp1) { $cumm_discount_sales[] = $cumm_discount_sales_temp1; } } //Top Coupons Widget $query_cumm_coupon_count = "SELECT COUNT( order_items.order_item_name ) AS coupon_count,\n\t \t\t\t\t\t\t\tSUM(order_itemmeta.meta_value) AS coupon_amount,\n\t \t\t\t\t\t\t\torder_items.order_item_name AS coupon_name,\n\t \t\t\t\t\t\t\tGROUP_CONCAT(DISTINCT order_items.order_id\n\t ORDER BY order_items.order_item_id DESC SEPARATOR ',' ) AS order_ids\n\t\t FROM `{$wpdb->prefix}posts` AS posts\n\t\t \tJOIN {$wpdb->prefix}woocommerce_order_items as order_items ON ( posts.ID = order_items.order_id )\n\t\t \tJOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_itemmeta \n\t\t \t\tON (order_items.order_item_id = order_itemmeta.order_item_id \n\t\t \t\t\t\tAND order_itemmeta.meta_key IN ('discount_amount') )\n\t\t WHERE posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t AND posts.ID IN ({$terms_post})\n\t\t AND order_items.order_item_type IN ('coupon')\n\t GROUP BY order_items.order_item_name\n\t ORDER BY coupon_count DESC, coupon_amount DESC\n\t LIMIT 5"; $results_cumm_coupon_count = $wpdb->get_results($query_cumm_coupon_count, 'ARRAY_A'); $rows_cumm_coupon_count = $wpdb->num_rows; foreach ($results_cumm_coupon_count as &$results_cumm_coupon_count1) { $results_cumm_coupon_count1['coupon_amount'] = $sr_currency_symbol . sr_number_format($results_cumm_coupon_count1['coupon_amount'], $sr_decimal_places); $results_cumm_coupon_count1['coupon_count'] = sr_number_format($results_cumm_coupon_count1['coupon_count'], $sr_decimal_places); } // % Orders Containing Coupons $sr_per_order_containing_coupons = 0; $query_cumm_orders_coupon_count = "SELECT COUNT( posts.ID ) AS total_coupon_orders\n\t\t \t\t\t\t\t\t\t\t\tFROM `{$wpdb->prefix}posts` AS posts\n\t\t\t \t\t\t\tJOIN {$wpdb->prefix}woocommerce_order_items as order_items ON ( posts.ID = order_items.order_id )\n\t\t\t \t\t\tWHERE posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t\t\t\t\t AND posts.ID IN ({$terms_post})\n\t\t\t\t\t \tAND order_items.order_item_type IN ('coupon')"; $results_cumm_orders_coupon_count = $wpdb->get_col($query_cumm_orders_coupon_count); $rows_cumm_orders_coupon_count = $wpdb->num_rows; if ($rows_cumm_orders_coupon_count > 0 && $total_orders > 0) { $sr_per_order_containing_coupons = $results_cumm_orders_coupon_count[0] / $total_orders * 100; } //Orders By Payment Gateways $query_top_payment_gateway = "SELECT postmeta1.meta_value AS payment_method,\n\t\t \t\t\t\t\t\t\tSUM(postmeta2.meta_value) AS sales_total,\n\t\t \t\t\t\t\t\t\tCOUNT(posts.ID) AS sales_count,\n\t\t \t\t\t\t\t\t\tGROUP_CONCAT(posts.ID ORDER BY posts.ID DESC SEPARATOR ',' ) AS order_ids\n\t\t\t\t FROM {$wpdb->prefix}posts AS posts \n\t\t\t\t LEFT JOIN `{$wpdb->prefix}postmeta` AS postmeta1 ON ( posts.ID = postmeta1.post_id )\n\t\t\t\t LEFT JOIN `{$wpdb->prefix}postmeta` AS postmeta2 ON ( posts.ID = postmeta2.post_id )\n\t\t\t\t WHERE postmeta1.meta_key IN ('_payment_method')\n\t\t\t\t \tAND postmeta2.meta_key IN ('_order_total')\n\t\t\t\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t\t\t AND posts.ID IN ({$terms_post})\n\t\t\t GROUP BY payment_method\n\t\t\t ORDER BY sales_total DESC\n\t\t\t LIMIT 5"; $results_top_payment_gateway = $wpdb->get_results($query_top_payment_gateway, 'ARRAY_A'); $rows_top_payment_gateway = $wpdb->num_rows; if ($rows_top_payment_gateway > 0) { foreach ($results_top_payment_gateway as &$results_top_payment_gateway1) { $top_payment_gateway[] = $results_top_payment_gateway1['payment_method']; if (isset($post['top_prod_option'])) { $results_top_payment_gateway1['gateway_sales_display'] = $sr_currency_symbol . sr_number_format($results_top_payment_gateway1['sales_total'], $sr_decimal_places); $results_top_payment_gateway1['gateway_sales_percent'] = sr_number_format($results_top_payment_gateway1['sales_total'] / $total_monthly_sales * 100, $sr_decimal_places) . '%'; } } if (!empty($top_payment_gateway)) { $top_payment_gateway_imploded = "'" . implode("','", $top_payment_gateway) . "'"; } } //Query to get the Top 5 Products graph related data $query_top_gateways_graph = "SELECT postmeta1.meta_value AS payment_method,\n\t \t\t\t\t\t\t\tSUM(postmeta2.meta_value) AS sales_total,\n\t \t\t\t\t\t\t\tCOUNT(posts.ID) AS sales_count,\n\t \t\t\t\t\t\t\t{$select}\n\t\t\t FROM {$wpdb->prefix}posts AS posts \n\t\t\t LEFT JOIN `{$wpdb->prefix}postmeta` AS postmeta1 ON ( posts.ID = postmeta1.post_id )\n\t\t\t LEFT JOIN `{$wpdb->prefix}postmeta` AS postmeta2 ON ( posts.ID = postmeta2.post_id )\n\t\t\t WHERE postmeta1.meta_key IN ('_payment_method')\n\t\t\t \tAND postmeta2.meta_key IN ('_order_total')\n\t\t\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t\t AND posts.ID IN ({$terms_post})\n\t\t\t AND postmeta1.meta_value IN ({$top_payment_gateway_imploded})\n\t\t GROUP BY payment_method, {$group_by}\n\t\t ORDER BY FIND_IN_SET(postmeta1.meta_value,'" . implode(",", $top_payment_gateway) . "')"; $results_top_gateways_graph = $wpdb->get_results($query_top_gateways_graph, 'ARRAY_A'); $rows_top_gateways_graph = $wpdb->num_rows; $cumm_payment_gateway_temp = $date_series; $cumm_payment_gateway_sales = array(); if ($rows_top_gateways_graph > 0) { for ($i = 0, $j = 0, $k = 0; $i < sizeof($results_top_gateways_graph); $i++) { if ($i > 0) { if ($results_top_gateways_graph[$i]['payment_method'] == $payment_method) { $j++; $top_gateway_graph_data[$k][$j]['gateway_sales_amt'] = $results_top_gateways_graph[$i]['sales_total']; $top_gateway_graph_data[$k][$j]['gateway_sales_count'] = $results_top_gateways_graph[$i]['sales_count']; $top_gateway_graph_data[$k][$j][$group_by] = $results_top_gateways_graph[$i][$group_by]; if ($group_by == "display_date_time") { $top_gateway_graph_data[$k][$j]['display_time'] = $results_top_gateways_graph[$i]['display_time']; $top_gateway_graph_data[$k][$j]['comp_time'] = $results_top_gateways_graph[$i]['comp_time']; } $payment_method = $results_top_gateways_graph[$i]['payment_method']; } else { $k++; $j = 0; $top_gateway_graph_data[$k] = array(); $top_gateway_graph_data[$k][$j]['gateway_sales_amt'] = $results_top_gateways_graph[$i]['sales_total']; $top_gateway_graph_data[$k][$j]['gateway_sales_count'] = $results_top_gateways_graph[$i]['sales_count']; $top_gateway_graph_data[$k][$j][$group_by] = $results_top_gateways_graph[$i][$group_by]; if ($group_by == "display_date_time") { $top_gateway_graph_data[$k][$j]['display_time'] = $results_top_gateways_graph[$i]['display_time']; $top_gateway_graph_data[$k][$j]['comp_time'] = $results_top_gateways_graph[$i]['comp_time']; } $payment_method = $results_top_gateways_graph[$i]['payment_method']; } } else { $top_gateway_graph_data[$k] = array(); $top_gateway_graph_data[$k][$j]['gateway_sales_amt'] = $results_top_gateways_graph[$i]['sales_total']; $top_gateway_graph_data[$k][$j]['gateway_sales_count'] = $results_top_gateways_graph[$i]['sales_count']; $top_gateway_graph_data[$k][$j][$group_by] = $results_top_gateways_graph[$i][$group_by]; if ($group_by == "display_date_time") { $top_gateway_graph_data[$k][$j]['display_time'] = $results_top_gateways_graph[$i]['display_time']; $top_gateway_graph_data[$k][$j]['comp_time'] = $results_top_gateways_graph[$i]['comp_time']; } $payment_method = $results_top_gateways_graph[$i]['payment_method']; } } } //Query to get the Payment Gateway Title $query_gateway_title = "SELECT DISTINCT postmeta1.meta_value as gateway_title,\n \t\t\t\t\t\t\tpostmeta2.meta_value as gateway_method\n\t \t\t\t\t\t\tFROM `{$wpdb->prefix}postmeta` AS postmeta1\n\t \t\t\t\t\t\t\tJOIN `{$wpdb->prefix}postmeta` AS postmeta2 ON ( postmeta1.post_id = postmeta2.post_id )\n \t\t\t\t\t\t\tWHERE postmeta1.meta_key IN ('_payment_method_title')\n \t\t\t\t\t\t\t\tAND postmeta2.meta_key IN ('_payment_method')\n \t\t\t\t\t\t\t\tAND postmeta2.meta_value IN ({$top_payment_gateway_imploded})\n \t\t\t\t\t\t\tORDER BY FIND_IN_SET(postmeta1.meta_value,'" . implode(",", $top_payment_gateway) . "')"; $result_gateway_title = $wpdb->get_results($query_gateway_title, 'ARRAY_A'); $gateway_title = array(); foreach ($result_gateway_title as $result_gateway_title1) { $gateway_title[$result_gateway_title1['gateway_method']] = $result_gateway_title1['gateway_title']; } //Top 5 Products Graph $cumm_top_gateway_graph_data = array(); $index = 0; $max_values = array(); if (!empty($top_gateway_graph_data)) { foreach ($top_gateway_graph_data as $top_gateway_graph_data1) { $cumm_top_gateway_amt_graph_data[$index] = array(); $temp_gateway_sales_amt = array(); $temp_gateway_sales_count = array(); $cumm_date_amt = $date_series; $cumm_date_count = $date_series; $max_amt = 0; $max_count = 0; for ($j = 0; $j < sizeof($top_gateway_graph_data1); $j++) { if ($group_by == "display_date_time") { $cumm_date_amt[$top_gateway_graph_data1[$j]['comp_time']]['post_date'] = date("Y-m-d", strtotime($start_date)) . ' ' . $top_gateway_graph_data1[$j]['display_time']; $cumm_date_count[$top_gateway_graph_data1[$j]['comp_time']]['post_date'] = date("Y-m-d", strtotime($start_date)) . ' ' . $top_gateway_graph_data1[$j]['display_time']; $cumm_date_amt[$top_gateway_graph_data1[$j]['comp_time']]['sales'] = floatval($top_gateway_graph_data1[$j]['gateway_sales_amt']); $cumm_date_count[$top_gateway_graph_data1[$j]['comp_time']]['sales'] = floatval($top_gateway_graph_data1[$j]['gateway_sales_count']); } else { $cumm_date_amt[$top_gateway_graph_data1[$j][$group_by]]['sales'] = floatval($top_gateway_graph_data1[$j]['gateway_sales_amt']); $cumm_date_count[$top_gateway_graph_data1[$j][$group_by]]['sales'] = floatval($top_gateway_graph_data1[$j]['gateway_sales_count']); } //Payment Gateways Sales Amt if ($top_gateway_graph_data1[$j]['gateway_sales_amt'] > $max_amt) { $max_amt = floatval($top_gateway_graph_data1[$j]['gateway_sales_amt']); } //Payment Gateways Sales Count if ($top_gateway_graph_data1[$j]['gateway_sales_count'] > $max_count) { $max_count = floatval($top_gateway_graph_data1[$j]['gateway_sales_count']); } } foreach ($cumm_date_amt as $cumm_date_amt1) { $temp_gateway_sales_amt[] = $cumm_date_amt1; } foreach ($cumm_date_count as $cumm_date_count1) { $temp_gateway_sales_count[] = $cumm_date_count1; } $results_top_payment_gateway[$index]['graph_data_sales_amt'] = $temp_gateway_sales_amt; $results_top_payment_gateway[$index]['max_value_sales_amt'] = $max_amt; $results_top_payment_gateway[$index]['graph_data_sales_count'] = $temp_gateway_sales_count; $results_top_payment_gateway[$index]['max_value_sales_count'] = $max_count; $results_top_payment_gateway[$index]['payment_method'] = $gateway_title[$results_top_payment_gateway[$index]['payment_method']]; $index++; } } //Query for getting the cumm taxes $query_cumm_taxes = "SELECT GROUP_CONCAT(postmeta.meta_key order by postmeta.meta_id SEPARATOR '###') AS prod_othermeta_key,\n\t\t\t\t\t\t\t\t\tGROUP_CONCAT(postmeta.meta_value order by postmeta.meta_id SEPARATOR '###') AS prod_othermeta_value\n\t\t FROM `{$wpdb->prefix}postmeta` AS postmeta\n\t\t LEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = postmeta.post_id )\n\t\t WHERE postmeta.meta_key IN ('_order_total','_order_shipping','_order_shipping_tax','_order_tax')\n\t\t AND posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}'\n\t\t AND posts.ID IN ({$terms_post})\n\t\t GROUP BY posts.ID"; $results_cumm_taxes = $wpdb->get_results($query_cumm_taxes, 'ARRAY_A'); $rows_cumm_taxes = $wpdb->num_rows; if ($rows_cumm_taxes > 0) { $tax = 0; $shipping_tax = 0; $shipping = 0; $order_total = 0; foreach ($results_cumm_taxes as $results_cumm_tax) { $prod_meta_values = explode('###', $results_cumm_tax['prod_othermeta_value']); $prod_meta_key = explode('###', $results_cumm_tax['prod_othermeta_key']); if (count($prod_meta_values) != count($prod_meta_key)) { continue; } $prod_meta_key_values = array_combine($prod_meta_key, $prod_meta_values); $tax = $tax + $prod_meta_key_values['_order_tax']; $shipping_tax = $shipping_tax + $prod_meta_key_values['_order_shipping_tax']; $shipping = $shipping + $prod_meta_key_values['_order_shipping']; $order_total = $order_total + $prod_meta_key_values['_order_total']; } $tax_data['tax'] = $tax; $tax_data['shipping_tax'] = $shipping_tax; $tax_data['shipping'] = $shipping; $tax_data['net_sales'] = $order_total - ($tax + $shipping_tax + $shipping); $tax_data['total_sales'] = $order_total; } //Query to get Top Abandoned Products $current_time = current_time('timestamp'); $cut_off_time = get_option('sr_abandoned_cutoff_time') ? get_option('sr_abandoned_cutoff_time') : 0; $cart_cut_off_time = $cut_off_time * 60; $compare_time = $current_time - $cart_cut_off_time; //Query to update the abandoned product status $query_abandoned_status = "UPDATE {$wpdb->prefix}sr_woo_abandoned_items\n\t \t\t\t\t\t\t\tSET product_abandoned = 1\n\t \t\t\t\t\t\t\tWHERE order_id IS NULL\n\t \t\t\t\t\t\t\t\tAND abandoned_cart_time < " . $compare_time; $wpdb->query($query_abandoned_status); //Query to get the Top Abandoned Products $query_top_abandoned_products = "SELECT SUM(quantity) as abondoned_qty,\n\t\t\t\t\t\t\t\t\t\t\tGROUP_CONCAT(quantity order by id SEPARATOR '###') AS abandoned_quantity,\n\t\t\t\t\t\t\t\t\t\t\tproduct_id as id,\n\t\t\t\t\t\t\t\t\t\t\t{$select_top_abandoned_prod}\n\t\t\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}sr_woo_abandoned_items\n\t\t\t\t\t\t\t\t\t\tWHERE order_id IS NULL \n\t\t\t\t\t\t\t\t\t\t\tAND product_abandoned = 1\n\t\t\t\t\t\t\t\t\t\t\tAND abandoned_cart_time BETWEEN '" . strtotime($start_date) . "' AND '" . strtotime($end_date_query) . "'\n\t\t\t\t\t\t\t\t\t\tGROUP BY product_id\n\t\t\t\t\t\t\t\t\t\tORDER BY abondoned_qty DESC\n\t\t\t\t\t\t\t\t\t\tLIMIT 5"; $results_top_abandoned_products = $wpdb->get_results($query_top_abandoned_products, 'ARRAY_A'); $rows_top_abandoned_products = $wpdb->num_rows; if ($rows_top_abandoned_products > 0) { $prod_id = array(); foreach ($results_top_abandoned_products as $results_top_abandoned_product) { $prod_id[] = $results_top_abandoned_product['id']; } $prod_id = implode(",", $prod_id); $query_prod_abandoned_rate = "SELECT SUM(quantity) as abondoned_rate\n\t\t\t\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}sr_woo_abandoned_items\n\t\t\t\t\t\t\t\t\t\t\tWHERE product_abandoned = 1\n\t\t\t\t\t\t\t\t\t\t\t\tAND abandoned_cart_time BETWEEN '" . strtotime($start_date) . "' AND '" . strtotime($end_date_query) . "'\n\t\t\t\t\t\t\t\t\t\t\t\tAND product_id IN (" . $prod_id . ")\n\t\t\t\t\t\t\t\t\t\t\tGROUP BY product_id\n\t\t\t\t\t\t\t\t\t\t\tORDER BY FIND_IN_SET(product_id,'{$prod_id}') "; $results_prod_abandoned_rate = $wpdb->get_col($query_prod_abandoned_rate); $rows_prod_abandoned_rate = $wpdb->num_rows; $j = 0; $total_prod_abandoned_qty = 0; $total_prod_qty = 0; //Query to get the variation Attributes in a formatted manner $query_attributes = "SELECT post_id,\n\t\t \t\t\t\t\t\t\tGROUP_CONCAT(meta_key order by meta_id SEPARATOR '###') AS meta_key,\n\t\t \t\t\t\t\t\t\tGROUP_CONCAT(meta_value order by meta_id SEPARATOR '###') AS meta_value\n\t\t\t\t \t\t\tFROM {$wpdb->prefix}postmeta\n\t\t\t\t \t\t\tWHERE meta_key like 'attribute_%'\n\t\t\t\t \t\t\t\tAND post_id IN ({$prod_id})\n\t\t\t\t \t\t\tGROUP BY post_id"; $results_attributes = $wpdb->get_results($query_attributes, 'ARRAY_A'); $rows_attributes = $wpdb->num_rows; $variation_attributes = array(); foreach ($results_attributes as $results_attribute) { $meta_key = explode('###', $results_attribute['meta_key']); $meta_value = explode('###', $results_attribute['meta_value']); if (count($meta_key) != count($meta_value)) { continue; } $variation_attributes[$results_attribute['post_id']] = woocommerce_get_formatted_variation(array_combine($meta_key, $meta_value), true); } foreach ($results_top_abandoned_products as &$results_top_abandoned_product) { $abandoned_quantity = explode('###', $results_top_abandoned_product['abandoned_quantity']); $abandoned_dates = explode('###', $results_top_abandoned_product['abandoned_dates']); if ($group_by == "display_date_time") { $abandoned_dates_comp = explode('###', $results_top_abandoned_product['comp_time']); } if (count($abandoned_quantity) != count($abandoned_dates)) { continue; } unset($results_top_abandoned_product['abandoned_quantity']); unset($results_top_abandoned_product['abandoned_dates']); if ($group_by == "display_date_time") { unset($results_top_abandoned_product['comp_time']); } $abandoned_date_series = $date_series; if ($group_by == "display_date_time") { for ($i = 0; $i < sizeof($abandoned_dates_comp); $i++) { $abandoned_date_series[$abandoned_dates_comp[$i]]['post_date'] = $abandoned_dates[$i]; $abandoned_date_series[$abandoned_dates_comp[$i]]['sales'] = $abandoned_date_series[$abandoned_dates_comp[$i]]['sales'] + $abandoned_quantity[$i]; } } else { for ($i = 0; $i < sizeof($abandoned_dates); $i++) { $abandoned_date_series[$abandoned_dates[$i]]['sales'] = $abandoned_date_series[$abandoned_dates[$i]]['sales'] + $abandoned_quantity[$i]; } } $results_top_abandoned_product['graph_data'] = array(); foreach ($abandoned_date_series as $abandoned_date_series1) { $results_top_abandoned_product['graph_data'][] = $abandoned_date_series1; } $results_top_abandoned_product['price'] = get_post_meta($results_top_abandoned_product['id'], '_price', true) * $results_top_abandoned_product['abondoned_qty']; $results_top_abandoned_product['abondoned_qty'] = floatval($results_top_abandoned_product['abondoned_qty']); $abandoned_rate = $results_top_abandoned_product['abondoned_qty'] / $results_prod_abandoned_rate[$j] * 100; $results_top_abandoned_product['abandoned_rate'] = round($abandoned_rate, get_option('woocommerce_price_num_decimals')) . "%"; //Code for formatting the product name $post_parent = wp_get_post_parent_id($results_top_abandoned_product['id']); if ($post_parent > 0) { $results_top_abandoned_product['prod_name'] = get_the_title($post_parent) . " (" . $variation_attributes[$results_top_abandoned_product['id']] . ")"; } else { $results_top_abandoned_product['prod_name'] = get_the_title($results_top_abandoned_product['id']); } $total_prod_abandoned_qty = $total_prod_abandoned_qty + $results_top_abandoned_product['abondoned_qty']; $total_prod_qty = $total_prod_qty + $results_prod_abandoned_rate[$j]; $j++; } } $query_min_abandoned_date = "SELECT MIN(abandoned_cart_time) AS min_abandoned_date\n\t \t\t\t\t\t\t\tFROM {$wpdb->prefix}sr_woo_abandoned_items"; $results_min_abandoned_date = $wpdb->get_col($query_min_abandoned_date); $rows_min_abandoned_date = $wpdb->num_rows; $min_abandoned_date = ''; if ($results_min_abandoned_date[0] != '') { $min_abandoned_date = date('Y-m-d', (int) $results_min_abandoned_date[0]); } //Cumm Cart Abandonment Rate $query_total_cart = "SELECT COUNT(DISTINCT cart_id) as total_cart_count\n\t\t\t \t\t\tFROM {$wpdb->prefix}sr_woo_abandoned_items\n\t\t\t \t\t\tWHERE abandoned_cart_time >= " . strtotime($start_date) . " AND abandoned_cart_time <=" . strtotime($end_date_query); $total_cart_count = $wpdb->get_col($query_total_cart); $rows_total_cart = $wpdb->num_rows; $query_total_abandoned_cart = "SELECT COUNT(DISTINCT cart_id) as total_cart_abandoned_count\n\t\t\t\t\t\t \t\t\tFROM {$wpdb->prefix}sr_woo_abandoned_items\n\t\t\t\t\t\t \t\t\tWHERE abandoned_cart_time >= " . strtotime($start_date) . " AND abandoned_cart_time <=" . strtotime($end_date_query) . "\n\t\t\t\t\t\t \t\t\t\tAND product_abandoned = 1\n\t\t\t\t\t\t \t\t\t\tAND order_id IS NULL"; $total_abandoned_cart_count = $wpdb->get_col($query_total_abandoned_cart); $rows_total_abandoned_cart = $wpdb->num_rows; if ($rows_total_abandoned_cart > 0) { $cumm_cart_abandoned_rate = round($total_abandoned_cart_count[0] / $total_cart_count[0] * 100, get_option('woocommerce_price_num_decimals')); } else { $cumm_cart_abandoned_rate = 0; } //Sales Funnel $cumm_sales_funnel = array(); //Query to get the total products added to cart if ($rows_total_cart > 0) { $query_products_added_cart = "SELECT SUM(quantity) as total_prod_added_cart\n\t\t\t\t\t\t \t\t\tFROM {$wpdb->prefix}sr_woo_abandoned_items\n\t\t\t\t\t\t \t\t\tWHERE abandoned_cart_time BETWEEN '" . strtotime($start_date) . "' AND '" . strtotime($end_date_query) . "'"; $total_products_added_cart = $wpdb->get_col($query_products_added_cart); $cumm_sales_funnel['total_cart_count'] = floatval($total_cart_count[0]); $cumm_sales_funnel['total_products_added_cart'] = floatval($total_products_added_cart[0]); } else { $cumm_sales_funnel['total_cart_count'] = 0; $cumm_sales_funnel['total_products_added_cart'] = 0; } //Query to get the placed order ids $query_orders_placed = "SELECT DISTINCT id as completed_order_ids\n\t \t\t\t\t\t\t\tFROM {$wpdb->prefix}posts AS posts\n\t JOIN {$wpdb->prefix}term_relationships AS term_relationships \n\t ON term_relationships.object_id = posts.ID \n\t JOIN {$wpdb->prefix}term_taxonomy AS term_taxonomy \n\t ON term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id \n\t JOIN {$wpdb->prefix}terms AS terms \n\t ON term_taxonomy.term_id = terms.term_id\n\t\t WHERE posts.post_status IN ('publish')\n\t\t AND posts.post_type IN ('shop_order')\n\t\t AND (posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}')"; $results_orders_placed = $wpdb->get_col($query_orders_placed); $rows_orders_placed = $wpdb->num_rows; if ($rows_orders_placed > 0) { $cumm_sales_funnel['orders_placed_count'] = floatval(sizeof($results_orders_placed)); //Query to get the count of the products purchased $query_products_purchased = "SELECT SUM(quantity) as query_products_sold\n\t \t\t\t\t\t\t\tFROM {$wpdb->prefix}sr_woo_order_items\n\t \t\t\t\t\t\t\tWHERE order_id IN (" . implode(",", $results_orders_placed) . ")"; $results_products_purchased = $wpdb->get_col($query_products_purchased); $rows_products_purchased = $wpdb->num_rows; $cumm_sales_funnel['products_purchased_count'] = floatval($results_products_purchased[0]); } else { $cumm_sales_funnel['orders_placed_count'] = 0; $cumm_sales_funnel['products_purchased_count'] = 0; } //Query to get the completed order ids $query_orders_completed = "SELECT DISTINCT id as completed_order_ids\n\t \t\t\t\t\t\t\tFROM {$wpdb->prefix}posts AS posts\n\t JOIN {$wpdb->prefix}term_relationships AS term_relationships \n\t ON term_relationships.object_id = posts.ID \n\t JOIN {$wpdb->prefix}term_taxonomy AS term_taxonomy \n\t ON term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id \n\t JOIN {$wpdb->prefix}terms AS terms \n\t ON term_taxonomy.term_id = terms.term_id\n\t\t WHERE terms.name IN ('completed')\n\t\t AND posts.post_status IN ('publish')\n\t\t AND posts.post_type IN ('shop_order')\n\t\t AND (posts.post_date BETWEEN '{$start_date}' AND '{$end_date_query}')"; $results_orders_completed = $wpdb->get_col($query_orders_completed); $rows_orders_completed = $wpdb->num_rows; if ($rows_orders_completed > 0) { $cumm_sales_funnel['orders_completed_count'] = floatval(sizeof($results_orders_completed)); //Query to get the count of the products sold $query_products_sold = "SELECT SUM(quantity) as query_products_sold\n\t \t\t\t\t\t\t\tFROM {$wpdb->prefix}sr_woo_order_items\n\t \t\t\t\t\t\t\tWHERE order_id IN (" . implode(",", $results_orders_completed) . ")"; $results_products_sold = $wpdb->get_col($query_products_sold); $rows_products_sold = $wpdb->num_rows; $cumm_sales_funnel['products_sold_count'] = floatval($results_products_sold[0]); } else { $cumm_sales_funnel['orders_completed_count'] = 0; $cumm_sales_funnel['products_sold_count'] = 0; } if (isset($post['option'])) { // Condition to get the data when the Top Products Toggle button is clicked $results[0] = $cumm_top_prod_graph_data; } else { $results[0] = $monthly_sales; $results[1] = $total_monthly_sales; $results[2] = $results_top_prod; $results[3] = $results_cumm_top_cust; if ($total_monthly_sales == 0) { $results[4] = floatval(0); } else { if ($tot_cumm_orders == 0) { $results[] = floatval($total_monthly_sales); } else { $results[4] = floatval($total_monthly_sales / $tot_cumm_orders); } } if ($tot_cumm_orders_qty == 0) { $results[5] = floatval(0); } else { if ($total_cumm_cust_count == 0) { $results[5] = floatval($tot_cumm_orders_qty); } else { $results[5] = floatval($tot_cumm_orders_qty / $total_cumm_cust_count); } } $results[6] = floatval($max_sales + 100); if ($total_discount_sales > 0) { $results[7] = $cumm_discount_sales; $results[8] = $total_discount_sales; } else { $results[7] = ''; $results[8] = ''; } $results[9] = $results_cumm_coupon_count; $results[10] = floatval($max_discount_total + 100); $results[11] = $sr_per_order_containing_coupons; $results[12] = $results_top_payment_gateway; $results[13] = $tax_data; $results[14] = $results_top_abandoned_products; $results[15] = $min_abandoned_date != '' && $min_abandoned_date <= $start_date ? $cumm_cart_abandoned_rate : ''; $results[16] = $min_abandoned_date != '' && $min_abandoned_date <= $start_date ? $cumm_sales_funnel : ''; } return $results; }
function() { $(this).css('border', '0.2em solid #e8e8e8'); } ); }); </script> <div class="daily_widgets_icon"> <i class = "icon-truck daily_widgets_icon1 daily_widget_4_color"> </i> </div> <div class="daily_widgets_data"> <span class = "daily_widgets_price daily_widget_4_color"> <?php echo sr_number_format($count_order_fulfillment_today[0], $sr_decimal_places); ?> <i class="<?php echo $imgurl_order_fulfillment; ?> "></i> <span class = "daily_widgets_comp_price daily_widget_4_color"> <?php $diff = !empty($diff_order_fulfillment) ? sr_number_format($diff_order_fulfillment, $sr_decimal_places) : ""; echo $diff; ?> </span> </span> <p class="daily_widgets_text"> Orders To Fulfill </p> </div> </div> </div> <?php } ?> </div> </div> <!-- // ================================================