Логика перераспределения заказов по группам таблицы после изменения их статусов

parent 8433e080
......@@ -31,11 +31,7 @@ return [
'title' => 'Сводный отчет',
'type' => 'feed_stat',
'fields' => ['Views','Clicks','Orders','OrderSum', 'AdMoney'],
//'fields' => ['Views','Clicks','Orders','OrderSum'], // временно
'main_cat' => [
['name' => 'date', 'title' => 'Дата', 'isSorted' => true],
//['name' => 'campaign','title' => 'Кампания','isSorted' => true]
],
'main_cat' => ['name' => 'date', 'title' => 'Дата', 'isSorted' => true],
'cats' => [
'Views' => 'Показы',
'Clicks' => 'Клики',
......@@ -48,10 +44,7 @@ return [
'title' => 'Транзакции',
'type' => 'feed_transactions',
'fields' => ['Views','Clicks','Orders','OrderSum', 'AdMoney'],
//'fields' => ['Views','Clicks','Orders','OrderSum'], // временно
'main_cat' => [
['name' => 'order', 'title' => '#OrderID', 'isSorted' => false]
],
'main_cat' => ['name' => 'order', 'title' => '#OrderID', 'isSorted' => false],
'cats' => [
'Timestamp' => 'Время<br />Дата',
'Basket' => 'Состав корзины',
......
......@@ -187,6 +187,20 @@ input[type="checkbox"]
font-size: 12px;
}
/* Фильтрация строк в таблице transactions */
table.table-striped.admin.transactions .transaction-item
{
display: none;
}
table.table-striped.admin.transactions.all .transaction-item,
table.table-striped.admin.transactions.approved .transaction-item.approved,
table.table-striped.admin.transactions.confirmed .transaction-item.confirmed,
table.table-striped.admin.transactions.rejected .transaction-item.rejected
{
display: table-row;
}
.table.table-striped.admin thead.metric.sortable tr b
{
cursor: pointer;
......
......@@ -8,7 +8,10 @@ $(document).ready(function(){
currentActiveLine,
currencyFields = ['admoney', 'salemoney', 'usdollarmoney', 'localmoney', 'AdMoney', 'OrderSum', 'Price'],
notFormatFields = ['Timestamp', 'Basket', 'ViewID'],
dateTimeFields = ['Timestamp', 'period'];
dateTimeFields = ['Timestamp', 'period'],
trClassConfirmed = 'confirmed',
trClassRejected = 'rejected',
trClassApproved = 'approved';
// Шаблон содержимого ячейки Basket
var templateBasketContent = _.template('\n'+
......@@ -147,12 +150,28 @@ $(document).ready(function(){
dataTableForSort.forEach(function(item){
if (dataLineChartStat.report == 'transactions') {
$row = $('<tr class="transaction-item">');
var
feedId = item['ViewID'][0],
orderId = item['period'],
orderStatus = dataLineChartStat.ordersStatus[feedId][orderId];
orderStatus = dataLineChartStat.ordersStatus[feedId][orderId],
trClass;
if (!orderStatus) {
trClass = trClassConfirmed;
} else {
if (orderStatus.approved) {
trClass = trClassApproved;
}
else if (!orderStatus.confirmed) {
trClass = trClassRejected;
}
else {
trClass = trClassConfirmed;
}
}
$row = $('<tr class="transaction-item ' + trClass + '">');
$row.append($('<td class="OrderID">').append(templateOrderIDContent({
data: {
......
......@@ -277,7 +277,21 @@ $(document).ready(function(){
(function(){
var
$tableStat = $('table.transactions');
$tableStat = $('table.transactions'),
$ordersSwitcher = $('.b-filter__switch.category-orders .b-filter__switch-item'),
switcherActiveClass = 'm-filter__switch-item_active';
// Переключение статусов заказов:
$ordersSwitcher.on('click', function() {
var $this = $(this);
if (!$this.hasClass(switcherActiveClass)) {
$ordersSwitcher.removeClass(switcherActiveClass);
$this.addClass(switcherActiveClass);
$tableStat.removeClass('all').removeClass('approved').removeClass('confirmed').removeClass('rejected');
$tableStat.addClass($this.data('order-category'));
}
});
// Клик на галочку подтверждения заказа:
$tableStat.on('change', 'td.OrderID input', function(e) {
......@@ -286,6 +300,7 @@ $(document).ready(function(){
$this = $(this),
$spanWrap = $this.parent('span.order-id'),
action = $tableStat.data('link'),
$orderTr = $this.parents('tr'),
data = {
'toggle_confirmed': 1,
'confirmed': $this.prop( "checked" ) ? 1 : 0,
......@@ -299,17 +314,14 @@ $(document).ready(function(){
type: 'POST',
data: data,
success: function(data) {
$this.prop("disabled", false);
/*
console.log('AAA success ', data);
if (data.result) {
if (isEnabled) {
$siteTr.removeClass('disabled');
} else {
$siteTr.addClass('disabled');
}
$orderTr.removeClass('confirmed').removeClass('rejected');
$orderTr.addClass((data.confirmed) ? 'confirmed' : 'rejected');
} else {
$this.prop("checked", !$this.prop( "checked" ))
}
*/
$this.prop("disabled", false);
},
error: function(rew, status, err) {
console.log(status, err);
......@@ -323,6 +335,10 @@ $(document).ready(function(){
// Клик на Утвердить заказы:
$('a.btn.approve').on('click', function(){
if (!confirm("Утвердить заказы за выбранный период?")) return false;
var
action = $tableStat.data('link'),
$ordersItems = $('tbody > tr.transaction-item:not(.total-orders) td.OrderID span.order-id', $tableStat),
......@@ -349,10 +365,16 @@ $(document).ready(function(){
data: data,
success: function(data) {
console.log(status, data);
dataOrders.forEach(function(item, i){
var $inputItem = $('tbody td.OrderID span.order-id[data-order-id="' + item.orderId + '"][data-feed-id="' + item.feedId + '"] input', $tableStat);
$inputItem.prop("disabled", true);
});
if (data.result) {
dataOrders.forEach(function(item, i){
var
$inputItem = $('tbody td.OrderID span.order-id[data-order-id="' + item.orderId + '"][data-feed-id="' + item.feedId + '"] input', $tableStat),
$orderTr = $inputItem.parents('tr');
$inputItem.prop("disabled", true);
$orderTr.removeClass('confirmed').removeClass('rejected').addClass('approved');
});
}
},
error: function(rew, status, err) {
console.log(status, err);
......
......@@ -377,7 +377,10 @@ class Cabinet extends Common
if(!$res) {
throw new \Exception('DB error');
}
} else {
}
/*
else {
// Этот кусок по логике не используется, т.к. не можем менять confirmed у заказов approved
$data = array(
'feed_id' => $feed_id,
'order_id' => $order_id,
......@@ -389,9 +392,9 @@ class Cabinet extends Common
if(!$res) {
throw new \Exception('DB error');
}
}
}*/
}
return new JsonResponse($order_id);
} else {
$data = array(
......@@ -405,8 +408,12 @@ class Cabinet extends Common
if(!$res) {
throw new \Exception('DB error');
}
return new JsonResponse($order_id);
}
return new JsonResponse(array(
'result' => true,
'data' => $res,
'confirmed' => (bool)$data_request['confirmed']
));
}
}
......@@ -453,8 +460,11 @@ class Cabinet extends Common
}
}
}
return new JsonResponse($approved_orders);
return new JsonResponse(array(
'result' => true,
'data' => $approved_orders,
));
}
......
......@@ -59,13 +59,12 @@ $error = $this->error;
if (!$error) {
$periodStats = $this->periodStats;
//$campaignStats = $this->campaignStats;
$current_period = $this->current_period;
$dates = $this->dates;
$current_report = $this->current_report;
$report_conf = $this->report_conf;
$report_title = $report_conf['title'];
$report_main_cat = $report_conf['main_cat'];
$main_cat = $report_conf['main_cat'];
$report_cats = $report_conf['cats'];
$reports_list = $this->reports_list;
$periods_list = $this->periods_list;
......@@ -106,10 +105,6 @@ if (!$error) {
<textarea id="period-stats"><?= ($periodStats ? json_encode($periodStats, JSON_UNESCAPED_UNICODE) : '')?></textarea>
<textarea id="report-cats"><?= ($report_cats ? json_encode($report_cats, JSON_UNESCAPED_UNICODE) : '')?></textarea>
<?php /* ?>
<textarea id="campaign-stats"><?= ($campaignStats ? json_encode($campaignStats) : '')?></textarea>
<?php */ ?>
<section class="b-content__work">
<div class="wrapp" style="position: relative;">
......@@ -137,6 +132,7 @@ if (!$error) {
</div>
<?php */ ?>
<?php /* Переключатель отчеты категории */ ?>
<div class="b-filter__switch display">
<?php foreach($reports_list as $report_name => $report_title): ?>
<span class="b-filter__switch-item text <?php if($current_report == $report_name): ?>m-filter__switch-item_active<?php endif; ?>"><a href="<?= $this->url('user.cabinet', ['lang' => $this->lang, 'report' => $report_name]) ?>"><?= _t($report_title) ?></a></span>
......@@ -177,23 +173,22 @@ if (!$error) {
<?php /* Таблица */ ?>
<?php if ($current_report == 'transactions'): ?>
<div class="b-filter__switch display category-orders">
<span class="b-filter__switch-item text m-filter__switch-item_active" data-orders-category="all"><?= _t('Все')?></span>
<span class="b-filter__switch-item text" data-orders-category="approved"><?= _t('Согласованны')?></span>
<span class="b-filter__switch-item text" data-orders-category="confirmed"><?= _t('Приняты')?></span>
<span class="b-filter__switch-item text" data-orders-category="not-confirmed"><?= _t('Отклонены')?></span>
<?php /* Переключатель статусов заказов */ ?>
<div class="b-filter__switch category-orders">
<span class="b-filter__switch-item text m-filter__switch-item_active" data-order-category="all"><?= _t('Все')?></span>
<span class="b-filter__switch-item text" data-order-category="approved"><?= _t('Согласованны')?></span>
<span class="b-filter__switch-item text" data-order-category="confirmed"><?= _t('Приняты')?></span>
<span class="b-filter__switch-item text" data-order-category="rejected"><?= _t('Отклонены')?></span>
</div>
<?php endif ?>
<div id="table-stat" class="b-table_wrapp report">
<div class="b-content__loading"></div>
<table id="table-line" class="table table-striped admin <?= $current_report ?>" data-link="<?=$data_request_link ?>">
<table id="table-line" class="table table-striped admin <?= $current_report ?> all" data-link="<?=$data_request_link ?>">
<thead class="metric sortable">
<tr>
<th class="period" data-id="period">
<?php foreach($report_main_cat as $main_cat): ?>
<b class="main-cat selected <?php if(!$main_cat['isSorted']): ?>not-sorted<?php endif; ?>" data-cat="<?= $main_cat['name'] ?>"><?= _t($main_cat['title'])?></b>
<?php endforeach; ?>
<b class="main-cat selected <?php if(!$main_cat['isSorted']): ?>not-sorted<?php endif; ?>" data-cat="<?= $main_cat['name'] ?>"><?= _t($main_cat['title'])?></b>
</th>
<?php foreach($report_cats as $name => $title): ?>
<th class="<?= $name ?>" data-id="<?= $name ?>">
......@@ -204,11 +199,12 @@ if (!$error) {
<b class="cat" id="<?= $name ?>"><?= _t($title)?></b>
<?php endif; ?>
<?php if($current_report == 'transactions'): ?>
<?php $not_sorted = (in_array($name, ['Basket', 'ViewID'])) ? 'not-sorted' : ''; ?>
<?php if ($name == 'Basket'): ?>
<b class="cat not-sorted" id="<?= $name ?>"><?= _t($title)?></b><br />
<b class="cat <?= $not_sorted ?>" id="<?= $name ?>"><?= _t($title)?></b><br />
<b class="basket-link not-sorted">Товар</b> <b class="quantity not-sorted">Кол-во</b> <b class="price not-sorted">Цена</b>
<?php else: ?>
<b class="cat" id="<?= $name ?>"><?= _t($title)?><b class="arrow asc">&#9650;</b><b class="arrow desc">&#9660;</b></b>
<b class="cat <?= $not_sorted ?>" id="<?= $name ?>"><?= _t($title)?><b class="arrow asc">&#9650;</b><b class="arrow desc">&#9660;</b></b>
<?php endif; ?>
<?php endif; ?>
</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