3require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/statistic/classes/general/stateventtype.php");
9 $DB = CDatabase::GetModuleConnection(
'statistic');
14 ".$DB->DateToCharFunction(
"E.DATE_ENTER").
" DATE_ENTER,
15 if (length(E.NAME)>0, E.NAME,
16 concat(ifnull(E.EVENT1,''),' / ',ifnull(E.EVENT2,''))) EVENT
28 $DB = CDatabase::GetModuleConnection(
'statistic');
31 if($find_group!=
"event1" && $find_group!=
"event2" && $find_group!=
"total")
34 $arSqlSearch = Array();
35 $arSqlSearch_h = Array();
37 $filter_period =
false;
51 $filter_period =
true;
54 $strSqlPeriod =
"if(D.DATE_STAT<FROM_UNIXTIME('$date_from'),0, if(D.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
59 $strSqlPeriod =
"if(D.DATE_STAT<FROM_UNIXTIME('$date_from'),0,";
65 $filter_period =
true;
66 $strSqlPeriod =
"if(D.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
79 if( ((
string)
$val ==
'') || (
$val ===
"NOT_REF") )
82 $match_value_set = array_key_exists(
$key.
"_EXACT_MATCH",
$arFilter);
87 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
92 $arSqlSearch[] =
"E.DATE_ENTER>=".$DB->CharToDateFunction(
$val,
"SHORT");
96 $arSqlSearch[] =
"E.DATE_ENTER<".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
100 $arSqlSearch_h[] =
"max(D.DATE_LAST)>=".$DB->CharToDateFunction(
$val,
"SHORT");
104 $arSqlSearch_h[] =
"max(D.DATE_LAST)<".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
108 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
112 $arSqlSearch_h[] =
"TOTAL_COUNTER>='".intval(
$val).
"'";
115 $arSqlSearch_h[] =
"TOTAL_COUNTER<='".intval(
$val).
"'";
118 $arSqlSearch_h[] =
"TOTAL_MONEY>='".roundDB(
$val).
"'";
121 $arSqlSearch_h[] =
"TOTAL_MONEY<='".roundDB(
$val).
"'";
124 case "DIAGRAM_DEFAULT":
125 $arSqlSearch[] = (
$val==
"Y") ?
"E.".
$key.
"='Y'" :
"E.".$key.
"='N'";
129 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
133 $arSqlSearch[] =
"E.KEEP_DAYS>='".intval(
$val).
"'";
136 $arSqlSearch[] =
"E.KEEP_DAYS<='".intval(
$val).
"'";
138 case "DYNAMIC_KEEP_DAYS1":
139 $arSqlSearch[] =
"E.DYNAMIC_KEEP_DAYS>='".intval(
$val).
"'";
141 case "DYNAMIC_KEEP_DAYS2":
142 $arSqlSearch[] =
"E.DYNAMIC_KEEP_DAYS<='".intval(
$val).
"'";
156 if (CModule::IncludeModule(
"currency"))
166 if ($by ==
"s_id" && $find_group==
"") $strSqlOrder =
"ORDER BY E.ID";
167 elseif ($by ==
"s_date_last") $strSqlOrder =
"ORDER BY E_DATE_LAST";
168 elseif ($by ==
"s_date_enter") $strSqlOrder =
"ORDER BY DATE_ENTER";
169 elseif ($by ==
"s_today_counter") $strSqlOrder =
"ORDER BY TODAY_COUNTER";
170 elseif ($by ==
"s_yesterday_counter") $strSqlOrder =
"ORDER BY YESTERDAY_COUNTER";
171 elseif ($by ==
"s_b_yesterday_counter") $strSqlOrder =
"ORDER BY B_YESTERDAY_COUNTER";
172 elseif ($by ==
"s_total_counter") $strSqlOrder =
"ORDER BY TOTAL_COUNTER";
173 elseif ($by ==
"s_period_counter") $strSqlOrder =
"ORDER BY PERIOD_COUNTER";
174 elseif ($by ==
"s_name" && $find_group==
"") $strSqlOrder =
"ORDER BY E.NAME";
175 elseif ($by ==
"s_event1" && $find_group==
"") $strSqlOrder =
"ORDER BY E.EVENT1";
176 elseif ($by ==
"s_event1" && $find_group==
"event1") $strSqlOrder =
"ORDER BY E.EVENT1";
177 elseif ($by ==
"s_event2" && $find_group==
"") $strSqlOrder =
"ORDER BY E.EVENT2";
178 elseif ($by ==
"s_event2" && $find_group==
"event2") $strSqlOrder =
"ORDER BY E.EVENT2";
179 elseif ($by ==
"s_event12" && $find_group==
"") $strSqlOrder =
"ORDER BY E.EVENT1, E.EVENT2";
180 elseif ($by ==
"s_chart" && $find_group==
"") $strSqlOrder =
"ORDER BY E.DIAGRAM_DEFAULT desc, TOTAL_COUNTER ";
181 elseif ($by ==
"s_stat") $strSqlOrder =
"ORDER BY TODAY_COUNTER desc, YESTERDAY_COUNTER desc, B_YESTERDAY_COUNTER desc, TOTAL_COUNTER desc, PERIOD_COUNTER";
184 $strSqlOrder =
"ORDER BY TODAY_COUNTER desc, YESTERDAY_COUNTER desc, B_YESTERDAY_COUNTER desc, TOTAL_COUNTER desc, PERIOD_COUNTER";
189 $strSqlOrder .=
" desc ";
193 foreach($arSqlSearch_h as $sqlWhere)
194 $strSqlSearch_h .=
" and (".$sqlWhere.
") ";
196 $limit_sql =
"LIMIT ".intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT'));
197 if (intval(
$LIMIT)>0) $limit_sql =
"LIMIT ".intval(
$LIMIT);
207 '".$DB->ForSql($view_currency).
"' CURRENCY,
208 ".
$DB->DateToCharFunction(
"E.DATE_ENTER").
" DATE_ENTER,
209 ".
$DB->DateToCharFunction(
"max(D.DATE_LAST)").
" DATE_LAST,
210 max(ifnull(D.DATE_LAST,'1980-01-01')) E_DATE_LAST,
211 sum(ifnull(D.COUNTER,0))+ifnull(E.COUNTER,0) TOTAL_COUNTER,
212 sum(round(ifnull(D.MONEY,0)*$rate,2))+round(ifnull(E.MONEY,0)*$rate,2) TOTAL_MONEY,
213 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.COUNTER,0),0)) TODAY_COUNTER,
214 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.COUNTER,0),0)) YESTERDAY_COUNTER,
215 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.COUNTER,0),0)) B_YESTERDAY_COUNTER,
216 sum(".($filter_period ? $strSqlPeriod.
'ifnull(D.COUNTER,0)'.$strT : 0).
") PERIOD_COUNTER,
217 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=0,ifnull(D.MONEY,0),0)*$rate,2)) TODAY_MONEY,
218 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.MONEY,0),0)*$rate,2)) YESTERDAY_MONEY,
219 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.MONEY,0),0)*$rate,2)) B_YESTERDAY_MONEY,
220 sum(round(".($filter_period ? $strSqlPeriod.
'ifnull(D.MONEY,0)'.$strT : 0).
"*$rate,2)) PERIOD_MONEY,
223 if (length(E.NAME)>0, E.NAME, concat(E.EVENT1,' / ',ifnull(E.EVENT2,''))) EVENT
226 LEFT JOIN b_stat_event_day D ON (D.EVENT_ID = E.ID)
238 elseif ($find_group==
"total")
244 "YESTERDAY_COUNTER" =>0,
245 "B_YESTERDAY_COUNTER" =>0,
246 "PERIOD_COUNTER" =>0,
248 "YESTERDAY_MONEY" =>0,
249 "B_YESTERDAY_MONEY" =>0,
254 sum(ifnull(D.COUNTER,0)) TOTAL_COUNTER,
255 sum(round(ifnull(D.MONEY,0)*$rate,2)) TOTAL_MONEY,
256 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.COUNTER,0),0)) TODAY_COUNTER,
257 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.COUNTER,0),0)) YESTERDAY_COUNTER,
258 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.COUNTER,0),0)) B_YESTERDAY_COUNTER,
259 sum(".($filter_period ? $strSqlPeriod.
'ifnull(D.COUNTER,0)'.$strT : 0).
") PERIOD_COUNTER,
260 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=0,ifnull(D.MONEY,0),0)*$rate,2)) TODAY_MONEY,
261 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.MONEY,0),0)*$rate,2)) YESTERDAY_MONEY,
262 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.MONEY,0),0)*$rate,2)) B_YESTERDAY_MONEY,
263 sum(round(".($filter_period ? $strSqlPeriod.
'ifnull(D.MONEY,0)'.$strT : 0).
"*$rate,2)) PERIOD_MONEY
266 LEFT JOIN b_stat_event_day D ON (D.EVENT_ID = E.ID)
275 foreach(
$ar as
$k=>$v)
279 sum(ifnull(E.COUNTER,0)) TOTAL_COUNTER,
280 sum(round(ifnull(E.MONEY,0)*$rate,2)) TOTAL_MONEY
288 foreach(
$ar as
$k=>$v)
291 $res =
new CDBResult;
297 if ($find_group==
"event1") $group =
"E.EVENT1";
else $group =
"E.EVENT2";
302 '".$DB->ForSql($view_currency).
"' CURRENCY,
303 ".
$DB->DateToCharFunction(
"min(E.DATE_ENTER)").
" DATE_ENTER,
304 ".
$DB->DateToCharFunction(
"max(D.DATE_LAST)").
" DATE_LAST,
305 max(ifnull(D.DATE_LAST,'1980-01-01')) E_DATE_LAST,
306 sum(ifnull(D.COUNTER,0)) TOTAL_COUNTER,
307 sum(round(ifnull(D.MONEY,0)*$rate,2)) TOTAL_MONEY,
308 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.COUNTER,0),0)) TODAY_COUNTER,
309 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.COUNTER,0),0)) YESTERDAY_COUNTER,
310 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.COUNTER,0),0)) B_YESTERDAY_COUNTER,
311 sum(".($filter_period ? $strSqlPeriod.
'ifnull(D.COUNTER,0)'.$strT : 0).
") PERIOD_COUNTER,
312 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=0,ifnull(D.MONEY,0),0)*$rate,2)) TODAY_MONEY,
313 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.MONEY,0),0)*$rate,2)) YESTERDAY_MONEY,
314 sum(round(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.MONEY,0),0)*$rate,2)) B_YESTERDAY_MONEY,
315 sum(round(".($filter_period ? $strSqlPeriod.
'ifnull(D.MONEY,0)'.$strT : 0).
"*$rate,2)) PERIOD_MONEY
318 LEFT JOIN b_stat_event_day D ON (D.EVENT_ID = E.ID)
333 '".$DB->ForSql($view_currency).
"' CURRENCY,
334 sum(ifnull(E.COUNTER,0)) COUNTER,
335 sum(round(ifnull(E.MONEY,0)*$rate,2)) TOTAL_MONEY,
336 ".
$DB->DateToCharFunction(
"min(E.DATE_ENTER)").
" DATE_ENTER
354 "GROUPING_KEY" =>
$ar[
"GROUPING_KEY"],
355 ($find_group==
"event1"?
"EVENT1":
"EVENT2")=>
$ar[
"GROUPING_KEY"],
356 "CURRENCY" =>
$ar[
"CURRENCY"],
357 "DATE_ENTER" =>
$ar[
"DATE_ENTER"],
358 "TOTAL_COUNTER" =>
$ar[
"COUNTER"],
359 "TOTAL_MONEY" =>
$ar[
"MONEY"],
361 "YESTERDAY_COUNTER" =>0,
362 "B_YESTERDAY_COUNTER" =>0,
363 "PERIOD_COUNTER" =>0,
365 "YESTERDAY_MONEY" =>0,
366 "B_YESTERDAY_MONEY" =>0,
371 $res =
new CDBResult;
374 $is_filtered = (
IsFiltered($strSqlSearch) || $filter_period || $strSqlSearch_h <>
'' || $find_group!=
"");
380 $DB = CDatabase::GetModuleConnection(
'statistic');
381 $arSqlSearch = Array();
394 if( ((
string)
$val ==
'') || (
$val ===
"NOT_REF") )
397 $match_value_set = array_key_exists(
$key.
"_EXACT_MATCH",
$arFilter);
402 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
409 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
413 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
414 $arSqlSearch[] =
GetFilterQuery(
"E.EVENT1, E.EVENT2, E.DESCRIPTION, E.NAME",
$val, $match);
425 $strSqlOrder =
"ORDER BY E.ID ".$order;
426 elseif ($by ==
"s_event1")
427 $strSqlOrder =
"ORDER BY E.EVENT1 ".$order.
", E.EVENT2";
428 elseif ($by ==
"s_event2")
429 $strSqlOrder =
"ORDER BY E.EVENT2 ".$order;
431 $strSqlOrder =
"ORDER BY E.NAME ".$order;
432 elseif ($by ==
"s_description")
433 $strSqlOrder =
"ORDER BY E.DESCRIPTION ".$order;
436 $strSqlOrder =
"ORDER BY E.EVENT1 ".$order.
", E.EVENT2";
441 E.ID, E.EVENT1, E.EVENT2, E.NAME, E.DESCRIPTION,
442 if (length(E.NAME)>0, E.NAME,
443 concat(ifnull(E.EVENT1,''),' / ',ifnull(E.EVENT2,''))) EVENT
449 LIMIT ".intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT')).
"
459 $DB = CDatabase::GetModuleConnection(
'statistic');
463 concat('(',ifnull(EVENT1,''),' / ',ifnull(EVENT2,''),')',ifnull(NAME,''),' [',ID,']') as REFERENCE
474 $DB = CDatabase::GetModuleConnection(
'statistic');
475 $EVENT_ID = intval($EVENT_ID);
476 $arSqlSearch = Array();
489 if( ((
string)
$val ==
'') || (
$val ===
"NOT_REF") )
498 $arSqlSearch[] =
"D.DATE_STAT>=".$DB->CharToDateFunction(
$val,
"SHORT");
502 $arSqlSearch[] =
"D.DATE_STAT<".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
508 foreach($arSqlSearch as $sqlWhere)
509 $strSqlSearch .=
" and (".$sqlWhere.
") ";
512 $strSqlOrder =
"ORDER BY D.DATE_STAT";
515 $strSqlOrder =
"ORDER BY D.DATE_STAT";
520 $strSqlOrder .=
" desc ";
525 ".$DB->DateToCharFunction(
"D.DATE_STAT",
"SHORT").
" DATE_STAT,
526 DAYOFMONTH(D.DATE_STAT) DAY,
527 MONTH(D.DATE_STAT) MONTH,
528 YEAR(D.DATE_STAT) YEAR,
533 D.EVENT_ID = $EVENT_ID
542 max(D.DATE_STAT) DATE_LAST,
543 min(D.DATE_STAT) DATE_FIRST,
544 DAYOFMONTH(max(D.DATE_STAT)) MAX_DAY,
545 MONTH(max(D.DATE_STAT)) MAX_MONTH,
546 YEAR(max(D.DATE_STAT)) MAX_YEAR,
547 DAYOFMONTH(min(D.DATE_STAT)) MIN_DAY,
548 MONTH(min(D.DATE_STAT)) MIN_MONTH,
549 YEAR(min(D.DATE_STAT)) MIN_YEAR
553 D.EVENT_ID = $EVENT_ID
556 $a =
$DB->Query($strSql);
558 $arMaxMin[
"MAX_DAY"] =
$ar[
"MAX_DAY"];
559 $arMaxMin[
"MAX_MONTH"] =
$ar[
"MAX_MONTH"];
560 $arMaxMin[
"MAX_YEAR"] =
$ar[
"MAX_YEAR"];
561 $arMaxMin[
"MIN_DAY"] =
$ar[
"MIN_DAY"];
562 $arMaxMin[
"MIN_MONTH"] =
$ar[
"MIN_MONTH"];
563 $arMaxMin[
"MIN_YEAR"] =
$ar[
"MIN_YEAR"];
569 $DB = CDatabase::GetModuleConnection(
'statistic');
572 ".$DB->DateToCharFunction(
"D.DATE_STAT",
"SHORT").
" DATE_STAT,
573 DAYOFMONTH(D.DATE_STAT) DAY,
574 MONTH(D.DATE_STAT) MONTH,
575 YEAR(D.DATE_STAT) YEAR,
584 INNER JOIN b_stat_event E ON (E.ID = D.EVENT_ID)
588 D.DATE_STAT, D.EVENT_ID
static GetConvertFactor($curFrom, $curTo, $valDate="")
static GetSimpleList($by='s_event1', $order='asc', $arFilter=[])
static GetDropDownList($strSqlOrder="ORDER BY EVENT1, EVENT2")
static GetGraphArray_SQL($strSqlSearch)
static GetList($by='s_today_counter', $order='desc', $arFilter=[], &$is_filtered=false, $LIMIT=false)
static GetDynamicList($EVENT_ID, $by='s_date', $order='desc', &$arMaxMin=[], $arFilter=[])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
CheckDateTime($datetime, $format=false)
MkDateTime($strDT, $format="d.m.Y H:i:s")
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"