Example #1
0
 function proceed_old($data)
 {
     // Default account currency id: 16; RUB
     $main_currency_id = 16;
     $lead = '';
     $sale = '';
     if (isset($data['s'])) {
         $arr_currencies = get_active_currencies();
         $conversion_currency_code = strtoupper($data['c']);
         if ($conversion_currency_code == 'RUB') {
             $conversion_currency_code = 'RUR';
         }
         $conversion_currency_id = 0;
         foreach ($arr_currencies as $id => $cur) {
             if ($cur['code'] == $conversion_currency_code) {
                 $conversion_currency_id = $id;
             }
         }
         // Currency is not found in active, use default currency
         if ($conversion_currency_id == 0) {
             $conversion_currency_id = $main_currency_id;
         }
         if ($conversion_currency_id == $main_currency_id) {
             $conversion_profit = $data['a'];
         } else {
             $conversion_profit = convert_currency($data['a'], $conversion_currency_id, $main_currency_id, date('Y-m-d'));
         }
         $conversion_profit_currency = $data['a'];
         $r = mysql_query('SELECT `id` FROM `tbl_clicks` WHERE `subid` = "' . mysql_real_escape_string($data['s']) . '"');
         if (mysql_num_rows($r) > 0) {
             $f = mysql_fetch_assoc($r);
             switch ($data['t']) {
                 case 'lead':
                     $lead = ',`is_lead` = 1';
                     break;
                 case 'sale':
                     $sale = ', `is_sale` = 1';
                     break;
             }
             if (($sale != '' || $lead != '') && isset($data['a'])) {
                 mysql_query("UPDATE `tbl_clicks` SET\n                                    `conversion_currency_sum`='" . mysql_real_escape_string($conversion_profit_currency) . "',\n                                    `conversion_currency_id`='" . mysql_real_escape_string($conversion_currency_id) . "',\n                                    `conversion_price_main` = '" . mysql_real_escape_string($conversion_profit) . "' " . $lead . $sale . '
                               WHERE
                                 `id` = ' . $f['id']);
             }
         }
         $r = mysql_query('SELECT `id` FROM `tbl_conversions` WHERE `subid` = "' . mysql_real_escape_string($data['s']) . '"');
         if (mysql_num_rows($r) > 0) {
             $f = mysql_fetch_assoc($r);
             if (isset($data['a'])) {
                 mysql_query("UPDATE `tbl_conversions` SET\n                                    `currency_id`='" . mysql_real_escape_string($conversion_currency_id) . "',\n                                    `profit_currency`='" . mysql_real_escape_string($conversion_profit_currency) . "',\n                                    `profit` = '" . mysql_real_escape_string($conversion_profit) . "'\n                                  WHERE\n                                    `id` = '" . mysql_real_escape_string($f['id']) . "'");
             }
         } else {
             mysql_query("INSERT INTO `tbl_conversions` (`network`, `currency_id`, `profit_currency`, `profit`, `subid`, `status`, `t20`, `date_add`) " . "VALUES\n                        (\n                            '" . mysql_real_escape_string($data['n']) . "',\n                            '" . mysql_real_escape_string($conversion_currency_id) . "',\n                            '" . mysql_real_escape_string($conversion_profit_currency) . "',\n                            '" . mysql_real_escape_string($conversion_profit) . "',\n                            '" . mysql_real_escape_string($data['s']) . "',\n                            1,\n                            '" . mysql_real_escape_string($data['c']) . "', NOW()\n                        )");
         }
     }
 }
Example #2
0
<?php

if (!$include_flag) {
    exit;
}
echo '<script src="' . _HTML_LIB_PATH . '/chartjs/Chart.js"></script>';
echo '<script src="' . _HTML_LIB_PATH . '/mustache/mustache.js"></script>';
include _TRACK_SHOW_COMMON_PATH . '/lib/mustache/Autoloader.php';
Mustache_Autoloader::register(_TRACK_SHOW_COMMON_PATH . '/lib/mustache');
$mTemplate = new Mustache_Engine(array('loader' => new Mustache_Loader_FilesystemLoader(_TRACK_SHOW_COMMON_PATH . '/templates/views')));
$arr_currencies_list = get_active_currencies();
$selected_currency = current($arr_currencies_list);
$arr_report_data = prepare_report('main-report', $_REQUEST + array('report_params' => array('act' => 'reports'), 'type' => 'sales', 'main_column' => 'source_name'));
list($more, $arr_flow_data, $s, $s1) = get_sales_flow_data($_REQUEST, 'flow_report');
$arr_report_data['flow_rows'] = $arr_flow_data;
$arr_report_data['show_more'] = $more;
// Fill sales table header names
$arr_report_data['flow-table-header']['values'] = array('short_date' => array('caption' => 'Дата'), 'offer_name' => array('caption' => 'Оффер'), 'network' => array('caption' => 'Сеть'), 'source_name' => array('caption' => 'Источник'), 'campaign_name' => array('caption' => 'Кампания'), 'placement' => array('caption' => 'Площадка'), 'profit' => array('caption' => 'Сумма'), 'status' => array('caption' => 'Статус'));
// ********************************************************************************
// Prepare data for sales chart
$i = 0;
$arr_sales_chart_data = array();
foreach ($arr_report_data['table-columns'] as $cur) {
    if ($i++ == 0) {
        continue;
    }
    $arr_sales_chart_data['captions'][] = "'" . $cur['caption'] . "'";
}
$i = 0;
$total_sales = 0;
foreach ($arr_report_data['table-total']['values'] as $cur) {
function get_sales_flow_data($request_parameters, $report_name, $limit = 20, $offset = 0)
{
    // Default currency for this account: RUB (16)
    $main_currency_id = 16;
    // Fill currency list
    global $arr_currencies_list;
    if (!(is_array($arr_currencies_list) && count($arr_currencies_list) > 0)) {
        $arr_currencies_list = get_active_currencies();
    }
    $allowed_report_in_params = array('report_type' => 'actions_count', 'range_type' => 'daily', 'main_column' => 'source_name', 'filter_actions' => 'actions', 'filter_by' => '', 'filter_value' => '', 'currency_id' => '16', 'timezone_offset' => get_current_timezone_shift(), 'date_start' => get_current_day('-7 days'), 'date_end' => get_current_day(), 'report_period' => 'lastweek');
    //  Remove empty values and get only allowed keys
    $IN = array_replace($allowed_report_in_params, array_intersect_key(array_filter($request_parameters), $allowed_report_in_params));
    // Add default report params
    $IN['report_params'] = isset($request_parameters['report_params']) ? $request_parameters['report_params'] : null;
    // Fill report range
    report_period_to_dates($IN);
    $sql_select = array();
    $sql_join = array();
    $sql_where = array();
    $sql_order = array();
    $sql_limit = 'LIMIT ' . _str($limit + 1) . ' OFFSET ' . _str($offset);
    // Apply timezone offset
    $date_add_tz = "CONVERT_TZ(tbl_conversions.date_add, '+00:00', '" . _str($IN['timezone_offset']) . "') as click_date";
    if (in_array($IN['timezone_offset'], array('+00:00', '-00:00', '00:00'))) {
        $date_add_tz = 'tbl_conversions.date_add as click_date';
    }
    $sql_select[] = $date_add_tz;
    if (in_array($IN['timezone_offset'], array('+00:00', '-00:00', '00:00'))) {
        // Same timezones in DB and report
        $sql_date_start = "'" . _str($IN['date_start']) . " 00:00:00'";
        $sql_date_end = "'" . _str($IN['date_end']) . " 23:59:59'";
    } else {
        $timezone_offset_inverted = timezone_shift_invert($IN['timezone_offset']);
        $sql_date_start = "CONVERT_TZ('" . _str($IN['date_start']) . " 00:00:00', '+00:00', '" . _str($timezone_offset_inverted) . "')";
        $sql_date_end = "CONVERT_TZ('" . _str($IN['date_end']) . " 23:59:59', '+00:00', '" . _str($timezone_offset_inverted) . "')";
    }
    if ($IN['filter_by'] == 'subid' && $IN['filter_value'] != '') {
        // Looking for sale, no need to limit search by date range
        $sql_where[] = "tbl_conversions.subid='" . _str($IN['filter_value']) . "'";
    } else {
        $sql_where[] = "tbl_conversions.date_add BETWEEN {$sql_date_start} AND {$sql_date_end}";
    }
    $sql_select[] = 'tbl_conversions.*';
    $sql_order[] = 'date_add desc';
    // 1. Get sales list
    $sql = 'SELECT ' . implode(', ', $sql_select) . '
          FROM
              tbl_conversions
              ' . implode(' ', $sql_join) . '
          WHERE
              ' . implode(' AND ', $sql_where) . '
          ORDER BY ' . implode(', ', $sql_order) . "\n          {$sql_limit}";
    $result = mysql_query($sql);
    $arr_sales = array();
    while ($row = mysql_fetch_assoc($result)) {
        $arr_sales["'" . _str($row['subid']) . "'"] = $row;
    }
    // 2. Get clicks for sales
    $arr_sales_clicks = array();
    $arr_sales_subids = array_keys($arr_sales);
    $subids = implode(',', $arr_sales_subids);
    $sql = "select\n        tbl_clicks.*,\n        tbl_offers.offer_name\n        FROM\n          tbl_clicks\n        left join\n          tbl_offers on tbl_clicks.out_id=tbl_offers.id\n      where\n        subid in ({$subids})";
    $result = mysql_query($sql);
    $arr_parent_ids = array();
    while ($row = mysql_fetch_assoc($result)) {
        if ($row['parent_id'] > 0) {
            $arr_parent_ids[] = "'" . _str($row['parent_id']) . "'";
        }
        $arr_sales_clicks["'" . _str($row['subid']) . "'"] = $row;
    }
    $parent_ids = implode(',', $arr_parent_ids);
    $sql = "select tbl_clicks.* from tbl_clicks where id in ({$parent_ids})";
    $result = mysql_query($sql);
    $arr_parent_clicks = array();
    while ($row = mysql_fetch_assoc($result)) {
        $arr_parent_clicks[$row['id']] = $row;
    }
    $arr_report_data = array();
    function net_loader($class)
    {
        include_once _TRACK_LIB_PATH . '/postback/' . $class . '.php';
    }
    spl_autoload_register('net_loader');
    include _TRACK_LIB_PATH . "/class/common.php";
    include _TRACK_LIB_PATH . "/class/custom.php";
    $arr_default_network_params = array('date_add', 'profit', 'status', 'subid', 'txt_status', 'type');
    $i = 0;
    $more = 0;
    foreach ($arr_sales as $subid => $row) {
        if ($i == $limit) {
            $more = 1;
            break;
        }
        $arr_report_data[$i]['short_date'] = mysqldate2short($row['click_date']);
        $arr_report_data[$i]['offer_name'] = $arr_sales_clicks[$subid]['offer_name'];
        // Network name
        $class_name = $row['network'];
        if (class_exists($class_name, true)) {
            $t = new $class_name();
            if (method_exists($t, 'get_params_info')) {
                $arr_class_params = $t->get_params_info();
                $arr_report_data[$i]['network_params'] = array();
                foreach ($row as $key => $val) {
                    if (isset($arr_class_params[$key]) && !in_array($key, $arr_default_network_params)) {
                        if (trim($val) != '') {
                            $arr_report_data[$i]['network_params']['values'][] = array('caption' => $arr_class_params[$key]['caption'], 'value' => $val);
                        }
                    }
                }
            }
        }
        $arr_report_data[$i]['network_name'] = $row['network'];
        $arr_report_data[$i]['source_name'] = $arr_sales_clicks[$subid]['source_name'] == '' ? '' : format_cell_value('source_name', $arr_sales_clicks[$subid]['source_name']);
        // Campaign name
        $arr_report_data[$i]['campaign_name'] = implode(' — ', array_filter(array($arr_sales_clicks[$subid]['campaign_name'], $arr_sales_clicks[$subid]['ads_name'])));
        $arr_report_data[$i]['placement'] = format_cell_value('referer_domain', $arr_sales_clicks[$subid]['referer_domain']);
        $arr_report_data[$i]['subid'] = $row['subid'];
        if ($row['currency_id'] == $IN['currency_id']) {
            $arr_report_data[$i]['profit'] = format_cell_value('profit', $row['profit_currency'], $IN);
        } else {
            $arr_report_data[$i]['profit'] = format_cell_value('profit', convert_currency($row['profit'], $main_currency_id, $IN['currency_id'], date('Y-m-d')), $IN);
        }
        // $arr_report_data[$i]['status']=$row['txt_status'];
        switch ($row['txt_status']) {
            case 'approved':
                $arr_report_data[$i]['status-icon'] = "fa fa-check";
                $arr_report_data[$i]['status-title'] = "Подтвержден";
                break;
            case 'waiting':
                $arr_report_data[$i]['status-icon'] = "fa fa-hourglass-o";
                $arr_report_data[$i]['status-title'] = "В обработке";
                break;
            case 'rejected':
                $arr_report_data[$i]['status-icon'] = "fa fa-close";
                $arr_report_data[$i]['status-title'] = "Отклонен";
                break;
            default:
                $arr_report_data[$i]['status'] = mb_strtolower($row['txt_status'], 'UTF-8');
                break;
        }
        if (isset($arr_parent_clicks[$arr_sales_clicks[$subid]['parent_id']])) {
            // Fill sale parameters from parent click
            $arr_report_data[$i]['source_name'] = $arr_parent_clicks[$arr_sales_clicks[$subid]['parent_id']]['source_name'];
        }
        // FILL CLICK INFO
        if (isset($arr_parent_clicks[$subid])) {
            $click_info = $arr_parent_clicks[$subid];
        } else {
            $click_info = $arr_sales_clicks[$subid];
        }
        // Conversion ID
        $arr_report_data[$i]['conversion_id'] = $row['id'];
        // Date
        $arr_report_data[$i]['date'] = mysqldate2string($row['click_date']);
        // Location
        $arr_report_data[$i]['country'] = format_cell_value('country', $click_info['country']);
        $arr_report_data[$i]['location'] = implode(', ', array_filter(array($arr_report_data[$i]['country'], $click_info['state'], $click_info['city'])));
        // ISP
        $arr_report_data[$i]['isp'] = $click_info['isp'];
        // IP
        $arr_report_data[$i]['ip'] = $click_info['user_ip'];
        // Subaccount
        $arr_report_data[$i]['subaccount'] = $click_info['subaccount'];
        // SubID
        $arr_report_data[$i]['subid'] = $click_info['subid'];
        // OS
        $arr_report_data[$i]['os'] = implode(' ', array_filter(array($click_info['user_os'], $click_info['user_os_version'])));
        // Device
        $arr_report_data[$i]['device'] = implode(' ', array_filter(array($click_info['user_platform'], $click_info['user_platform_info'], $click_info['user_platform_info_extra'])));
        // Device type
        if ($click_info['is_phone'] == 1) {
            $arr_report_data[$i]['tablet_icon'] = 'phone';
        } elseif ($click_info['is_tablet'] == 1) {
            $arr_report_data[$i]['tablet_icon'] = 'tablet';
        } else {
            $arr_report_data[$i]['tablet_icon'] = '';
        }
        // User-agent
        $arr_report_data[$i]['user_agent'] = $click_info['user_agent'];
        // Browser
        $arr_report_data[$i]['browser'] = implode(' ', array_filter(array($click_info['user_browser'], $click_info['user_browser_version'])));
        // Referer
        $referer_host = parse_url($click_info['referer'], PHP_URL_HOST);
        $referer = str_replace($referer_host, idn_to_utf8($referer_host), $click_info['referer']);
        $arr_report_data[$i]['full_referer'] = urldecode(str_replace(array('http://www.', 'www.'), '', $referer));
        // Keyword
        $arr_report_data[$i]['keyword'] = $click_info['search_string'];
        // Link params	campaign_param1, campaign_param2, campaign_param3, campaign_param4, campaign_param5
        $campaign_params = params_list($click_info, 'campaign_param');
        if (!empty($campaign_params)) {
            $arr_report_data[$i]['link_params'] = join('; ', $campaign_params);
        }
        // Visit params	click_param_name1, click_param_value1, …, click_param_name15, click_param_value15
        $click_params = params_list($click_info, 'click_param_value', $click_info['source_name']);
        if (!empty($click_params)) {
            $arr_report_data[$i]['click_params'] = join('; ', $click_params);
        }
        $i++;
    }
    return array($more, $arr_report_data, $offset);
}
Example #4
0
            <label class="control-label">Currency<?php 
echo text_danger_template('*');
?>
</label>

            <div class="controls">
                <select id="currency" class="span6 " data-placeholder="Choose a Category" tabindex="1">
                    <option value="<?php 
echo get_procurement_plan_entry_info($entry_id, 'currency_id');
?>
"><?php 
echo get_procurement_plan_entry_info($entry_id, 'currency');
?>
</option>
                    <?php 
foreach (get_active_currencies() as $currency) {
    ?>
                        <option value="<?php 
    echo $currency['id'];
    ?>
"><?php 
    echo $currency['abbr'];
    ?>
</option>
                    <?php 
}
?>

                </select>
            </div>
        </div>
Example #5
0
 function process_conversion($data)
 {
     // Default account currency id: 16; RUB
     $main_currency_id = 16;
     $cnt = count($this->params);
     $i = 0;
     $is_lead = isset($data['is_lead']) ? 1 : 0;
     $is_sale = isset($data['is_sale']) ? 1 : 0;
     unset($data['is_lead']);
     unset($data['is_sale']);
     $arr_currencies = get_active_currencies();
     $conversion_currency_code = strtoupper($data['txt_param20']);
     if ($conversion_currency_code == 'RUB') {
         $conversion_currency_code = 'RUR';
     }
     $conversion_currency_id = 0;
     foreach ($arr_currencies as $id => $cur) {
         if ($cur['code'] == $conversion_currency_code) {
             $conversion_currency_id = $id;
         }
     }
     // Currency is not found in active, use default currency
     if ($conversion_currency_id == 0) {
         $conversion_currency_id = $main_currency_id;
     }
     if ($conversion_currency_id == $main_currency_id) {
         $conversion_profit = $data['profit'];
     } else {
         $conversion_profit = convert_currency($data['profit'], $conversion_currency_id, $main_currency_id, date('Y-m-d'));
     }
     $conversion_profit_currency = $data['profit'];
     // Специальная обработка "статусного постбэка" от сети CTR.
     // В этом случае приходит только статус, связанный с остальными данными через order_id (i3)
     // и нужно поменять статус соостветствующей конвертации.
     $ctr_order = false;
     // флаг, о том, что некоторые операции (замену логов) выполнять не нужно,
     // так как это не полный запрос, а только статус
     if ($data['network'] == 'CTR' and !empty($data['status'])) {
         $q = 'SELECT * FROM `tbl_conversions` WHERE (`i3` = "' . mysql_real_escape_string($data['i3']) . '"
         AND `network` = "CTR") LIMIT 1';
         if ($rs = db_query($q) and mysql_num_rows($rs) > 0) {
             $r = mysql_fetch_assoc($rs);
             $data['subid'] = $r['subid'];
         }
         dmp($data);
         foreach ($data as $k => $v) {
             if (!in_array($k, array('network', 'i3', 'status', 'txt_status', 'ak', 'date_add', 'subid'))) {
                 unset($data[$k]);
             }
         }
         $ctr_order = true;
     }
     if (isset($data['subid']) && $data['subid'] != '') {
         $table = 'tbl_clicks';
         $subid = $data['subid'];
         // мы скоро обнулим массив data, а subid нам ещё понадобится
         $status = $data['status'];
         // Проверяем есть ли клик с этим SibID
         $q = 'SELECT `id`, `is_sale`, `is_lead` FROM `' . $table . '` WHERE `subid` = "' . mysql_real_escape_string($subid) . '"';
         $r = mysql_query($q) or die($q . '<br />' . mysql_error());
         if (mysql_num_rows($r) > 0) {
             $f = mysql_fetch_assoc($r);
             $click_id = $f['id'];
             if ($data['profit'] > 0) {
                 $is_lead = $f['is_lead'] > 0 ? 1 : 0;
                 $is_sale = 1;
             } else {
                 $is_lead = 1;
                 $is_sale = $f['is_sale'] > 0 ? 1 : 0;
             }
             $q = "UPDATE `" . $table . "` SET\n                `is_sale` = " . intval($is_sale) . ",\n                `is_lead` = " . intval($is_lead) . ",\n                `conversion_currency_sum` = '" . mysql_real_escape_string($conversion_profit_currency) . "',\n                `conversion_currency_id` = '" . mysql_real_escape_string($conversion_currency_id) . "',\n                `conversion_price_main` = '" . mysql_real_escape_string($conversion_profit) . "'\n                WHERE `id` = '" . mysql_real_escape_string($click_id) . "'";
             mysql_query($q) or die(mysql_error());
         }
         // ----------------------------
         // Готовим данные для конверсии
         // ----------------------------
         $upd = array();
         // Инициализируем массив для запроса на обновление
         // Дополнительные поля, которых нет в $params, но которые нам нужны в БД
         $additional_fields = array('date_add', 'txt_status', 'status', 'network', 'type');
         foreach ($data as $name => $value) {
             if (array_key_exists($name, $this->params) or in_array($name, $additional_fields)) {
                 $upd[$name] = $value;
                 unset($data[$name]);
             }
         }
         $upd['date_add'] = mysql_now();
         // date('Y-m-d H:i:s');
         $upd['profit'] = $conversion_profit;
         $upd['currency_id'] = $conversion_currency_id;
         $upd['profit_currency'] = $conversion_profit_currency;
         // Проверяем, есть ли уже конверсия с таким SubID
         $q = "SELECT * FROM `tbl_conversions` WHERE `subid` = '" . mysql_real_escape_string($subid) . "' LIMIT 1";
         $r = db_query($q) or die(mysql_error());
         if (mysql_num_rows($r) > 0) {
             $f = mysql_fetch_assoc($r);
             $upd['id'] = $conv_id = $f['id'];
             $q = updatesql($upd, 'tbl_conversions', 'id');
             db_query($q);
             // Чистим логи
             if (!$ctr_order) {
                 db_query('DELETE FROM `tbl_postback_params` WHERE `conv_id` = ' . $f['id']) or die(mysql_error());
             }
         } else {
             $q = insertsql($upd, 'tbl_conversions');
             db_query($q);
             $conv_id = mysql_insert_id();
         }
         // Нужно ли нам отменить продажу?
         if ($status == 2) {
             delete_sale($click_id, $conv_id, 'sale');
         }
         // Пишем postback логи
         foreach ($data as $name => $value) {
             if (strpos($name, 'pbsave_') !== false) {
                 $name = str_replace('pbsave_', '', $name);
                 $ins = array('conv_id' => $conv_id, 'name' => $name, 'value' => value);
                 $q = insertsql($ins, 'tbl_postback_params');
                 db_query($q);
             }
         }
     }
 }
Example #6
0
                            </div>
                        </div>
                        
                        <div class="control-group <?php 
echo in_array('estimated_amount', $requiredfields) ? 'error' : '';
?>
">
                            <label class="control-label">Estimated amount <?php 
echo text_danger_template('*');
?>
                            </label>

                            <div class="controls">
                                <select id="currency" class="input-small m-wrap" name="currency">
                            <?php 
echo get_select_options(get_active_currencies(), 'id', 'title', !empty($formdata['currency']) ? $formdata['currency'] : '1');
?>
                            
                                </select>
                                <input style="display:none" class=" input-small numbercommas" value="<?php 
echo !empty($formdata['exchange_rate']) ? addCommas($formdata['exchange_rate'], 0) : '';
?>
" name="exchange_rate" placeholder="Exchange rate" type="text" />
                                <input type="text" name="estimated_amount" value="<?php 
echo !empty($formdata['estimated_amount']) ? addCommas($formdata['estimated_amount'], 0) : '';
?>
" class="input-medium numbercommas" />
                            
                            </div>
                        </div>