示例#1
0
function sr_get_daily_kpi_data()
{
    global $wpdb;
    //Code for date localization
    $today_arr = getdate();
    $curr_time_gmt = date('H:i:s', time() - date("Z"));
    $new_date = date('Y-m-d') . " " . $curr_time_gmt;
    $today = date('Y-m-d', (int) strtotime($new_date) + get_option('gmt_offset') * HOUR_IN_SECONDS);
    $today_time = date('Y-m-d H:i:s', (int) strtotime($new_date) + get_option('gmt_offset') * HOUR_IN_SECONDS);
    $yesterday = date('Y-m-d', strtotime($today . ' -1 day'));
    // $today_to_date = $today . " 00:00:00";
    $this_month_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date('m', strtotime($today)), 1, date('Y', strtotime($today))));
    $days_in_this_month = date('t', mktime(0, 0, 0, date('m', strtotime($today)), 1, date('Y', strtotime($today))));
    $comparison_to_date = date('Y-m-d', strtotime($today . ' -1 month')) . " 00:00:00";
    $comparison_month_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date('m', strtotime($comparison_to_date)), 1, date('Y', strtotime($comparison_to_date))));
    $comparison_days_in_month = date('t', mktime(0, 0, 0, date('m', strtotime($comparison_to_date)), 1, date('Y', strtotime($comparison_to_date))));
    $cond_terms_post = '';
    $terms_post_join = '';
    if (!empty($_POST['SR_IS_WOO22']) && $_POST['SR_IS_WOO22'] == "true") {
        $cond_terms_post = "AND posts.post_status IN ('wc-completed','wc-processing','wc-on-hold')";
        $terms_post_join = '';
    } else {
        $query_terms = "SELECT term_taxonomy.term_taxonomy_id\n\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}term_taxonomy AS term_taxonomy \n\t                                JOIN {$wpdb->prefix}terms AS terms \n\t                                    ON term_taxonomy.term_id = terms.term_id\n\t                    \t\tWHERE terms.name IN ('completed','processing','on-hold')";
        $terms_post = $wpdb->get_col($query_terms);
        $rows_terms_post = $wpdb->num_rows;
        if ($rows_terms_post > 0) {
            $terms_taxonomy_ids = implode(",", $terms_post);
            $terms_post_join = ' JOIN ' . $wpdb->prefix . 'term_relationships AS term_relationships ON (term_relationships.object_id = posts.ID AND posts.post_status = "publish")';
            $cond_terms_post = !empty($terms_post_join) ? 'AND term_relationships.term_taxonomy_id IN (' . $terms_taxonomy_ids . ')' : '';
        }
    }
    $daily_widget_data = array();
    // ================================================
    // Todays Sales
    // ================================================
    $query_today = "SELECT SUM( postmeta.meta_value ) AS todays_sales \n\t\t                        FROM `{$wpdb->prefix}postmeta` AS postmeta\n\t\t                        \tLEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = postmeta.post_id )\n\t\t                        \t{$terms_post_join}\n\t\t                        WHERE postmeta.meta_key IN ('_order_total')\n\t\t                            AND posts.post_date LIKE '{$today}%'\n\t\t                            {$cond_terms_post}";
    $results_today = $wpdb->get_col($query_today);
    $rows_results_today = $wpdb->num_rows;
    if ($rows_results_today > 0 && !empty($results_today[0])) {
        $daily_widget_data['sales_today'] = $results_today[0];
    } else {
        $daily_widget_data['sales_today'] = 0;
    }
    $query_yest = "SELECT SUM( postmeta.meta_value ) AS yesterdays_sales \n\t\t                    FROM `{$wpdb->prefix}postmeta` AS postmeta\n\t\t                    \tLEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = postmeta.post_id )\n\t\t                    \t{$terms_post_join}\n\t\t                    WHERE postmeta.meta_key IN ('_order_total')\n\t\t                        AND posts.post_date LIKE '{$yesterday}%'\n\t\t                        {$cond_terms_post}";
    $results_yest = $wpdb->get_col($query_yest);
    $rows_results_yest = $wpdb->num_rows;
    if ($rows_results_yest > 0) {
        $daily_widget_data['sales_yest'] = $results_yest[0];
    } else {
        $daily_widget_data['sales_yest'] = 0;
    }
    $daily_sales_kpi = sr_get_daily_kpi_data_formatted('daily_sales', $daily_widget_data['sales_today'], $daily_widget_data['sales_yest'], $_POST);
    // Query to get the month to date and forecasted sales
    $query_month_to_date_sales = "SELECT COUNT( posts.ID ) as sales_count, \n\t\t\t\t\t\t\t\t\t\t\tSUM( postmeta.meta_value ) AS month_to_date \n\t\t\t\t\t                    FROM `{$wpdb->prefix}postmeta` AS postmeta\n\t\t\t\t\t                    \tLEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = postmeta.post_id )\n\t\t\t\t\t                    \t{$terms_post_join}\n\t\t\t\t\t                    WHERE postmeta.meta_key IN ('_order_total')\n\t\t\t\t                        \tAND posts.post_date between '{$this_month_start}' AND '{$today_time}'\n\t\t\t\t                        \t{$cond_terms_post}";
    $results_month_to_date_sales = $wpdb->get_results($query_month_to_date_sales, 'ARRAY_A');
    $month_to_date_sales = !empty($results_month_to_date_sales[0]['month_to_date']) ? $results_month_to_date_sales[0]['month_to_date'] : 0;
    $avg_sales_per_day = round($results_month_to_date_sales[0]['month_to_date'] / $today_arr['mday'], 2);
    $forcasted_sales = $avg_sales_per_day * $days_in_this_month;
    // Code for calculating the sales frequency
    $date_diff = round((strtotime($today_time) - strtotime($this_month_start)) / 60);
    $frequency_diff_days = $date_diff / 1440;
    $sales_frequency = !empty($results_month_to_date_sales[0]['sales_count']) ? $frequency_diff_days / $results_month_to_date_sales[0]['sales_count'] : '0';
    // $diff = date_diff($today_time,$this_month_start);
    $sales_frequency_formatted = sr_get_frequency_formatted($sales_frequency);
    // Query to get the comparison month to date and forecasted sales
    $query_comparison_month_to_date_sales = "SELECT COUNT( posts.ID ) as sales_count, \n\t\t\t\t\t\t\t\t\t\t\t\t\tSUM( postmeta.meta_value ) AS month_to_date\n\t\t\t\t\t\t\t                    FROM `{$wpdb->prefix}postmeta` AS postmeta\n\t\t\t\t\t\t\t                    \tLEFT JOIN {$wpdb->prefix}posts AS posts ON ( posts.ID = postmeta.post_id )\n\t\t\t\t\t\t\t                    \t{$terms_post_join}\n\t\t\t\t\t\t\t                    WHERE postmeta.meta_key IN ('_order_total')\n\t\t\t\t\t\t                        \tAND posts.post_date between '{$comparison_month_start}' AND '{$comparison_to_date}'\n\t\t\t\t\t\t                        \t{$cond_terms_post}";
    $results_comparison_month_to_date_sales = $wpdb->get_results($query_comparison_month_to_date_sales, 'ARRAY_A');
    $comparison_month_to_date_sales = !empty($results_comparison_month_to_date_sales[0]['month_to_date']) ? $results_comparison_month_to_date_sales[0]['month_to_date'] : 0;
    $comparison_avg_sales_per_day = round($results_comparison_month_to_date_sales[0]['month_to_date'] / $today_arr['mday'], 2);
    $comparison_forcasted_sales = $comparison_avg_sales_per_day * $comparison_days_in_month;
    $comparison_sales_frequency = !empty($results_comparison_month_to_date_sales[0]['sales_count']) ? $frequency_diff_days / $results_comparison_month_to_date_sales[0]['sales_count'] : '0';
    //Code for month to date sales KPI
    $month_to_date_sales_kpi = sr_get_daily_kpi_data_formatted('month_to_date_sales', $month_to_date_sales, $comparison_month_to_date_sales, $_POST);
    //Code for average sales per day KPI
    $avg_sales_per_day_kpi = sr_get_daily_kpi_data_formatted('avg_sales_per_day', $avg_sales_per_day, $comparison_avg_sales_per_day, $_POST);
    //Code for Forecasted Sales KPI
    $forcasted_sales_kpi = sr_get_daily_kpi_data_formatted('forcasted_sales', $forcasted_sales, $comparison_forcasted_sales, $_POST);
    //Code for Sales Frequency KPI
    // $sales_count = (!empty($results_month_to_date_sales[0]['sales_count'])) ? $results_month_to_date_sales[0]['sales_count'] : '0';
    // $comparison_sales_count = (!empty($results_comparison_month_to_date_sales[0]['sales_count'])) ? $results_comparison_month_to_date_sales[0]['sales_count'] : '0';
    if ($comparison_sales_frequency == 0) {
        $daily_widget_data['diff_sales_frequency'] = round($sales_frequency, 2);
    } else {
        $daily_widget_data['diff_sales_frequency'] = abs(round(($sales_frequency - $comparison_sales_frequency) / $comparison_sales_frequency * 100, 2));
    }
    if ($daily_widget_data['diff_sales_frequency'] != 0) {
        if ($comparison_sales_frequency < $sales_frequency) {
            $daily_widget_data['imgurl_sales_frequency'] = $_POST['SR_IMG_UP_RED'];
        } else {
            $daily_widget_data['imgurl_sales_frequency'] = $_POST['SR_IMG_UP_GREEN'];
        }
    } else {
        $daily_widget_data['diff_sales_frequency'] = "";
        $daily_widget_data['imgurl_sales_frequency'] = "";
    }
    $daily_widget_data['sales_frequency_formatted'] = $sales_frequency_formatted;
    $daily_widget_data['diff_sales_frequency_formatted'] = !empty($daily_widget_data['diff_sales_frequency']) ? sr_number_format($daily_widget_data['diff_sales_frequency'], $_POST['SR_DECIMAL_PLACES']) . '%' : "";
    // ================================================
    // Todays Customers
    // ================================================
    $result_guest_today_email1 = array();
    $result_guest_yest_email1 = array();
    $reg_today_count = 0;
    $reg_yest_count = 0;
    //Reg Customers
    $query_reg_today = "SELECT ID FROM `{$wpdb->users}` \n\t\t                    WHERE user_registered LIKE  '{$today}%'";
    $reg_today_ids = $wpdb->get_col($query_reg_today);
    $rows_reg_today_ids = $wpdb->num_rows;
    if ($rows_reg_today_ids > 0) {
        $query_reg_today_count = "SELECT DISTINCT postmeta.meta_value\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                                        {$terms_post_join}\n\t\t                               WHERE postmeta.meta_key IN ('_customer_user')\n\t\t                                     AND postmeta.meta_value IN (" . implode(",", $reg_today_ids) . ")\n\t\t                                     AND posts.post_date LIKE  '{$today}%'\n\t\t                                     {$cond_terms_post}";
        $reg_today = $wpdb->get_col($query_reg_today_count);
        $rows_reg_today = $wpdb->num_rows;
        if ($rows_reg_today > 0) {
            $reg_today_count = sizeof($reg_today);
        }
    }
    $query_reg_yest = "SELECT ID FROM `{$wpdb->users}` \n\t\t                     WHERE user_registered LIKE  '{$yesterday}%'";
    $reg_yest_ids = $wpdb->get_col($query_reg_yest);
    $rows_reg_yest_ids = $wpdb->num_rows;
    if ($rows_reg_yest_ids > 0) {
        $query_reg_today_count = "SELECT DISTINCT postmeta.meta_value\n\t\t                               FROM {$wpdb->prefix}postmeta AS postmeta\n\t                                        JOIN {$wpdb->prefix}posts AS posts ON (posts.ID = postmeta.post_id)\n\t                                        {$terms_post_join}\n\t\t                               WHERE postmeta.meta_key IN ('_customer_user')\n\t\t                                     AND postmeta.meta_value IN (" . implode(",", $reg_yest_ids) . ")\n\t\t                                     AND posts.post_date LIKE  '{$yesterday}%'\n\t\t                                     {$cond_terms_post}";
        $reg_yest = $wpdb->get_col($query_reg_today_count);
        $rows_reg_yest = $wpdb->num_rows;
        if ($rows_reg_yest > 0) {
            $reg_yest_count = sizeof($reg_yest);
        }
    }
    //Guest Customers
    $query_guest_today_email = "SELECT postmeta1.meta_value\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                                       {$terms_post_join}\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 LIKE  '{$today}%'\n\t\t                             {$cond_terms_post}\n\t\t                       GROUP BY postmeta1.meta_value";
    $result_guest_today_email = $wpdb->get_col($query_guest_today_email);
    $rows_guest_today_email = $wpdb->num_rows;
    if ($rows_guest_today_email > 0) {
        $result_guest_today_email1 = array_flip($result_guest_today_email);
        $query_guest_today = "SELECT DISTINCT postmeta.meta_value\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 ('_billing_email')\n\t\t                                     AND postmeta.meta_value IN ('" . implode("','", $result_guest_today_email) . "')\n\t\t                                         AND posts.post_date NOT LIKE  '{$today}%'\n\t\t                               GROUP BY posts.ID";
        $result_guest_today = $wpdb->get_col($query_guest_today);
        for ($i = 0; $i < sizeof($result_guest_today); $i++) {
            if (isset($result_guest_today_email1[$result_guest_today[$i]])) {
                unset($result_guest_today_email1[$result_guest_today[$i]]);
            }
        }
    }
    $daily_widget_data['today_count_cust'] = 0;
    $daily_widget_data['today_count_cust'] = sizeof($result_guest_today_email1) + $reg_today_count;
    $query_guest_yest_email = "SELECT postmeta1.meta_value\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                                    {$terms_post_join}\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 LIKE  '{$yesterday}%'\n\t\t                                 {$cond_terms_post}\n\t\t                           GROUP BY postmeta1.meta_value";
    $result_guest_yest_email = $wpdb->get_col($query_guest_yest_email);
    $rows_guest_yest_email = $wpdb->num_rows;
    if ($rows_guest_yest_email > 0) {
        $result_guest_yest_email1 = array_flip($result_guest_yest_email);
        $query_guest_yest = "SELECT DISTINCT postmeta.meta_value\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 ('_billing_email')\n\t\t                             AND postmeta.meta_value IN ('" . implode("','", $result_guest_yest_email) . "')\n\t\t                             AND posts.post_date NOT LIKE  '{$yesterday}%'\n\t\t                                 AND posts.post_date NOT LIKE  '{$today}%'\n\t\t                       GROUP BY posts.ID";
        $result_guest_yest = $wpdb->get_col($query_guest_yest);
        for ($i = 0; $i < sizeof($result_guest_yest); $i++) {
            if (isset($result_guest_yest_email1[$result_guest_yest[$i]])) {
                unset($result_guest_yest_email1[$result_guest_yest[$i]]);
            }
        }
    }
    $daily_widget_data['yest_count_cust'] = 0;
    $daily_widget_data['yest_count_cust'] = sizeof($result_guest_yest_email1) + $reg_yest_count;
    $daily_cust_kpi = sr_get_daily_kpi_data_formatted('daily_cust', $daily_widget_data['today_count_cust'], $daily_widget_data['yest_count_cust'], $_POST);
    // ================================================
    // Todays Returns
    // ================================================
    $cond_terms_post = '';
    $terms_post_join = '';
    if (!empty($_POST['SR_IS_WOO22']) && $_POST['SR_IS_WOO22'] == "true") {
        $cond_terms_post = " posts.post_status IN ('wc-refunded')";
        $terms_post_join = '';
    } else {
        $query_terms = "SELECT term_taxonomy.term_taxonomy_id\n\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}term_taxonomy AS term_taxonomy \n\t                                JOIN {$wpdb->prefix}terms AS terms \n\t                                    ON term_taxonomy.term_id = terms.term_id\n\t                    \t\tWHERE terms.name IN ('refunded')";
        $terms_post = $wpdb->get_col($query_terms);
        $rows_terms_post = $wpdb->num_rows;
        if ($rows_terms_post > 0) {
            $terms_taxonomy_ids = implode(",", $terms_post);
            $terms_post_join = ' JOIN ' . $wpdb->prefix . 'term_relationships AS term_relationships ON (term_relationships.object_id = posts.ID AND posts.post_status = "publish")';
            $cond_terms_post = ' term_relationships.term_taxonomy_id IN (' . $terms_taxonomy_ids . ')';
        }
    }
    $query_terms_refund = "SELECT id FROM {$wpdb->prefix}posts AS posts\n\t\t                            \t\t{$terms_post_join}\n\t\t\t                            WHERE {$cond_terms_post}";
    $terms_refund_post = $wpdb->get_col($query_terms_refund);
    $rows_terms_refund_post = $wpdb->num_rows;
    if ($rows_terms_refund_post > 0) {
        $terms_refund_post = implode(",", $terms_refund_post);
        $query_today_refund = "SELECT SUM(postmeta.meta_value) as todays_refund\n\t\t\t                           FROM {$wpdb->prefix}postmeta AS postmeta\n\t\t\t                                    JOIN {$wpdb->prefix}posts AS posts ON (posts.ID = postmeta.post_id)\n\t\t\t                           WHERE postmeta.meta_key IN ('_order_total')\n\t\t\t                                 AND posts.post_modified LIKE '{$today}%'\n\t\t\t                                 AND posts.ID IN ({$terms_refund_post})";
        $result_today_refund = $wpdb->get_col($query_today_refund);
        $query_yest_refund = "SELECT SUM(postmeta.meta_value) as yest_refund\n\t\t\t                           FROM {$wpdb->prefix}postmeta AS postmeta\n\t\t\t                                    JOIN {$wpdb->prefix}posts AS posts ON (posts.ID = postmeta.post_id)\n\t\t\t                           WHERE postmeta.meta_key IN ('_order_total')\n\t\t\t                                 AND posts.post_modified LIKE '{$yesterday}%'\n\t\t\t                                 AND posts.ID IN ({$terms_refund_post})";
        $result_yest_refund = $wpdb->get_col($query_yest_refund);
    } else {
        $rows_today_refund = 0;
        $rows_yest_refund = 0;
    }
    if (!empty($result_today_refund[0])) {
        $daily_widget_data['today_refund'] = $result_today_refund[0];
    } else {
        $daily_widget_data['today_refund'] = "0";
    }
    if (!empty($result_yest_refund[0])) {
        $daily_widget_data['yest_refund'] = $result_yest_refund[0];
    } else {
        $daily_widget_data['yest_refund'] = "0";
    }
    $daily_refund_kpi = sr_get_daily_kpi_data_formatted('daily_refund', $daily_widget_data['today_refund'], $daily_widget_data['yest_refund'], $_POST);
    // ================================================
    // Orders Unfulfillment
    // ================================================
    $query_shipping_status = "SELECT option_value FROM {$wpdb->prefix}options\n\t\t                        WHERE option_name LIKE 'woocommerce_calc_shipping'";
    $result_shipping_status = $wpdb->get_col($query_shipping_status);
    $daily_widget_data['result_shipping_status'] = $result_shipping_status[0];
    $query_physical_prod = "SELECT post_id\n\t\t                       FROM {$wpdb->prefix}postmeta\n\t\t                       WHERE (meta_key LIKE '_downloadable' AND meta_value LIKE 'no')\n\t\t                             OR (meta_key LIKE '_virtual' AND meta_value LIKE 'no')";
    $result_physical_prod = $wpdb->get_col($query_physical_prod);
    $rows_physical_prod = $wpdb->num_rows;
    $daily_widget_data['rows_physical_prod'] = $rows_physical_prod;
    //Woo 2.2 Fix
    if (!empty($_POST['SR_IS_WOO22']) && $_POST['SR_IS_WOO22'] == "true") {
        $cond_terms_post = " posts.post_status IN ('wc-processing')";
        $terms_post_join = '';
    } else {
        $query_terms = "SELECT term_taxonomy.term_taxonomy_id\n\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}term_taxonomy AS term_taxonomy \n\t                                JOIN {$wpdb->prefix}terms AS terms \n\t                                    ON term_taxonomy.term_id = terms.term_id\n\t                    \t\tWHERE terms.name IN ('processing')";
        $terms_post = $wpdb->get_col($query_terms);
        $rows_terms_post = $wpdb->num_rows;
        if ($rows_terms_post > 0) {
            $terms_taxonomy_ids = implode(",", $terms_post);
            $terms_post_join = ' JOIN ' . $wpdb->prefix . 'term_relationships AS term_relationships ON (term_relationships.object_id = posts.ID AND posts.post_status = "publish")';
            $cond_terms_post = ' term_relationships.term_taxonomy_id IN (' . $terms_taxonomy_ids . ')';
        }
    }
    $query_order_fulfillment_today = "SELECT count(id) FROM {$wpdb->prefix}posts AS posts\n\t\t                                \t{$terms_post_join}\n\t\t                                WHERE {$cond_terms_post}\n\t\t                                    AND (posts.post_modified LIKE '{$today}%'\n\t\t                                        OR posts.post_date LIKE '{$today}%')";
    $result_order_fulfillment_today = $wpdb->get_col($query_order_fulfillment_today);
    $rows_order_fulfillment_today = $wpdb->num_rows;
    if ($rows_order_fulfillment_today > 0) {
        $daily_widget_data['count_order_fulfillment_today'] = $result_order_fulfillment_today[0];
    } else {
        $daily_widget_data['count_order_fulfillment_today'] = 0;
    }
    $query_order_fulfillment_yest = "SELECT count(id) FROM {$wpdb->prefix}posts AS posts\n\t\t                                \t{$terms_post_join}\n\t\t                                WHERE {$cond_terms_post}\n\t\t                                    AND (posts.post_modified LIKE '{$yesterday}%'\n\t\t                                        OR posts.post_date LIKE '{$yesterday}%')";
    $result_order_fulfillment_yest = $wpdb->get_col($query_order_fulfillment_yest);
    $rows_order_fulfillment_yest = $wpdb->num_rows;
    if ($rows_order_fulfillment_yest > 0) {
        $daily_widget_data['count_order_fulfillment_yest'] = $result_order_fulfillment_yest[0];
    } else {
        $daily_widget_data['count_order_fulfillment_yest'] = 0;
    }
    $daily_order_fulfillment_kpi = sr_get_daily_kpi_data_formatted('order_fulfillment', $daily_widget_data['count_order_fulfillment_today'], $daily_widget_data['count_order_fulfillment_yest'], $_POST);
    $daily_widget_data = array_merge($daily_widget_data, $daily_sales_kpi, $month_to_date_sales_kpi, $avg_sales_per_day_kpi, $forcasted_sales_kpi, $daily_cust_kpi, $daily_refund_kpi, $daily_order_fulfillment_kpi);
    return $daily_widget_data;
}
示例#2
0
function sr_get_daily_kpi_data_formatted($data)
{
    if (!wp_verify_nonce($data['sr_security'], 'smart-reporter-security')) {
        die('Security check');
    }
    unset($data['sr_security']);
    $const = array();
    $const['SR_CURRENCY_SYMBOL'] = defined('SR_CURRENCY_SYMBOL') ? SR_CURRENCY_SYMBOL : (!empty($_POST['SR_CURRENCY_SYMBOL']) ? $_POST['SR_CURRENCY_SYMBOL'] : '');
    $const['SR_DECIMAL_PLACES'] = defined('SR_DECIMAL_PLACES') ? SR_DECIMAL_PLACES : (!empty($_POST['SR_DECIMAL_PLACES']) ? $_POST['SR_DECIMAL_PLACES'] : 2);
    $const['SR_IMG_UP_GREEN'] = defined('SR_IMG_UP_GREEN') ? SR_IMG_UP_GREEN : (!empty($_POST['SR_IMG_UP_GREEN']) ? $_POST['SR_IMG_UP_GREEN'] : '');
    $const['SR_IMG_UP_RED'] = defined('SR_IMG_UP_RED') ? SR_IMG_UP_RED : (!empty($_POST['SR_IMG_UP_RED']) ? $_POST['SR_IMG_UP_RED'] : '');
    $const['SR_IMG_DOWN_RED'] = defined('SR_IMG_DOWN_RED') ? SR_IMG_DOWN_RED : (!empty($_POST['SR_IMG_DOWN_RED']) ? $_POST['SR_IMG_DOWN_RED'] : '');
    $const['SR_IS_WOO22'] = defined('SR_IS_WOO22') ? SR_IS_WOO22 : (!empty($_POST['SR_IS_WOO22']) ? $_POST['SR_IS_WOO22'] : '');
    $returns = array();
    foreach ($data as $kpi => $val) {
        // code for calculating the cmp. value
        if (!empty($val['params']['cmp_format']) && $val['params']['cmp_format'] == '$') {
            $diff = sr_number_format(abs(round($val['c'] - $val['lp'], 2)), $const['SR_DECIMAL_PLACES']);
        } else {
            if (!empty($val['params']['cmp_format']) && $val['params']['cmp_format'] == '%') {
                $diff = sr_number_format(!empty($val['lp']) && $val['lp'] != 0 ? abs(round(($val['c'] - $val['lp']) / $val['lp'] * 100, 2)) : round($val['c'], 2), $const['SR_DECIMAL_PLACES']) . '%';
            } else {
                $diff = '';
            }
        }
        if ($diff != 0) {
            if ($val['lp'] < $val['c']) {
                if ($kpi == "refund_today" || $kpi == "orders_to_fulfill") {
                    $img = $const['SR_IMG_UP_RED'];
                } else {
                    $img = $const['SR_IMG_UP_GREEN'];
                }
            } else {
                if ($kpi == "daily_refund" || $kpi == "orders_to_fulfill") {
                    $img = $const['SR_IMG_UP_GREEN'];
                } else {
                    $img = $const['SR_IMG_DOWN_RED'];
                }
            }
        } else {
            $diff = "";
            $img = "";
        }
        if (empty($val['params']['currency_show'])) {
            if ($kpi == 'one_sale_every') {
                $f_val = sr_get_frequency_formatted($val['c']);
            } else {
                $f_val = sr_number_format($val['c'], $const['SR_DECIMAL_PLACES']);
            }
        } else {
            $f_val = $const['SR_CURRENCY_SYMBOL'] . sr_number_format($val['c'], $const['SR_DECIMAL_PLACES']);
        }
        $returns[$kpi] = '<span class = "daily_widgets_price"> ' . $f_val . ' <i class= "' . $img . '" ></i>' . '  <span class = "daily_widgets_comp_price">' . $diff . '</span> </span>';
        if ($kpi == 'one_sale_every') {
            $returns[$kpi] = '<p class="daily_widgets_text "> ' . $val['title'] . ' </p>' . $returns[$kpi];
        } else {
            $returns[$kpi] .= '<p class="daily_widgets_text "> ' . $val['title'] . ' </p>';
        }
    }
    return $returns;
}