Перейти к содержимому


Воронка+тип


Сообщений в теме: 12

#1 andypendy

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений

Отправлено 05 Май 2011 - 15:40

Добрый день. При нажатии в воронке продаж на любое поле выдача идет только по статусу. Хотя считает она правильно с учетом типа. Как сделать в Редактирование представления "Воронка продаж" Отображение: с учетом Типа клиента!

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Май 2011 - 16:16

Статус имеет смысл только для строк с типом "Обзвон", поэтому собственно он и не фильтруется при нажатии на плашку со статусом.
Или у Вас как то иначе?

#3 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Май 2011 - 16:18

Кстати считает он по тому же принципу, поэтому странно что у Вас наблюдаются расхождения.

#4 andypendy

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений

Отправлено 05 Май 2011 - 17:29

Я в Типе оставил только два типа Клиент и Не клиент. Оба эти типа имеют статусы (был клиентом дошел до какого-то статуса потом отказался от услуг и мы его перевели в тип Не клиент, а статус оставляем для статистики что бы знать на каком этапе клиенты отваливаюся + продублировал воронку с типом Не клиент, основная с типом Клиент(вместо Обзвон)). Так цифры в воронке правильные, а ссылки идут с фильтром Статус и показывают и клиентов и Не клиентов.

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Май 2011 - 17:46

Т.е. Вы переписывали код подготовки данных отчета для изменения расчета?

Если "да" - выложите код сюда.

#6 andypendy

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений

Отправлено 05 Май 2011 - 18:03

Просмотр сообщенияРазработчик (5.5.2011, 17:46) писал:

Т.е. Вы переписывали код подготовки данных отчета для изменения расчета?

Если "да" - выложите код сюда.

Подготовка данных

if ($_REQUEST['_type'])
{
unset($_SESSION[$ses_id]['on_filter']);

if ($_REQUEST['_type']=="Клиент")
{
$_SESSION[$ses_id]['on_filter'][772] = 1;
$_SESSION[$ses_id]['term_filter'][772] = "=";
$_SESSION[$ses_id]['value_filter'][772] = "Клиент";
}
else
{
$_SESSION[$ses_id]['on_filter'][552] = 1;
$_SESSION[$ses_id]['term_filter'][552] = "=";
$_SESSION[$ses_id]['value_filter'][552] = $_REQUEST['_type'];
}

if ($_REQUEST['_manager'])
{
$_SESSION[$ses_id]['on_filter'][438] = 1;
$_SESSION[$ses_id]['term_filter'][438] = "=";
$_SESSION[$ses_id]['value_filter'][438] = $_REQUEST['_manager'];
}

header("Location: ".$config["site_root"]."/fields.php?table=42");
}

if ($_REQUEST['manager']) $manager = $_REQUEST['manager']; elseif ($user['group_id']==2) $manager = $user['id'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['all'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Постановка задачи' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['new'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Подбор объектов' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['KP'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Подготовка к поездке' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['notified'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Поездка' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['interest'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Пауза после поездки' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['pppez'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Обсуждение условий' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['wish'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Сделка' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['important'] = $row['cnt'];

$sqlQuery = "SELECT count(*) as cnt FROM ".DATA_TABLE."42 WHERE status=0 and f552='Деньги получены' and f772='Клиент'".($manager?(" AND f438='".$manager."'"):"");
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$data['dpluch'] = $row['cnt'];

if ($user['group_id']!=2) $sel_manager = "<option value=''>Все</option>\r\n";
$sqlQuery = "SELECT * FROM ".USERS_TABLE." WHERE ".(($user['group_id']==2)?("id='".$manager."'"):"(group_id=1 or group_id=2) and arc=0");
$result = mysql_query($sqlQuery);
while ($row = mysql_fetch_array($result))
{
$sel_manager.= "<option value='".$row['id']."'".(($row['id']==$manager)?" selected":"").">".$row['fio']."</option>\r\n";
}

$smarty->assign("data", $data);
$smarty->assign("manager", $manager);
$smarty->assign("sel_manager", $sel_manager);




Отображение

{literal}
<style>
.title {
margin: 20px 0;
font-size: 23px;
font-weight: bold;
}
.top {
border-top: 1px solid #E3E3E3;
border-bottom: 1px solid #E3E3E3;
background-color: #F5F5F5;
text-align: center;
padding: 12px 0px 12px 0px;
}
.main {
margin-top: 25px;
margin-bottom: 25px;
}
.mainTable {
border-collapse: collapse;
text-align: center;
height: 70px;
}
</style>

<script type="text/javascript">
function go_clients(type)
{
document.getElementById('_type').value = type;
document.getElementById('report_form').submit();
}
</script>
{/literal}

<div class="title">Воронка продаж</div>

<div class="top">
<b>Менеджеры:</b> <select name="manager">{$sel_manager}</select>
<input type="submit" value="Обновить">
</div>

<div class="main">
<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:90%; background-color:#007fff;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Клиент')">Клиенты: <b>{$data.all}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:80%; background-color:#E3E3E3;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Постановка задачи')">Постановка задачи: <b>{$data.new}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:70%; background-color:#DDDDDD;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Подбор объектов')">Подбор объектов: <b>{$data.KP}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:60%; background-color:#D2D2D2;">
<tr >
<td style="cursor:pointer" onclick="go_clients('Подготовка к поездке')">Подготовка к поездке: <b>{$data.notified}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:50%; background-color:#C1C1C1;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Поездка')">Поездка: <b>{$data.interest}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:40%; background-color:#e13c3c;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Пауза после поездки')">Пауза после поездки: <b>{$data.pppez}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:30%; background-color:#B1B1B1;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Обсуждение условий')">Обсуждение условий: <b>{$data.wish}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:20%; background-color:#A5A5A5;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Сделка')">Сделка: <b>{$data.important}</b></td>
</tr>
</table>

<table class="mainTable print_border" align="center" cellspacing="0" cellpadding="0" style="width:12%; background-color:#41ff7b;">
<tr>
<td style="cursor:pointer" onclick="go_clients('Деньги получены')">Деньги получены: <b>{$data.dpluch}</b></td>
</tr>
</table>
</div>
<input type=hidden name="_manager" value="{$manager}">
<input type=hidden name="_type" id="_type">

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Май 2011 - 18:13

Добавьте перед кодом

$_SESSION[$ses_id]['on_filter'][552] = 1;
$_SESSION[$ses_id]['term_filter'][552] = "=";
$_SESSION[$ses_id]['value_filter'][552] = $_REQUEST['_type'];

код

$_SESSION[$ses_id]['on_filter'][772] = 1;
$_SESSION[$ses_id]['term_filter'][772] = "=";
$_SESSION[$ses_id]['value_filter'][772] = "Клиент";

В результате получите 2 критерия отбора записей: по типу и статусу.


P.S. Большие куски кода лучше помещать в тэги "code" - так лучше читается сообщение:

echo 111;


#8 andypendy

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений

Отправлено 05 Май 2011 - 18:20

Ура! Теперь всё ОК!
Сегодня перечислили вам деньги за лицензию. Спасибо.

#9 andypendy

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений

Отправлено 05 Май 2011 - 18:31

Да забыл спросить, если я делаю "контрагенты-все" с фильтром по менеджерам или по типу, то воронка учитывает этот фильтр и опять не корректно выдает. Если "контрагенты-все" фильтр пуст , то всё ок. Как отменить все фильтры для воронки?

#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 06 Май 2011 - 10:18

Не совсем понял, что за фильтры Вы имеете ввиду. "Все" - это все записи, причем тут фильтры по менеджеру и типу?

#11 andypendy

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений

Отправлено 06 Май 2011 - 11:25

Все -это все записи, но если я в все записи добавлю условие например `Менеджер`='{current}', то в воронке при нажатии при всех менеджерах любое поле будет фильтроваться по менеджеру который вошел в систему.

#12 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 06 Май 2011 - 11:45

Ну дак это естественно, если в фильтре по умолчанию (который и открывается при нажатии на плашку в отчете Воронка) стоит какое-либо ограничение на доступ, то результат поиска наложится на него. Согласитесь было бы странно, если бы вдруг менеджер увидел то что ему видеть не положено. А если он все же должен видеть все, тогда какой смысл задавать эти ограничения в фильтре по умолчанию? Просто уберите их.

Кстати, если в стандартной конфигурации Вы заходите под пользователем группы Менеджеры, то он и в отчете всех записей не увидит, а только свои. Так что тут никакого противоречия нет. Насколько я вижу, в Вашем коде в этом плане ничего не изменено.

#13 andypendy

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений

Отправлено 06 Май 2011 - 12:06

Спасибо.





Количество пользователей, читающих эту тему: 4

0 пользователей, 4 гостей, 0 анонимных