Формирование данных для отчета по транзакциям как список транзакций, правки по коду compaign

parent 8cda316f
......@@ -24,7 +24,7 @@
}
#period-stats,
#company-stats
#campaign-stats
{
display: none;
}
......
......@@ -52,8 +52,8 @@ $(document).ready(function(){
if (sortField) {
//console.log('AAA sortField = ', sortField);
//console.log('AAA dataTable = ', dataTable);
console.log('AAA sortField = ', sortField);
console.log('AAA dataTable = ', dataTable);
var dataTableForSort = [];
......@@ -61,7 +61,8 @@ $(document).ready(function(){
var dataTableSortItem = {};
dataTableSortItem['period'] = dataTableItem;
activeLines.forEach(function(activeLine){
dataTableSortItem[activeLine] = dataTable[activeLine][ind];
currentActiveLine = activeLine;
dataTableSortItem[activeLine] = valueFormat(dataTable[activeLine][ind]);
});
dataTableForSort.push(dataTableSortItem);
});
......@@ -119,11 +120,21 @@ $(document).ready(function(){
activeLines = ['shows', 'clicks', 'transactions', 'salemoney', 'admoney'];
}
if (dataLineChartStat.report == 'transaction') {
activeLines = ['usdollarmoney', 'localmoney'];
activeLines = ['localmoney', 'usdollarmoney'];
}
/*
// Автоматизировать формирование списка категорий таблицы:
activeLines = [];
$('thead.metric.sortable th input[type="checkbox"]', $table).each(function(){
if ($(this).is(":checked")) {
listCats.push($(this).data('field'));
}
})
*/
//console.log('AAA TableStat render: ', dataLineChartStat);
//console.log('AAA activeLines: ', activeLines);
console.log('AAA activeLines: ', activeLines);
dataTable = {};
activeLines.forEach(function(item){
......
......@@ -47,7 +47,7 @@ $(document).ready(function(){
$chartStatError = $('.chart-graph-stat-error'),
$chartStatErrorMessage = $('.chart-graph-stat-error .message'),
periodStatsData,
companyStatsData,
campaignStatsData,
dataLineChartStat;
......@@ -61,12 +61,11 @@ $(document).ready(function(){
if ($('#period-stats').val()) {
periodStatsData = JSON.parse($('#period-stats').val());
}
if ($('#company-stats').val()) {
companyStatsData = JSON.parse($('#company-stats').val());
if ($('#campaign-stats').val()) {
campaignStatsData = JSON.parse($('#campaign-stats').val());
}
// Устанавливаем данные по периоду в качестве стартовых:
dataLineChartStat = periodStatsData;
//console.log('AAA dataLineChartStat = ', dataLineChartStat);
// Отрисовка графика и таблицы по стартовым данным:
......@@ -144,8 +143,8 @@ $(document).ready(function(){
$this.addClass('selected').toggleClass('desc');
if ($this.hasClass('main-cat')) {
dataLineChartStat = ($this.hasClass('date')) ? periodStatsData : companyStatsData;
$tableHeadColsChecks.attr("disabled", $this.hasClass('company'));
dataLineChartStat = ($this.hasClass('date')) ? periodStatsData : campaignStatsData;
$tableHeadColsChecks.attr("disabled", $this.hasClass('campaign'));
}
renderHourTable();
});
......@@ -199,7 +198,7 @@ $(document).ready(function(){
ShowChartData();
periodStatsData = res.period;
companyStatsData = res.company;
campaignStatsData = res.campaign;
dataLineChartStat = periodStatsData;
$('.main-cat').removeClass('selected');
$('.main-cat.date').addClass('selected');
......
......@@ -109,43 +109,54 @@ class Cabinet extends Common
$statsDaysModel = $this->container->get(StatsDays::class);
//$stats = $statsDaysModel->findAll(['FeedID' => $feed_id_list])->toArray();
$periodStats = $statsDaysModel->getStatsByDate($feed_id_list, $dates);
$companyStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates);
$campaignStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates);
$cats = ['shows','clicks','transactions','salemoney','admoney'];
if ($campaignStats || count($campaignStats['period'])>0) {
$feeds_names = [];
foreach($campaignStats['period'] as $feed_id) {
$feed = $feedsModel->findById($feed_id);
$feeds_names[] = $feed->getTitle();
}
$campaignStats['period'] = $feeds_names;
}
break;
case 'transaction':
/** @var \App\Model\Feeds $transactionsModel */
$transactionsModel = $this->container->get(Transactions::class);
$periodStats = $transactionsModel->getStatsByDate($feed_id_list, $dates);
$companyStats = $transactionsModel->getStatsByFeeds($feed_id_list, $dates);
$transactionStats = $transactionsModel->getStatsByTransactions($feed_id_list, $dates);
$cats = ['localmoney','usdollarmoney'];
if ($transactionStats || count($transactionStats['period'])>0) {
$transactions_names = [];
foreach($transactionStats['period'] as $transaction_id) {
$transactions_names[] = 'transaction #'.$transaction_id;
}
$transactionStats['period'] = $transactions_names;
}
$periodStats = $transactionStats;
break;
default:
$data['error'] = _t('Извините, тип отчета "'. $report_type .'" недоступен');
break;
}
if ($companyStats || count($companyStats['period'])>0) {
$feeds_names = [];
foreach($companyStats['period'] as $feed_id) {
$feed = $feedsModel->findById($feed_id);
$feeds_names[] = $feed->getTitle();
}
$companyStats['period'] = $feeds_names;
}
//return new JsonResponse($companyStats);
$periodStats['type'] = 'interval';
$periodStats['report'] = $report_type;
$companyStats['type'] = 'interval';
$companyStats['report'] = $report_type;
$campaignStats['type'] = 'interval';
$campaignStats['report'] = $report_type;
$data['feeds'] = $feeds;
$data['report'] = $report_type;
$data['current_period'] = $current_period;
$data['dates'] = $dates;
$data['periodStats'] = $periodStats;
$data['companyStats'] = $companyStats;
$data['campaignStats'] = $campaignStats;
$data['cats'] = $cats;
/*
......@@ -244,17 +255,36 @@ class Cabinet extends Common
/** @var \App\Model\Feeds $statDaysModel */
$statsDaysModel = $this->container->get(StatsDays::class);
$periodStats = $statsDaysModel->getStatsByDate($feed_id_list, $dates);
$companyStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates);
$campaignStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates);
if ($campaignStats || count($campaignStats['period'])>0) {
$feeds_names = [];
foreach($campaignStats['period'] as $feed_id) {
$feed = $feedsModel->findById($feed_id);
$feeds_names[] = $feed->getTitle();
}
$campaignStats['period'] = $feeds_names;
}
break;
case 'transaction':
/** @var \App\Model\Feeds $transactionsModel */
$transactionsModel = $this->container->get(Transactions::class);
$periodStats = $transactionsModel->getStatsByDate($feed_id_list, $dates);
$companyStats = $transactionsModel->getStatsByFeeds($feed_id_list, $dates);
$transactionStats = $transactionsModel->getStatsByTransactions($feed_id_list, $dates);
if ($transactionStats || count($transactionStats['period'])>0) {
$transactions_names = [];
foreach($transactionStats['period'] as $transaction_id) {
$transactions_names[] = 'transaction #'.$transaction_id;
}
$transactionStats['period'] = $transactions_names;
}
$periodStats = $transactionStats;
break;
default:
$periodStats = null;
$companyStats = null;
$campaignStats = null;
break;
}
......@@ -265,13 +295,13 @@ class Cabinet extends Common
$periodStats['type'] = 'interval';
$periodStats['report'] = $report_type;
$companyStats['type'] = 'interval';
$companyStats['report'] = $report_type;
$campaignStats['type'] = 'interval';
$campaignStats['report'] = $report_type;
if ($periodStats || $companyStats) {
$data = array(
'period' => $periodStats,
'company' => $companyStats,
'campaign' => $campaignStats,
);
} else {
$data = null;
......
......@@ -35,6 +35,33 @@ use App\Model\Common;
class Transactions extends Common
{
public function getStatsByTransactions($feeds, $dates)
{
$adapter = $this->tableGateway->getAdapter();
$sql = 'SELECT TransactionID, SUM(LocalMoney) AS LocalMoney, SUM(USDollarMoney) AS USDollarMoney'
. ' FROM ' . (string) $this->tableGateway->getTable()
. ' WHERE FeedID in (\''.implode('\',\'', $feeds).'\')'
. ' AND (EventDate BETWEEN "'.$dates[0].'" AND "'.$dates[1].'")'
. ' GROUP BY TransactionID'
. ' ORDER BY TransactionID';
$res = $adapter->query($sql, \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
$stats = array(
'period' => [],
'localmoney' => [],
'usdollarmoney' => []
);
foreach($res as $stat_item) {
$stats['period'][] = $stat_item['TransactionID'];
$stats['localmoney'][] = (float)$stat_item['LocalMoney'];
$stats['usdollarmoney'][] = (float)$stat_item['USDollarMoney'];
}
return $stats;
}
public function getStatsByFeeds($feeds, $dates)
{
$adapter = $this->tableGateway->getAdapter();
......
......@@ -55,7 +55,7 @@ $src = $sxml['src'];
$error = $this->error;
$periodStats = $this->periodStats;
$companyStats = $this->companyStats;
$campaignStats = $this->campaignStats;
$current_period = $this->current_period;
$dates = $this->dates;
$cats = $this->cats;
......@@ -111,7 +111,7 @@ $system_link = $this->url('adm.system.actions');
<?php else: ?>
<textarea id="period-stats"><?= ($periodStats ? json_encode($periodStats) : '')?></textarea>
<textarea id="company-stats"><?= ($companyStats ? json_encode($companyStats) : '')?></textarea>
<textarea id="campaign-stats"><?= ($campaignStats ? json_encode($campaignStats) : '')?></textarea>
<section class="b-content__work">
<div class="wrapp" style="position: relative;">
......@@ -175,7 +175,12 @@ $system_link = $this->url('adm.system.actions');
<thead class="metric sortable">
<tr>
<th>
<b class="main-cat date selected"><?= _t('Дата')?></b> / <b class="main-cat company"><?= _t('Кампания')?></b>
<?php if($report == 'common'): ?>
<b class="main-cat date selected"><?= _t('Дата')?></b> / <b class="main-cat campaign"><?= _t('Кампания')?></b>
<?php else: ?>
<b class="main-cat date selected"><?= _t('Транзакция')?></b>
<?php endif; ?>
</th>
<?php foreach($cats as $name): ?>
<th>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment