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


Права на отчеты


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

#1 relise

    Участник

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

Отправлено 26 Июнь 2013 - 12:52

Добрый день!
Установленна КБ Версия: 1.9.8 ревизия 9053 локальная.
Создал группу "Старшие менеджеры" настроил права, всё нормально, таблицы и формы отображаются и редактируются как надо.
Но вот отчеты по продажам, по событиям выводятся не как у администраторов по всем менеджерам, а только отчет по текущему пользователю.
Отсюда вопрос, как группе "Старшие менеджеры" предоставить доступ у отчетам по всем менеджерам (как у администраторов)?
Спасибо!

#2 CbCoder

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

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

Отправлено 26 Июнь 2013 - 14:04

Настройки отчета зависят исключительно от его кода, права влияют только на его отображение в вернем меню. Т.е. вам необходимо изменить сам код отчета.

#3 relise

    Участник

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

Отправлено 26 Июнь 2013 - 14:26

Хорошо! Задам вопрос по другому. Где в коде представления указывается, что данный отчет в полном виде можно выводить только администраторам? И что нужно прописать, чтоб группе "Старшие менеджеры" он тоже выводился. В моем случае у администраторов выводится отчет "Холодные звонки", он не менялся.

#4 CbCoder

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

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

Отправлено 26 Июнь 2013 - 15:09

Код представлений в стандартной конфигурации может существенно меняться в зависимости от времени выпущенного дистрибутива, поэтому сначала вам необходимо выложить код отчета здесь. Конкретно, содержимое поля "Подготовка данных".

#5 relise

    Участник

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

Отправлено 26 Июнь 2013 - 15:11

Пожалуйста

  if ($_REQUEST['date1']) $date1 = date("d.m.Y",strtotime(form_eng_time($_REQUEST['date1'])));
  else $date1 = date("d.m.Y", mktime(0,0,0,date("m"),date("d")-7,date("Y")));
 
  if ($_REQUEST['date2']) $date2 = date("d.m.Y",strtotime(form_eng_time($_REQUEST['date2'])));
  else $date2 = date("d.m.Y");
  $date1_fet = form_eng_time($date1.' 00:00:00');
  $date2_fet = form_eng_time($date2.' 23:59:59');
 
  if ($_REQUEST['_type'] || $_REQUEST['_manager'] || $_REQUEST['_dates'])
    {
	  reset_filters(62);
	  if ($_REQUEST['_dates']) set_filter(724, "period", $date1." 00:00:00", $date2." 23:59:59");
	  if ($_REQUEST['_manager']) set_filter(727, "=", intval($_REQUEST['_manager']));
	  if ($_REQUEST['_type']) set_filter(773, "=", form_input($_REQUEST['_type']));
	  header("Location: ".$config["site_root"]."/fields.php?table=62");
    }
   
  if ($_REQUEST['manager']) $manager = intval($_REQUEST['manager']); elseif ($user['group_id']!=1) $manager = $user['id'];
 
  $result = sql_select_field(FIELDS_TABLE,"`type_value`","`id`='773'");
  $row = sql_fetch_assoc($result);
  $types = explode("\r\n", $row['type_value']);
  $h_pos = array();
  $data_date = array();
  $list_id_manager = '';
  $sums_total = 0;
  if (!$manager) {
    $data_total = array();
    $data_total['Имя'] = 'Всего';
  } 
 
  if ($manager) $sqlCond = "`user`.`id`='".$manager."'";
  else $sqlCond = "(`group`.`id`=1 or `group`.`id`=2 or `group`.`pid`=1 or `group`.`pid`=2) AND `user`.`group_id`=`group`.`id` AND `user`.`arc`=0";
 
  $result = sql_query("SELECT `user`.`id`, `user`.`fio` FROM `".USERS_TABLE."` AS `user`, `".GROUPS_TABLE."` AS `group` WHERE $sqlCond");
  while ($row = sql_fetch_assoc($result))
    {
	  $id_manager = $row['id'];
	  $name_manager = $row['fio'];
	  $list_id_manager .= $id_manager.',';
	  $sums[$id_manager] = 0;
	  $data_m[$id_manager]['Имя'] = $name_manager;
	  for ($i = 0; $i < count($types); $i++)
	    {	   
		  $subresult = sql_select_field("`".DATA_TABLE."62`","COUNT(*) AS `cnt`","`status`='0' and `f724`>='",$date1_fet,"' AND `f724`<='",$date2_fet,"' AND `f727`='$id_manager' AND `f773`='",$types[$i],"' AND `status`='0'");
		  $subrow = sql_fetch_assoc($subresult);
		  $data_m[$id_manager][$types[$i]] = $subrow['cnt'];
		  if (!$manager) $data_total[$types[$i]] += $subrow['cnt'];
		 
		  $sums[$id_manager] += $subrow['cnt'];
		  if (!$manager) $sums_total += $subrow['cnt'];
		  if (!in_array($types[$i], $h_pos)) $h_pos[] = $types[$i];
	    }
	   
	  $data_m[$id_manager]['Всего'] = "$sums[$id_manager]";
	  if (!in_array('Всего', $h_pos)) $h_pos[] = 'Всего';
    }
 
  if (!$manager) $data_total['Всего'] = "$sums_total";
 
  if ($user['group_id']==1)
	  $sel_manager = "<option value=''>Все</option>\r\n";
  $result = sql_query("SELECT DISTINCT `user`.`id`, `user`.`fio` FROM `".USERS_TABLE."` AS `user`, `".GROUPS_TABLE."` AS `group` WHERE `user`.`arc`=0 AND `user`.`group_id`!='777'");
  while ($row = sql_fetch_assoc($result))
	  $sel_manager.= "<option value='".$row['id']."'".(($row['id']==$manager)?" selected":"").">".$row['fio']."</option>\r\n";
  $result = sql_select_field("`".SCHEMES_TABLE."`","`color3`","`active`='1'");
  $row = sql_fetch_assoc($result);
  // для графика
  $date1_fet=date('d.m',strtotime($date1_fet)).".".(date('Y',strtotime($date1_fet))-2);
  $list_id_manager = substr($list_id_manager,0,-1);
  $tCn=0;
  $y_min = 0;
  $y_max = 0;
  foreach($types as $val)
  {
    $full=0;
    $subresult = sql_select_field("`".DATA_TABLE."62`"," COUNT(*) AS `cnt`, DATE_FORMAT(`f724`,'%Y-%m-%d') AS `date_act`, `f773` AS `action`","`status`='0' and `f724`>='",$date1_fet,"' AND `f724`<='",$date2_fet,"' AND `f773` LIKE '",$val,"' AND `status`='0' GROUP BY `action`, `date_act` ORDER BY `date_act`");
    while ($row = sql_fetch_assoc($subresult)) {
	  $full+=$row['cnt'];
	  $data_date [$row['action']] [$row['date_act']] = $full;
    }
    if(!$data_date [$row['action']])$tCn--;
    $tCn++;
  }
 
  if($tCn==0)$data_date [$types[0]][date('Y-m-d',strtotime($date1))] = 0;
 
  $types2 = $types;
  $d1 = substr(form_eng_time($date1),0,10); 
  $d2 = substr(form_eng_time(date('d.m.Y',strtotime($date2)+24*60*60)),0,10);
  $date_cur = $d1;
  $data_for_gr = array();
 
  // заполняем данными и удаляем промежуточные нули
  //$y_max = 0;
  foreach($types2 as $val) {
    $data_for_gr[$val] = array();
    if ($data_date[$val]) {
	  foreach($data_date[$val] as $k=>$v) {
	    //$data_for_gr[$val][date('Y-m-d',strtotime($k)-24*60*60)] = 0;
	    //$data_for_gr[$val][date('Y-m-d',strtotime($k)+24*60*60)] = 0;
	  }

	  foreach($data_date[$val] as $k=>$v) {
	    $data_for_gr[$val][$k] = $v;
	    if ($y_max < $v) $y_max = $v;
	  }
	  ksort($data_for_gr[$val]);
    }
  }
  //$y_max++;
 
  if($y_max>0)$y_max=$y_max+($y_max*0.1);
  elseif($y_min>0)$y_max=$y_max+($y_min*0.1);
  else $y_max=$y_max-($y_min*0.1);
   
  if($y_max < 4) $y_max = 4;

  // заполняем серии
  $is_graph = false;
  $graph_data = array();
  foreach($types2 as $val) {
    if ($data_for_gr[$val]) {
	  $is_graph = true or $is_graph;
    }
    $graph_data[] = $data_for_gr[$val];
  } 
 
  $d1 = substr(form_eng_time($date1),0,10); 
  $d2 = substr(form_eng_time($date2),0,10);
 
  $graph_settings = array('type_graph' => 'LineDate'
			  ,'div_id' => 'chart1'
			  ,'series_names' => "'".implode("','",$types2)."'"
			  ,'x_max' => $d2
			  ,'x_min' => $d1
			  ,'y_max' => $y_max
			  ,'zoom' => true
		    );
  $graph = draw_graph($graph_data, $graph_settings);
  $is_graph=false;
  if ($_REQUEST['xsl'] == 1)
    {
	  $xsl  = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>\r\n";
	  $xsl .= "<table>\r\n";
	  $xsl .= "<tr><td><h1>Холодные звонки</h1></td></tr>\r\n";
	  $xsl .= "<tr><td><h3>Период с: $date1 по $date2</h3></td></tr>\r\n";
	  $xsl .= "</table>";
	  $xsl .= "<table>\r\n<tr><td width=\"100\">&nbsp;</td>\r\n";
	  foreach ($h_pos AS $s_pos) $xsl .= "<td width=\"100\" style=\"text-align: center\" align=\"center\"><b>$s_pos</b></td>\r\n";
	  $xsl .= "</tr>\r\n";
	  $pos = 1;
	  foreach ($data_m AS $m_id => $m_data)
	    {
		  $xsl .= "<tr>";
  
		  foreach ($m_data AS $value)
		    {
			  if ($pos % 2) $xsl .= "<td style=\"background-color: #d0d0d0; text-align: center\" bgcolor=\"#d0d0d0\" align=\"center\">$value</td>\r\n";
			  else $xsl .= "<td style=\"text-align: center\" align=\"center\">$value</td>\r\n";
		    }
		  $xsl .= "</tr>\r\n";
		  $pos += 1;
	    }
	  $xsl .= "</table></body></html>";
	  $name = 'perfomance_report.xls'; 
	  header("Content-type: application/vnd.ms-excel; charset=utf-8");
	  header("Content-Disposition: attachment; filename=".$name);
	  echo $xsl;
	  exit;
    }
  else
    {
	  if ($user['group_id'] == 1) $smarty->assign("adm_rules", 1);
	  $smarty->assign("color3", $row['color3']);
	  $smarty->assign("date1", $date1);
	  $smarty->assign("date2", $date2);
	  $smarty->assign("data", $data_m);
	  if (!$manager) $smarty->assign("data_total", $data_total);  
	  $smarty->assign("graph", $graph);		
	  $smarty->assign("is_graph", $is_graph);	  
	  $smarty->assign("h_pos", $h_pos);
	  $smarty->assign("manager", $manager);
	  $smarty->assign("sel_manager", $sel_manager);
	  $smarty->assign("user_group", $user['group_id']);
    }


#6 relise

    Участник

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

Отправлено 26 Июнь 2013 - 15:15

Предполагаю, что именно в этой строке определяется кому выводить отчет

if ($user['group_id'] == 1) $smarty->assign("adm_rules", 1);


#7 CbCoder

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

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

Отправлено 26 Июнь 2013 - 15:48

  if ($_REQUEST['date1']) $date1 = date("d.m.Y",strtotime(form_eng_time($_REQUEST['date1'])));
  else $date1 = date("d.m.Y", mktime(0,0,0,date("m"),date("d")-7,date("Y")));

  if ($_REQUEST['date2']) $date2 = date("d.m.Y",strtotime(form_eng_time($_REQUEST['date2'])));
  else $date2 = date("d.m.Y");
  $date1_fet = form_eng_time($date1.' 00:00:00');
  $date2_fet = form_eng_time($date2.' 23:59:59');

  if ($_REQUEST['_type'] || $_REQUEST['_manager'] || $_REQUEST['_dates'])
	{
	  reset_filters(62);
	  if ($_REQUEST['_dates']) set_filter(724, "period", $date1." 00:00:00", $date2." 23:59:59");
	  if ($_REQUEST['_manager']) set_filter(727, "=", intval($_REQUEST['_manager']));
	  if ($_REQUEST['_type']) set_filter(773, "=", form_input($_REQUEST['_type']));
	  header("Location: ".$config["site_root"]."/fields.php?table=62");
	}
  
  if ($_REQUEST['manager']) $manager = intval($_REQUEST['manager']); elseif ($user['group_id']==2) $manager = $user['id'];

  $result = sql_select_field(FIELDS_TABLE,"`type_value`","`id`='773'");
  $row = sql_fetch_assoc($result);
  $types = explode("\r\n", $row['type_value']);
  $h_pos = array();
  $data_date = array();
  $list_id_manager = '';
  $sums_total = 0;
  if (!$manager) {
	$data_total = array();
	$data_total['Имя'] = 'Всего';
  }

  if ($manager) $sqlCond = "`user`.`id`='".$manager."'";
  else $sqlCond = "`user`.`group_id`=`group`.`id` AND `user`.`arc`=0";

  $result = sql_query("SELECT `user`.`id`, `user`.`fio` FROM `".USERS_TABLE."` AS `user`, `".GROUPS_TABLE."` AS `group` WHERE $sqlCond");
  while ($row = sql_fetch_assoc($result))
	{
	  $id_manager = $row['id'];
	  $name_manager = $row['fio'];
	  $list_id_manager .= $id_manager.',';
	  $sums[$id_manager] = 0;
	  $data_m[$id_manager]['Имя'] = $name_manager;
	  for ($i = 0; $i < count($types); $i++)
		{	  
		  $subresult = sql_select_field("`".DATA_TABLE."62`","COUNT(*) AS `cnt`","`status`='0' and `f724`>='",$date1_fet,"' AND `f724`<='",$date2_fet,"' AND `f727`='$id_manager' AND `f773`='",$types[$i],"' AND `status`='0'");
		  $subrow = sql_fetch_assoc($subresult);
		  $data_m[$id_manager][$types[$i]] = $subrow['cnt'];
		  if (!$manager) $data_total[$types[$i]] += $subrow['cnt'];
		
		  $sums[$id_manager] += $subrow['cnt'];
		  if (!$manager) $sums_total += $subrow['cnt'];
		  if (!in_array($types[$i], $h_pos)) $h_pos[] = $types[$i];
		}
	  
	  $data_m[$id_manager]['Всего'] = "$sums[$id_manager]";
	  if (!in_array('Всего', $h_pos)) $h_pos[] = 'Всего';
	}

  if (!$manager) $data_total['Всего'] = "$sums_total";

  if ($user['group_id']==1)
	  $sel_manager = "<option value=''>Все</option>\r\n";
  $result = sql_query("SELECT DISTINCT `user`.`id`, `user`.`fio` FROM `".USERS_TABLE."` AS `user`, `".GROUPS_TABLE."` AS `group` WHERE `user`.`arc`=0 AND `user`.`group_id`!='777'");
  while ($row = sql_fetch_assoc($result))
	  $sel_manager.= "<option value='".$row['id']."'".(($row['id']==$manager)?" selected":"").">".$row['fio']."</option>\r\n";
  $result = sql_select_field("`".SCHEMES_TABLE."`","`color3`","`active`='1'");
  $row = sql_fetch_assoc($result);
  // для графика
  $date1_fet=date('d.m',strtotime($date1_fet)).".".(date('Y',strtotime($date1_fet))-2);
  $list_id_manager = substr($list_id_manager,0,-1);
  $tCn=0;
  $y_min = 0;
  $y_max = 0;
  foreach($types as $val)
  {
	$full=0;
	$subresult = sql_select_field("`".DATA_TABLE."62`"," COUNT(*) AS `cnt`, DATE_FORMAT(`f724`,'%Y-%m-%d') AS `date_act`, `f773` AS `action`","`status`='0' and `f724`>='",$date1_fet,"' AND `f724`<='",$date2_fet,"' AND `f773` LIKE '",$val,"' AND `status`='0' GROUP BY `action`, `date_act` ORDER BY `date_act`");
	while ($row = sql_fetch_assoc($subresult)) {
	  $full+=$row['cnt'];
	  $data_date [$row['action']] [$row['date_act']] = $full;
	}
	if(!$data_date [$row['action']])$tCn--;
	$tCn++;
  }

  if($tCn==0)$data_date [$types[0]][date('Y-m-d',strtotime($date1))] = 0;

  $types2 = $types;
  $d1 = substr(form_eng_time($date1),0,10);
  $d2 = substr(form_eng_time(date('d.m.Y',strtotime($date2)+24*60*60)),0,10);
  $date_cur = $d1;
  $data_for_gr = array();

  // заполняем данными и удаляем промежуточные нули
  //$y_max = 0;
  foreach($types2 as $val) {
	$data_for_gr[$val] = array();
	if ($data_date[$val]) {
	  foreach($data_date[$val] as $k=>$v) {
		//$data_for_gr[$val][date('Y-m-d',strtotime($k)-24*60*60)] = 0;
		//$data_for_gr[$val][date('Y-m-d',strtotime($k)+24*60*60)] = 0;
	  }

	  foreach($data_date[$val] as $k=>$v) {
		$data_for_gr[$val][$k] = $v;
		if ($y_max < $v) $y_max = $v;
	  }
	  ksort($data_for_gr[$val]);
	}
  }
  //$y_max++;

  if($y_max>0)$y_max=$y_max+($y_max*0.1);
  elseif($y_min>0)$y_max=$y_max+($y_min*0.1);
  else $y_max=$y_max-($y_min*0.1);
  
  if($y_max < 4) $y_max = 4;

  // заполняем серии
  $is_graph = false;
  $graph_data = array();
  foreach($types2 as $val) {
	if ($data_for_gr[$val]) {
	  $is_graph = true or $is_graph;
	}
	$graph_data[] = $data_for_gr[$val];
  }

  $d1 = substr(form_eng_time($date1),0,10);
  $d2 = substr(form_eng_time($date2),0,10);

  $graph_settings = array('type_graph' => 'LineDate'
			  ,'div_id' => 'chart1'
			  ,'series_names' => "'".implode("','",$types2)."'"
			  ,'x_max' => $d2
			  ,'x_min' => $d1
			  ,'y_max' => $y_max
			  ,'zoom' => true
			);
  $graph = draw_graph($graph_data, $graph_settings);
  $is_graph=false;
  if ($_REQUEST['xsl'] == 1)
	{
	  $xsl  = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>\r\n";
	  $xsl .= "<table>\r\n";
	  $xsl .= "<tr><td><h1>Холодные звонки</h1></td></tr>\r\n";
	  $xsl .= "<tr><td><h3>Период с: $date1 по $date2</h3></td></tr>\r\n";
	  $xsl .= "</table>";
	  $xsl .= "<table>\r\n<tr><td width=\"100\">&nbsp;</td>\r\n";
	  foreach ($h_pos AS $s_pos) $xsl .= "<td width=\"100\" style=\"text-align: center\" align=\"center\"><b>$s_pos</b></td>\r\n";
	  $xsl .= "</tr>\r\n";
	  $pos = 1;
	  foreach ($data_m AS $m_id => $m_data)
		{
		  $xsl .= "<tr>";
  
		  foreach ($m_data AS $value)
			{
			  if ($pos % 2) $xsl .= "<td style=\"background-color: #d0d0d0; text-align: center\" bgcolor=\"#d0d0d0\" align=\"center\">$value</td>\r\n";
			  else $xsl .= "<td style=\"text-align: center\" align=\"center\">$value</td>\r\n";
			}
		  $xsl .= "</tr>\r\n";
		  $pos += 1;
		}
	  $xsl .= "</table></body></html>";
	  $name = 'perfomance_report.xls';
	  header("Content-type: application/vnd.ms-excel; charset=utf-8");
	  header("Content-Disposition: attachment; filename=".$name);
	  echo $xsl;
	  exit;
	}
  else
	{
	  if ($user['group_id'] == 1) $smarty->assign("adm_rules", 1);
	  $smarty->assign("color3", $row['color3']);
	  $smarty->assign("date1", $date1);
	  $smarty->assign("date2", $date2);
	  $smarty->assign("data", $data_m);
	  if (!$manager) $smarty->assign("data_total", $data_total);  
	  $smarty->assign("graph", $graph);		
	  $smarty->assign("is_graph", $is_graph);	  
	  $smarty->assign("h_pos", $h_pos);
	  $smarty->assign("manager", $manager);
	  $smarty->assign("sel_manager", $sel_manager);
	  $smarty->assign("user_group", $user['group_id']);
	}


#8 CbCoder

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

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

Отправлено 26 Июнь 2013 - 15:53

Просмотр сообщенияrelise (26 Июнь 2013 - 15:15) писал:

Предполагаю, что именно в этой строке определяется кому выводить отчет

if ($user['group_id'] == 1) $smarty->assign("adm_rules", 1);

Нет, эта переменная никакого отношения к выводу данных не имеет.

#9 relise

    Участник

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

Отправлено 26 Июнь 2013 - 15:54

Спасибо! Заработало. Прошу сообщить, что поменяли, чтоб я потом не задавал идиотских вопросов.

#10 relise

    Участник

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

Отправлено 26 Июнь 2013 - 15:58

Если можно подправьте ещё отчет по задачам, по такой же аналогии.

#11 CbCoder

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

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

Отправлено 26 Июнь 2013 - 15:59

if ($_REQUEST['manager']) $manager = intval($_REQUEST['manager']); elseif ($user['group_id']!=1) $manager = $user['id'];
// --->
if ($_REQUEST['manager']) $manager = intval($_REQUEST['manager']); elseif ($user['group_id']==2) $manager = $user['id'];

else $sqlCond = "(`group`.`id`=1 or `group`.`id`=2 or `group`.`pid`=1 or `group`.`pid`=2) AND `user`.`group_id`=`group`.`id` AND `user`.`arc`=0";
// --->
else $sqlCond = "`user`.`group_id`=`group`.`id` AND `user`.`arc`=0";


#12 relise

    Участник

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

Отправлено 26 Июнь 2013 - 16:06

Спасибо! за подсказку. Почти разобрался.
Если не сложно подправьте ещё отчет по задачам, по такой же аналогии.
Огромнейшее Вас спасибо!

#13 CbCoder

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

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

Отправлено 26 Июнь 2013 - 16:14

Ну там уж вы сами подправьте, мы можем показать-подсказать, но за вас то делать не будем.

#14 CbCoder

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

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

Отправлено 26 Июнь 2013 - 16:17

Или подождите пару дней, выпустим отчеты с возможностью добавления групп.

#15 relise

    Участник

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

Отправлено 26 Июнь 2013 - 16:18

ok. в любом случае спасибо!

#16 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 18 Июль 2013 - 08:41

if ($_REQUEST['date1']) $date1 = date("d.m.Y",strtotime(form_eng_time($_REQUEST['date1'])));
else $date1 = date("d.m.Y", mktime(0,0,0,date("m"),date("d")-7,date("Y")));

if ($_REQUEST['date2']) $date2 = date("d.m.Y",strtotime(form_eng_time($_REQUEST['date2'])));
else $date2 = date("d.m.Y");

$date1_fet = form_eng_time($date1.' 00:00:00');
$date2_fet = form_eng_time($date2.' 23:59:59');

if ($_REQUEST['manager']) $manager = form_input($_REQUEST['manager']); elseif ($user['group_id']!=1) $manager = $user['id'];

if ($_REQUEST['_type']||$_REQUEST['_manager']||$_REQUEST['_dates'])
{
reset_filters(43);
if ($_REQUEST['_type'] || $_REQUEST['_manager']) $temp_add = ' and ';
else $temp_add = '';
if ($_REQUEST['_dates']=='1') set_filter(457, "period", $date1, $date2, $temp_add);
elseif ($_REQUEST['_dates']=='2') set_filter(436, "period", $date1, $date2, $temp_add);
if ($_REQUEST['_manager']) $temp_add = ' and ';
else $temp_add = '';
if ($_REQUEST['_type']) set_filter(456, "=", form_input($_REQUEST['_type']), '', $temp_add);
if ($_REQUEST['_manager']) set_filter(448, "=", form_input($_REQUEST['_manager']), '', '');

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

if ($manager){
$sqlCond = "`user`.`id`='".$manager."'";
$sqlGroups = "";
}else{
//$sqlCond = "(`group`.`id`=1 or `group`.`id`=2 or `group`.`pid`=1 or `group`.`pid`=2) AND `user`.`group_id`=`group`.`id` AND `user`.`arc`=0";
// $sqlGroups = ", `".GROUPS_TABLE."` AS `group`";
/*$sqlCond = "`user`.`arc`=0 AND `group_id`!='777'";*/
$sqlCond = "1=1";//"`group_id`!='777'";
$sqlGroups = "";
}

$sqlQuery = "SELECT `user`.`id`, `user`.`fio` FROM ".USERS_TABLE." AS `user`$sqlGroups WHERE $sqlCond";
$result = sql_query($sqlQuery);
while ($row = sql_fetch_assoc($result))
{
$data['fio'] = $row['fio'];
$data['fio_id'] = $row['id'];

$result2 = sql_select_field(DATA_TABLE."43","SUM(f2791) as sum","f448='",$data['fio_id'],"' AND f436>='",$date1_fet,"' AND f436<='",$date2_fet,"' AND status=0 ORDER BY f436");
$result2 = sql_select_field("`".DATA_TABLE."43`","SUM(f2791) AS `sum`","`f448`='",$data['fio_id'],"' AND `f436`>='",$date1_fet,"' AND `f436`<='",$date2_fet,"' AND `status`<>'2'");
$row2 = sql_fetch_assoc($result2);
$data['invoice'] = $row2['sum'];

$result2 = sql_select_field(DATA_TABLE."43","SUM(f2791) as sum","f456!='0.00' AND f448='",$data['fio_id'],"' AND f457>='",$date1_fet,"' AND f457<='",$date2_fet,"' AND status=0 ORDER BY f457");
$result2 = sql_select_field("`".DATA_TABLE."43`","SUM(f455) AS `sum`","`f448`='",$data['fio_id'],"' AND`f456`!='0.00' AND `f457`>='",$date1_fet,"' AND `f457`<='",$date2_fet,"' AND `status`<>'2'");
$row2 = sql_fetch_assoc($result2);
$data['paid'] = $row2['sum'];

if($data['fio_id']!=1) $result2 = sql_select_field(DATA_TABLE."46","f1550","f1400='",$data['fio_id'],"'");
else $result2 = sql_select_field(DATA_TABLE."46","f1550","id='",$data['fio_id'],"'");
$row2 = sql_fetch_assoc($result2);
$data['bonus_percent'] = ($row2['f1550'])?$row2['f1550']:0;

$result2 = sql_select_field(DATA_TABLE."43","sum(f455) as sum,f457 as dates","f456='0.00' AND f448='",$data['fio_id'],"' AND f457>='",$date1_fet,"' AND f457<='",$date2_fet,"' AND status=0 ORDER BY f457");
$row2 = sql_fetch_assoc($result2);
$data['bonus_sum'] = $row2['sum'];
$data['bonus'] = $data['bonus_sum'] * $data['bonus_percent'] * 0.01;

if($row2['dates']){
$data_date['Бонус'][date('Y-m-d',strtotime($row2['dates']))]=$data['bonus_sum'] * $data['bonus_percent'] * 0.01;
}

$sum_invoice+=$data['invoice'];
$sum_paid+=$data['paid'];
$sum_bonus+=$data['bonus'];

$data['invoice'] = form_local_number($data['invoice'],'/2');
$data['paid'] = form_local_number($data['paid'],'/2');
$data['bonus'] = form_local_number($data['bonus'], '/2');

$lines[] = $data;
}
if(is_array($data_date['Бонус']))ksort($data_date['Бонус']);
//foreach($data_date['Бонус'] as $k=>$v){
// $full;
// $data_date['Бонус'][$k]+=$v;
//}

$sum_invoice = form_local_number($sum_invoice,'/2');
$sum_paid = form_local_number($sum_paid,'/2');
$sum_bonus = form_local_number($sum_bonus,'/2');

$result = sql_select_field(SCHEMES_TABLE,"`color3`","`active`='1'");
$row = sql_fetch_assoc($result);


$sqlQuery = "SELECT `id` FROM ".USERS_TABLE." WHERE `group_id`!='777'";
$result = sql_query($sqlQuery);
while($row=sql_fetch_assoc($result)){
$userArray[]=$row['id'];
}
$userString=implode(',',$userArray);
if($userString) $userString="AND f448 in (".$userString.")";

// для графика
$y_min = 0;
$y_max = 0;
$data_date ['Выставлено'] = array();
$data_date ['Оплачено'] = array();
//$date1_fet=date('d.m',strtotime($date1_fet)).".".(date('Y',strtotime($date1_fet))-2);
$full=0;
$result = sql_select_field(DATA_TABLE."43","DATE_FORMAT(`f436`,'%Y-%m-%d') AS date_act,f2791","`f448`!='0' AND `f448`!='10' AND `f436`>='",$date1_fet,"' AND status<>2 AND f436<='",$date2_fet,"' $userString ORDER BY date_act");
while($d = sql_fetch_assoc($result))
{
//$full+=$d['f2791'];
$data_date ['Выставлено'] [$d['date_act']]+=$d['f2791'];
}
$full=0;
$result = sql_select_field(DATA_TABLE."43","DATE_FORMAT(`f457`,'%Y-%m-%d') AS date_act,f455,f2791","`f448`!='0' AND `f448`!='10' AND `f457`>='",$date1_fet,"' AND status=0 AND f457<='",$date2_fet,"' $userString ORDER BY date_act");
while($d = sql_fetch_assoc($result))
{
// $full += ($d['f455']!=0.00)?$d['f2791']:0;
$data_date ['Оплачено'] [$d['date_act']]+= ($d['f455']!=0.00)?$d['f455']:0;
if($data_date ['Оплачено'] [$d['date_act']]){
$result2 = sql_select_field(DATA_TABLE."46","SUM(f1550) as `sum`");
$row2 = sql_fetch_assoc($result2);
$bonus_percent = ($row2['sum'])?$row2['sum']:0;
}
}

$types = array('Бонус','Выставлено','Оплачено');

if(!$data_date ['Бонус'] && !$data_date ['Выставлено'] && !$data_date ['Оплачено']) $data_date ['Бонус'][date('Y-m-d',strtotime($date1))] = 0;

$start=date('d',strtotime($date1));
$days=floor((strtotime($date2)-strtotime($date1))/86400);
$mo=date('m',strtotime($date1));
$ye=date('Y',strtotime($date1));
for($i=$start;count($dateArray)<=$days;$i++,$start++){
$dateArray[]=$ye.'-'.$mo.'-'.$start;
if($i==30){$mo++;$start=1;}
if($mo==12&&$start==30) {$ye++;$mo=1;$start=1;}
}
if(is_array($dateArray))
foreach($dateArray as $k=>$v){
$dateArray2[]=date('Y-m-d',strtotime($v));
}
$dateArray=$dateArray2;

if($days<16) $ticks_x_interval = '1 days';
else $ticks_x_interval='';
if(is_array($data_date))
foreach($data_date as $k=>$v){
for($i=0;$i<count($dateArray);$i++){
if(!$data_date [$k] [$dateArray[$i]]){
$data_date [$k] [$dateArray[$i]]='0';
}
if(strtotime(date('Y-m-d'))==strtotime($dateArray[$i]))break;
}
}

$d1 = substr(form_eng_time($date1),0,10);
$d2 = substr(form_eng_time(date('d.m.Y',strtotime($date2)+24*60*60)),0,10);
$date_cur = $d1;

$data_for_gr = array();

//$y_max = 0;
foreach($types as $val) {
$data_for_gr[$val] = array();
if ($data_date[$val]) {
foreach($data_date[$val] as $k=>$v) {
//$data_for_gr[$val][date('Y-m-d',strtotime($k)-24*60*60)] = 0;
//$data_for_gr[$val][date('Y-m-d',strtotime($k)+24*60*60)] = 0;
}

foreach($data_date[$val] as $k=>$v) {
$data_for_gr[$val][$k] = $v;
if ($y_max < $v) $y_max = $v;
}
ksort($data_for_gr[$val]);
}
}
//$y_max++;

if($y_max>0)$y_max=$y_max+($y_max*0.1);
elseif($y_min>0)$y_max=$y_max+($y_min*0.1);
else $y_max=$y_max-($y_min*0.1);

if($y_max < 4) $y_max = 4;

// заполняем серии
$is_graph = false;
$graph_data = array();
foreach($types as $val) {
if ($data_for_gr[$val]) {
$is_graph = true or $is_graph;
}
$graph_data[] = $data_for_gr[$val];
}

$d1 = substr(form_eng_time($date1),0,10);
$d2 = substr(form_eng_time($date2),0,10);

$graph_settings = array('type_graph' => 'LineDate'
,'div_id' => 'chart1'
,'series_names' => "'".implode("','",$types)."'"
,'x_max' => $d2
,'x_min' => $d1
,'ticks_x_interval' => $ticks_x_interval
,'y_max' => $y_max
,'zoom' => true
,'y_min' => $y_min
);
$graph = draw_graph($graph_data, $graph_settings);


if ($_REQUEST['xsl'] == 1)
{
$xsl = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>\r\n";
$xsl .= "<table cellspacing=\"0\" cellpadding=\"3\" border=\"1\">\r\n<tr><td colspan=\"5\"><h1>По продажам</h1></td></tr>\r\n";

$xsl .= "<tr><td width=\"150\" style=\"text-align: center\" align=\"center\"></td>\r\n";
$xsl .= "<td width=\"100\" style=\"text-align: center\" align=\"center\"><b>Бонус</b></td>\r\n";
$xsl .= "<td width=\"100\" style=\"text-align: center\" align=\"center\"><b>Выставлено счетов</b></td>\r\n";
$xsl .= "<td width=\"100\" style=\"text-align: center\" align=\"center\"><b>Оплачено счетов</b></td></tr>\r\n";

$pos = 1;

foreach ($lines AS $data)
{
if ($pos % 2)
{
$xsl .= "<tr><td style=\"background-color: #d0d0d0; text-align: center\" bgcolor=\"#d0d0d0\" align=\"center\">".$data['fio']."</td>\r\n";
$xsl .= "<td style=\"background-color: #d0d0d0; text-align: center\" bgcolor=\"#d0d0d0\" align=\"center\">".$data['bonus']."</td>\r\n";
$xsl .= "<td style=\"background-color: #d0d0d0; text-align: center\" bgcolor=\"#d0d0d0\" align=\"center\">".$data['invoice']."</td>\r\n";
$xsl .= "<td style=\"background-color: #d0d0d0; text-align: center\" bgcolor=\"#d0d0d0\" align=\"center\">".$data['paid']."</td></tr>\r\n";
}
else
{
$xsl .= "<tr><td style=\"text-align: center\" align=\"center\">".$data['fio']."</td>\r\n";
$xsl .= "<td style=\"text-align: center\" align=\"center\">".$data['bonus']."</td>\r\n";
$xsl .= "<td style=\"text-align: center\" align=\"center\">".$data['invoice']."</td>\r\n";
$xsl .= "<td style=\"text-align: center\" align=\"center\">".$data['paid']."</td></tr>\r\n";
}
$pos += 1;
}

$xsl .= "</table></body></html>";

$name = 'income_by_companies.xls';

header("Content-type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=".$name);

echo $xsl;

exit;
}
else
{
#if ($user['group_id'] == 1) $smarty->assign("adm_rules", 1);

$smarty->assign("color3", $row['color3']);
$smarty->assign("date1", $date1);
$smarty->assign("date2", $date2);
$smarty->assign("lines", $lines);
$smarty->assign("sum_bonus", $sum_bonus);
$smarty->assign("sum_invoice", $sum_invoice);
$smarty->assign("sum_paid", $sum_paid);
$smarty->assign("graph", $graph);
$smarty->assign("is_graph", $is_graph);
}


Подскажите, а мне что тут нужно поменять?

#17 CbCoder

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

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

Отправлено 18 Июль 2013 - 09:47

Я же выше писал, где именно надо менять:

Просмотр сообщенияCbCoder (26 Июнь 2013 - 15:59) писал:

if ($_REQUEST['manager']) $manager = intval($_REQUEST['manager']); elseif ($user['group_id']!=1) $manager = $user['id'];
// --->
if ($_REQUEST['manager']) $manager = intval($_REQUEST['manager']); elseif ($user['group_id']==2) $manager = $user['id'];

else $sqlCond = "(`group`.`id`=1 or `group`.`id`=2 or `group`.`pid`=1 or `group`.`pid`=2) AND `user`.`group_id`=`group`.`id` AND `user`.`arc`=0";
// --->
else $sqlCond = "`user`.`group_id`=`group`.`id` AND `user`.`arc`=0";


#18 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 18 Июль 2013 - 09:50

Просто я не нашла у себя таких строчек,поэтому в недоумении.. то что попыталась сделать-просто пропал даже пользователь

#19 CbCoder

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

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

Отправлено 18 Июль 2013 - 11:55

Как же не нашли, если они есть:

Цитата

if ($_REQUEST['manager']) $manager = form_input($_REQUEST['manager']); elseif ($user['group_id']!=1) $manager = $user['id'];

Цитата

$sqlCond = "(`group`.`id`=1 or `group`.`id`=2 or `group`.`pid`=1 or `group`.`pid`=2) AND `user`.`group_id`=`group`.`id` AND `user`.`arc`=0";


#20 Radik

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

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

Отправлено 20 Сентябрь 2013 - 16:39

Уже выпустили отчеты с возможностью добавления групп?





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

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