3if (!CModule::IncludeModule(
'report'))
5if (!CModule::IncludeModule(
'currency'))
15 private static $owners =
array();
17 private static $fInit =
false;
18 private static $fOwnersInit =
false;
41 private static function localUpdate_17_5_0()
43 $res = \Bitrix\Report\ReportTable::getList(
45 'select' =>
array(
'ID',
'TITLE',
'SETTINGS'),
47 '=OWNER_ID' =>
'sale_SaleProduct',
48 '=CREATED_BY' =>
$GLOBALS[
'USER']->GetID(),
53 while ($row =
$res->fetch())
55 $id = (int)$row[
'ID'];
59 $titleMsg =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS');
60 if (
$title === $titleMsg && is_string($row[
'SETTINGS']) && $row[
'SETTINGS'] <>
'')
62 $settings = unserialize($row[
'SETTINGS'], [
'allowed_classes' =>
false]);
66 $aliasMap =
array(0 => 0, 1 => 1, 2 => 5, 3 => 8);
67 foreach ($aliasMap as $aliasNum => $msgNum)
69 if (isset(
$settings[
'select'][$aliasNum][
'alias'])
70 && is_string(
$settings[
'select'][$aliasNum][
'alias'])
71 &&
$settings[
'select'][$aliasNum][
'alias'] <>
'')
73 $alias =
$settings[
'select'][$aliasNum][
'alias'];
74 $aliasMsg =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS_ALIAS_'.$msgNum);
75 if (is_string($aliasMsg) && $aliasMsg <>
'' && $alias !== $aliasMsg)
77 $settings[
'select'][$aliasNum][
'alias'] = $aliasMsg;
84 Bitrix\Report\ReportTable::update($id,
array(
'SETTINGS' => serialize(
$settings)));
91 CUserOptions::DeleteOption(
'sale',
'~SALE_REPORT_NEED_UPDATE_17_5_0');
94 private static function localUpdate()
96 $updateCodes =
array(
'~SALE_REPORT_NEED_UPDATE_17_5_0');
98 $needUpdate =
array();
99 foreach ($updateCodes as $updateCode)
101 if (\
Bitrix\Main\Config\Option::get(
'sale', $updateCode,
'N') ===
'Y'
102 || CUserOptions::GetOption(
'sale', $updateCode) ===
'Y')
104 $needUpdate[] = $updateCode;
108 foreach ($needUpdate as $updateCode)
112 case '~SALE_REPORT_NEED_UPDATE_17_5_0';
113 self::localUpdate_17_5_0();
129 self::$siteCookieId = md5(
'SALE_REPORT_SITE_ID');
134 while ($row =
$result->fetch())
136 self::$sitelist[$row[
'LID']] = $row[
'NAME'];
137 if (++
$i === 1) self::$defaultSiteId = $row[
'LID'];
138 else if ($row[
'DEF'] ===
'Y') self::$defaultSiteId = $row[
'LID'];
139 self::$weightOptions[$row[
'LID']] =
array(
140 'unit' => COption::GetOptionString(
'sale',
'weight_unit',
null, $row[
'LID']),
141 'koef' => COption::GetOptionInt(
'sale',
'weight_koef',
null, $row[
'LID'])
147 $statusEntity = Entity\Base::getInstance(
'\Bitrix\Sale\Internals\StatusLang');
150 $statusEntity->addField(
152 'data_type' =>
'string',
153 'expression' =>
array(
'%s',
'STATUS_ID')
158 unset($statusEntity);
161 $shipmentEntity = Entity\Base::getInstance(
'\Bitrix\Sale\Internals\Shipment');
162 if ($shipmentEntity instanceof \
Bitrix\Main\
Entity\Base)
164 $shipmentEntity->addField(
166 'data_type' =>
'Order',
167 'reference' =>
array(
168 '=ref.ID' =>
'this.ORDER_ID',
169 '!=this.SYSTEM' =>
array(
'?',
'Y')
175 unset($shipmentEntity);
178 $result = Bitrix\Sale\Internals\StatusLangTable::getList(
array(
179 'select' =>
array(
'STATUS_ID',
'NAME'),
180 'filter' =>
array(
'=LID' => LANGUAGE_ID)
182 while ($row =
$result->fetch())
184 self::$statuslist[$row[
'STATUS_ID']] = $row[
'NAME'];
191 $result = Bitrix\Sale\Internals\PersonTypeTable::getList(
array(
192 'select' =>
array(
'ID',
'LID',
'NAME')
195 while ($row =
$result->fetch())
197 self::$personTypes[$row[
'ID']] =
array(
'LID' => $row[
'LID'],
'NAME' => $row[
'NAME']);
203 'select' =>
array(
'ID',
'NAME')
206 while ($row =
$result->fetch())
208 self::$paySystemList[$row[
'ID']] =
array(
'value' => $row[
'NAME'],
'site_id' =>
'');
213 $result = \Bitrix\Sale\Delivery\Services\Table::getList(
array(
214 'select' =>
array(
'ID',
'NAME')
217 while ($row =
$result->fetch())
219 self::$deliveryList[$row[
'ID']] =
array(
'value' => $row[
'NAME'],
'site_id' =>
'');
224 $result = Bitrix\Iblock\IblockSiteTable::getList();
225 while ($row =
$result->fetch()) self::$iblockSite[$row[
'SITE_ID']][] = $row[
'IBLOCK_ID'];
232 while ($ibRow =
$result->Fetch())
235 self::$catalogs[] = $ibRow;
237 $curLevel = $prevLevel = 0;
238 $sections = CIBlockSection::GetTreeList(
array(
'=IBLOCK_ID'=>$ibRow[
'IBLOCK_ID']),
array(
'ID',
'IBLOCK_ID',
'NAME',
'DEPTH_LEVEL',
'LEFT_MARGIN'));
240 while($row = $sections->GetNext())
243 $curLevel = $row[
'DEPTH_LEVEL'];
244 for (
$i = 0;
$i <= $prevLevel - $curLevel;
$i++) array_pop(
$path);
245 array_push(
$path, $row[
'ID']);
246 $prevLevel = $curLevel;
248 self::$catalogSections[$row[
'ID']] =
array(
249 'name' => ltrim(str_repeat(
' . ', $curLevel).$row[
'NAME']),
252 'ID' => $ibRow[
'ID'],
253 'NAME' => $ibRow[
'NAME']
258 unset($ent, $ibRow, $row, $sections,
$result);
261 $result = Bitrix\Catalog\StoreTable::getList(
array(
'select' =>
array(
'ID',
'TITLE')));
262 while ($row =
$result->fetch())
264 self::$productStores[$row[
'ID']] = $row[
'TITLE'];
270 $result = $obj->GetList(
'',
'', LANGUAGE_ID);
273 self::$currencies[$row[
'CURRENCY']] =
array(
274 'name' => $row[
'FULL_NAME']
281 $result = $obj->GetListEx(
array(
'SORT'),
array(),
false,
false,
array(
'ID',
'NAME',
'BASE',
'NAME_LANG'));
284 self::$priceTypes[$row[
'ID']] =
array(
285 'name' => (empty($row[
'NAME_LANG'])) ? $row[
'NAME'] : $row[
'NAME_LANG'],
286 'base' => ($row[
'BASE'] ===
'Y') ?
true :
false
292 self::$fDecimalQuant = COption::GetOptionString(
'sale',
'QUANTITY_FACTORIAL') ==
'Y';
305 if (!self::$fOwnersInit)
307 self::$fOwnersInit =
true;
318 return self::$sitelist;
323 return self::$weightOptions;
328 return self::$priceTypes;
334 reset(self::$priceTypes);
335 $basePriceTypeKey = key(self::$priceTypes);
336 foreach (self::$priceTypes as $priceTypeKey => $priceTypeInfo)
338 if ($priceTypeInfo[
'base'] ===
true) $basePriceTypeKey = $priceTypeKey;
339 if (in_array($priceTypeKey, $arSelected,
true))
341 self::$priceTypes[$priceTypeKey][
'selected'] =
true;
345 if (!$bSelected) self::$priceTypes[$basePriceTypeKey][
'selected'] =
true;
350 return self::$currencies;
355 $currenciesIds = array_keys(self::$currencies);
356 if (in_array($currencyId, $currenciesIds,
true))
358 self::$currencies[$currencyId][
'selected'] =
true;
359 self::$reportCurrencyId = $currencyId;
363 self::$currencies[$currenciesIds[0]][
'selected'] =
true;
364 self::$reportCurrencyId = $currenciesIds[0];
370 self::$siteCurrencyId = $currencyId;
375 return self::$siteCurrencyId;
380 return self::$reportCurrencyId;
385 return self::$siteCookieId;
390 return self::$statuslist;
395 return self::$genders;
400 return self::$personTypes;
405 return self::$defaultSiteId;
412 if (in_array($catalogId, self::$iblockSite[
$siteId]))
$result =
true;
418 return self::$weightOptions[self::$defaultSiteId][
'unit'];
423 return self::$weightOptions[self::$defaultSiteId][
'koef'];
428 self::$defaultSiteId =
$siteId;
433 return self::$paySystemList;
438 return self::$deliveryList;
443 if (!in_array($ownerName, self::$owners)) self::$owners[] = $ownerName;
450 return self::$owners;
455 return self::$catalogSections;
460 return self::$productStores;
475 'owner' =>
'sale_SaleBasket',
476 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_LEFT_BASKETS'),
477 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_LEFT_BASKETS_DESCR'),
479 'settings' => unserialize(
'a:7:{s:6:"entity";s:10:"SaleBasket";s:6:"period";a:2:{s:4:"type";'.
480 's:5:"month";s:5:"value";N;}s:6:"select";a:7:{i:10;a:1:{s:4:"name";s:8:"FUSER_ID";}i:1;'.
481 'a:1:{s:4:"name";s:21:"FUSER.USER.SHORT_NAME";}i:2;a:1:{s:4:"name";s:16:"FUSER.USER.EMAIL";'.
482 '}i:6;a:3:{s:4:"name";s:8:"QUANTITY";s:5:"alias";s:14:"xxxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";'.
483 '}i:7;a:3:{s:4:"name";s:13:"SUMMARY_PRICE";s:5:"alias";s:17:"xxxxxxxxxxxxxxxxx";s:4:"aggr";'.
484 's:3:"SUM";}i:4;a:3:{s:4:"name";s:8:"DATE_INS";s:5:"alias";s:13:"xxxxxxxxxxxxx";s:4:"aggr";'.
485 's:3:"MIN";}i:5;a:3:{s:4:"name";s:8:"DATE_UPD";s:5:"alias";s:14:"xxxxxxxxxxxxxx";s:4:"aggr";'.
486 's:3:"MAX";}}s:6:"filter";a:1:{i:0;a:3:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
487 's:8:"ORDER_ID";s:7:"compare";s:5:"EQUAL";s:5:"value";s:1:"0";s:10:"changeable";s:1:"0";}i:1;'.
488 'a:5:{s:4:"type";s:5:"field";s:4:"name";s:31:"FUSER.USER.UserGroup:USER.GROUP";s:7:"compare";'.
489 's:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";'.
490 'i:7;s:9:"sort_type";s:4:"DESC";s:5:"limit";N;}'
494 'owner' =>
'sale_SaleBasket',
495 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT'),
496 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT_DESCR'),
498 'settings' => unserialize(
'a:7:{s:6:"entity";s:10:"SaleBasket";s:6:"period";a:2:{s:4:"type";'.
499 's:3:"all";s:5:"value";N;}s:6:"select";a:7:{i:1;a:1:{s:4:"name";s:10:"PRODUCT_ID";}i:2;'.
500 'a:1:{s:4:"name";s:4:"NAME";}i:14;a:2:{s:4:"name";s:16:"PRODUCT.QUANTITY";s:5:"alias";'.
501 's:14:"xxxxxxxxxxxxxx";}i:3;a:3:{s:4:"name";s:8:"ORDER_ID";s:5:"alias";'.
502 's:14:"xxxxxxxxxxxxxx";s:4:"aggr";s:14:"COUNT_DISTINCT";}i:5;a:3:{s:4:"name";s:8:"QUANTITY";'.
503 's:5:"alias";s:20:"xxxxxxxxxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";}i:4;a:3:{s:4:"name";'.
504 's:5:"PRICE";s:5:"alias";s:19:"xxxxxxxxxxxxxxxxxxx";s:4:"aggr";s:3:"AVG";}i:6;a:3:{s:4:"name";'.
505 's:13:"SUMMARY_PRICE";s:5:"alias";s:5:"xxxxx";s:4:"aggr";s:3:"SUM";}}s:6:"filter";a:1:{i:0;'.
506 'a:6:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";s:11:"ORDER.PAYED";s:7:"compare";s:5:"EQUAL";'.
507 's:5:"value";s:4:"true";s:10:"changeable";s:1:"0";}i:1;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
508 's:23:"ORDER.DATE_INSERT_SHORT";s:7:"compare";s:16:"GREATER_OR_EQUAL";s:5:"value";s:8:"-29 days";'.
509 's:10:"changeable";s:1:"1";}i:2;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
510 's:23:"ORDER.DATE_INSERT_SHORT";s:7:"compare";s:13:"LESS_OR_EQUAL";s:5:"value";s:5:"1 day";'.
511 's:10:"changeable";s:1:"1";}i:3;a:5:{s:4:"type";s:5:"field";s:4:"name";s:4:"NAME";'.
512 's:7:"compare";s:8:"CONTAINS";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:4;'.
513 'a:5:{s:4:"type";s:5:"field";s:4:"name";s:33:"PRODUCT.GoodsSection:PRODUCT.SECT";'.
514 's:7:"compare";s:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}s:5:"LOGIC";'.
515 's:3:"AND";}}s:4:"sort";i:6;s:9:"sort_type";s:4:"DESC";s:5:"limit";N;}'
519 'owner' =>
'sale_SaleProduct',
520 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES'),
521 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_DESCR'),
523 'settings' => unserialize(
'a:7:{s:6:"entity";s:11:"SaleProduct";s:6:"period";a:2:{s:4:"type";'.
524 's:3:"all";s:5:"value";N;}s:6:"select";a:5:{i:0;a:1:{s:4:"name";s:2:"ID";}i:2;a:1:{s:4:"name";'.
525 's:4:"NAME";}i:1;a:2:{s:4:"name";s:8:"QUANTITY";s:5:"alias";s:7:"xxxxxxx";}i:3;'.
526 'a:2:{s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";s:5:"alias";s:4:"xxxx";}i:5;a:2:{s:4:"name";'.
527 's:30:"SUMMARY_PRICE_IN_SITE_CURRENCY";s:5:"alias";s:15:"xxxxxxxxxxxxxxx";}}s:6:"filter";'.
528 'a:1:{i:0;a:10:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";s:4:"NAME";s:7:"compare";'.
529 's:8:"CONTAINS";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:1;a:5:{s:4:"type";s:5:"field";'.
530 's:4:"name";s:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";s:7:"compare";'.
531 's:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:2;a:5:{s:4:"type";s:5:"field";'.
532 's:4:"name";s:8:"QUANTITY";s:7:"compare";s:16:"GREATER_OR_EQUAL";s:5:"value";s:0:"";'.
533 's:10:"changeable";s:1:"1";}i:3;a:5:{s:4:"type";s:5:"field";s:4:"name";s:8:"QUANTITY";'.
534 's:7:"compare";s:13:"LESS_OR_EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:4;'.
535 'a:5:{s:4:"type";s:5:"field";s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";s:7:"compare";'.
536 's:16:"GREATER_OR_EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:5;a:5:{s:4:"type";'.
537 's:5:"field";s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";s:7:"compare";s:13:"LESS_OR_EQUAL";'.
538 's:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:6;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
539 's:30:"SUMMARY_PRICE_IN_SITE_CURRENCY";s:7:"compare";s:16:"GREATER_OR_EQUAL";s:5:"value";'.
540 's:0:"";s:10:"changeable";s:1:"1";}i:7;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
541 's:30:"SUMMARY_PRICE_IN_SITE_CURRENCY";s:7:"compare";s:13:"LESS_OR_EQUAL";s:5:"value";s:0:"";'.
542 's:10:"changeable";s:1:"1";}i:8;a:5:{s:4:"type";s:5:"field";s:4:"name";s:6:"ACTIVE";'.
543 's:7:"compare";s:5:"EQUAL";s:5:"value";s:4:"true";s:10:"changeable";s:1:"1";}s:5:"LOGIC";'.
544 's:3:"AND";}}s:4:"sort";i:1;s:9:"sort_type";s:3:"ASC";s:5:"limit";N;}'
548 'owner' =>
'sale_SaleOrder',
549 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_BEST_CLIENTS'),
550 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_BEST_CLIENTS_DESCR'),
552 'settings' => unserialize(
553 'a:7:{s:6:"entity";s:9:"SaleOrder";s:6:"period";a:2:{s:4:"type";s:5:"month";s:5:"value";N;}'.
554 's:6:"select";a:7:{i:7;a:1:{s:4:"name";s:7:"USER.ID";}i:6;a:1:{s:4:"name";'.
555 's:15:"USER.SHORT_NAME";}i:0;a:3:{s:4:"name";s:2:"ID";s:5:"alias";s:14:"xxxxxxxxxxxxxx";'.
556 's:4:"aggr";s:14:"COUNT_DISTINCT";}i:2;a:3:{s:4:"name";s:14:"PRODUCTS_QUANT";s:5:"alias";'.
557 's:14:"xxxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";}i:3;a:3:{s:4:"name";s:12:"DISCOUNT_ALL";'.
558 's:5:"alias";s:15:"xxxxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";}i:14;a:3:{s:4:"name";'.
559 's:15:"SUM_PAID_FORREP";s:5:"alias";s:13:"xxxxxxxxxxxxx";s:4:"aggr";s:3:"AVG";}i:5;'.
560 'a:3:{s:4:"name";s:15:"SUM_PAID_FORREP";s:5:"alias";s:16:"xxxxxxxxxxxxxxxx";s:4:"aggr";'.
561 's:3:"SUM";}}s:6:"filter";a:1:{i:0;a:4:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
562 's:4:"USER";s:7:"compare";s:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:1;'.
563 'a:5:{s:4:"type";s:5:"field";s:4:"name";s:25:"USER.UserGroup:USER.GROUP";s:7:"compare";'.
564 's:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:2;a:5:{s:4:"type";'.
565 's:5:"field";s:4:"name";s:5:"PAYED";s:7:"compare";s:5:"EQUAL";s:5:"value";s:4:"true";'.
566 's:10:"changeable";s:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:5;s:9:"sort_type";'.
567 's:4:"DESC";s:5:"limit";N;}'
571 'owner' =>
'sale_User',
572 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS'),
573 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS_DESCR'),
575 'settings' => unserialize(
'a:7:{s:6:"entity";s:16:"Bitrix\Main\User";s:6:"period";a:2:{s:4:"type";s:5:"month";'.
576 's:5:"value";N;}s:6:"select";a:7:{i:11;a:1:{s:4:"name";s:14:"DATE_REG_SHORT";}i:0;'.
577 'a:3:{s:4:"name";s:2:"ID";s:5:"alias";s:18:"xxxxxxxxxxxxxxxxxx";s:4:"aggr";'.
578 's:14:"COUNT_DISTINCT";}i:3;a:3:{s:4:"name";s:35:"Bitrix\Sale\Internals\Order:USER.ID";s:5:"alias";'.
579 's:14:"xxxxxxxxxxxxxx";s:4:"aggr";s:14:"COUNT_DISTINCT";}i:4;a:3:{s:4:"name";'.
580 's:45:"Bitrix\Sale\Internals\Order:USER.DISCOUNT_ALL";s:5:"alias";s:15:"xxxxxxxxxxxxxxx";'.
581 's:4:"aggr";s:3:"SUM";}i:9;a:3:{s:4:"name";s:38:"Bitrix\Sale\Internals\Order:USER.PRICE";'.
582 's:5:"alias";s:13:"xxxxxxxxxxxxx";s:4:"aggr";s:3:"AVG";}i:5;a:3:{s:4:"name";'.
583 's:38:"Bitrix\Sale\Internals\Order:USER.PRICE";s:5:"alias";s:16:"xxxxxxxxxxxxxxxx";s:4:"aggr";'.
584 's:3:"SUM";}i:6;a:3:{s:4:"name";s:48:"Bitrix\Sale\Internals\Order:USER.SUM_PAID_FORREP";'.
585 's:5:"alias";s:8:"xxxxxxxx";s:4:"aggr";s:3:"SUM";}}s:6:"filter";a:1:{i:0;a:2:{i:0;'.
586 'a:5:{s:4:"type";s:5:"field";s:4:"name";s:20:"UserGroup:USER.GROUP";s:7:"compare";'.
587 's:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}s:5:"LOGIC";s:3:"AND";}}'.
588 's:4:"sort";i:11;s:9:"sort_type";s:4:"DESC";s:5:"limit";N;}'
592 'owner' =>
'sale_SaleOrder',
593 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_SALES'),
594 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_SALES_DESCR'),
596 'settings' => unserialize(
'a:7:{s:6:"entity";s:9:"SaleOrder";s:6:"period";a:2:{s:4:"type";'.
597 's:5:"month";s:5:"value";N;}s:6:"select";a:8:{i:1;a:2:{s:4:"name";s:17:"DATE_INSERT_SHORT";'.
598 's:5:"alias";s:4:"xxxx";}i:0;a:3:{s:4:"name";s:2:"ID";s:5:"alias";s:14:"xxxxxxxxxxxxxx";'.
599 's:4:"aggr";s:14:"COUNT_DISTINCT";}i:13;a:3:{s:4:"name";s:14:"PRODUCTS_QUANT";s:5:"alias";'.
600 's:13:"xxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";}i:2;a:3:{s:4:"name";s:9:"TAX_VALUE";'.
601 's:5:"alias";s:6:"xxxxxx";s:4:"aggr";s:3:"SUM";}i:3;a:3:{s:4:"name";s:14:"PRICE_DELIVERY";'.
602 's:5:"alias";s:8:"xxxxxxxx";s:4:"aggr";s:3:"SUM";}i:4;a:3:{s:4:"name";s:12:"DISCOUNT_ALL";'.
603 's:5:"alias";s:6:"xxxxxx";s:4:"aggr";s:3:"SUM";}i:5;a:3:{s:4:"name";s:5:"PRICE";'.
604 's:5:"alias";s:16:"xxxxxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";}i:6;a:3:{s:4:"name";'.
605 's:15:"SUM_PAID_FORREP";s:5:"alias";s:8:"xxxxxxxx";s:4:"aggr";s:3:"SUM";}}s:6:"filter";'.
606 'a:1:{i:0;a:2:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
607 's:25:"USER.UserGroup:USER.GROUP";s:7:"compare";s:5:"EQUAL";s:5:"value";s:0:"";'.
608 's:10:"changeable";s:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:1;s:9:"sort_type";'.
609 's:4:"DESC";s:5:"limit";N;}'
613 'owner' =>
'sale_SaleProduct',
614 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS'),
615 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS_DESCR'),
617 'settings' => unserialize(
'a:10:{s:6:"entity";s:29:"Bitrix\\Sale\\Internals\\Product";'.
618 's:6:"period";a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:4:{i:0;a:2:{'.
619 's:4:"name";s:2:"ID";s:5:"alias";s:9:"xxxxxxxxx";}i:1;a:2:{s:4:"name";s:4:"NAME";s:5:"alias";'.
620 's:19:"xxxxxxxxxxxxxxxxxxx";}i:2;a:3:{s:4:"name";s:31:"SUBSCRIPTIONS_IN_PERIOD_BY_SHOP";'.
621 's:5:"alias";s:15:"xxxxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";}i:3;a:3:{s:4:"name";'.
622 's:22:"PRICE_IN_SITE_CURRENCY";s:5:"alias";s:15:"xxxxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";}}'.
623 's:6:"filter";a:1:{i:0;a:6:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
624 's:31:"SUBSCRIPTIONS_IN_PERIOD_BY_SHOP";s:7:"compare";s:7:"GREATER";s:5:"value";s:1:"0";'.
625 's:10:"changeable";s:1:"0";}i:1;a:5:{s:4:"type";s:5:"field";s:4:"name";s:4:"NAME";'.
626 's:7:"compare";s:8:"CONTAINS";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:2;a:5:{'.
627 's:4:"type";s:5:"field";s:4:"name";s:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";'.
628 's:7:"compare";s:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";s:1:"1";}i:3;a:5:{'.
629 's:4:"type";s:5:"field";s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";s:7:"compare";'.
630 's:16:"GREATER_OR_EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:4;a:5:{s:4:"type";'.
631 's:5:"field";s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";s:7:"compare";s:13:"LESS_OR_EQUAL";'.
632 's:5:"value";s:0:"";s:10:"changeable";s:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:0;'.
633 's:9:"sort_type";s:3:"ASC";s:5:"limit";N;s:12:"red_neg_vals";b:0;s:13:"grouping_mode";b:0;'.
638 'owner' =>
'sale_SaleProduct',
639 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_MOST_VIEWED_GOODS'),
640 'description' =>
GetMessage(
'SALE_REPORT_DEFAULT_MOST_VIEWED_GOODS_DESCR'),
642 'settings' => unserialize(
'a:7:{s:6:"entity";s:11:"SaleProduct";s:6:"period";a:2:{s:4:"type";'.
643 's:5:"month";s:5:"value";N;}s:6:"select";a:7:{i:0;a:1:{s:4:"name";s:2:"ID";}i:1;'.
644 'a:1:{s:4:"name";s:4:"NAME";}i:7;a:2:{s:4:"name";s:23:"VIEWS_IN_PERIOD_BY_SHOP";s:5:"alias";'.
645 's:10:"xxxxxxxxxx";}i:8;a:2:{s:4:"name";s:24:"ORDERS_IN_PERIOD_BY_SHOP";s:5:"alias";'.
646 's:18:"xxxxxxxxxxxxxxxxxx";}i:14;a:1:{s:4:"name";s:10:"CONVERSION";}i:12;a:2:{s:4:"name";'.
647 's:32:"SALED_PRODUCTS_IN_PERIOD_BY_SHOP";s:5:"alias";s:7:"xxxxxxx";}i:5;a:2:{s:4:"name";'.
648 's:22:"PRICE_IN_SITE_CURRENCY";s:5:"alias";s:15:"xxxxxxxxxxxxxxx";}}s:6:"filter";a:1:{i:0;'.
649 'a:7:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";s:4:"NAME";s:7:"compare";'.
650 's:8:"CONTAINS";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:1;a:5:{s:4:"type";s:5:"field";'.
651 's:4:"name";s:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";s:7:"compare";'.
652 's:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:2;a:5:{s:4:"type";s:5:"field";'.
653 's:4:"name";s:10:"CONVERSION";s:7:"compare";s:16:"GREATER_OR_EQUAL";s:5:"value";s:0:"";'.
654 's:10:"changeable";s:1:"1";}i:3;a:5:{s:4:"type";s:5:"field";s:4:"name";s:23:"VIEWS_IN_PERIOD_BY_SHOP";'.
655 's:7:"compare";s:16:"GREATER_OR_EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:4;'.
656 'a:5:{s:4:"type";s:5:"field";s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";s:7:"compare";'.
657 's:16:"GREATER_OR_EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:5;a:5:{s:4:"type";'.
658 's:5:"field";s:4:"name";s:6:"ACTIVE";s:7:"compare";s:5:"EQUAL";s:5:"value";s:4:"true";'.
659 's:10:"changeable";s:1:"0";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:7;s:9:"sort_type";s:4:"DESC";'.
666 'owner' =>
'sale_SaleProduct',
667 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES__12_5'),
670 'settings' => unserialize(
'a:11:{s:6:"entity";s:29:"Bitrix\Sale\Internals\Product";s:6:"period";'.
671 'a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:6:{i:2;a:4:{s:4:"name";'.
672 's:56:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.NAME";'.
673 's:5:"alias";s:9:"xxxxxxxxx";s:4:"aggr";s:12:"GROUP_CONCAT";s:8:"grouping";'.
674 'b:1;}i:8;a:2:{s:4:"name";s:15:"NAME_WITH_IDENT";s:8:"grouping";b:1;}i:12;'.
675 'a:3:{s:4:"name";s:34:"ARRIVED_PRODUCTS_IN_PERIOD_BY_SHOP";s:5:"alias";s:6:"xxxxxx";'.
676 's:17:"grouping_subtotal";b:1;}i:6;a:3:{s:4:"name";s:35:"CONSUMED_PRODUCTS_IN_PERIOD_BY_SHOP";'.
677 's:5:"alias";s:6:"xxxxxx";s:17:"grouping_subtotal";b:1;}i:3;a:3:{s:4:"name";'.
678 's:8:"QUANTITY";s:5:"alias";s:16:"xxxxxxxx xxxxxxx";s:17:"grouping_subtotal";'.
679 'b:1;}i:11;a:1:{s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";}}s:6:"filter";'.
680 'a:1:{i:0;a:3:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";s:6:"ACTIVE";s:7:"compare";'.
681 's:5:"EQUAL";s:5:"value";s:4:"true";s:10:"changeable";s:1:"0";}i:1;a:5:{s:4:"type";'.
682 's:5:"field";s:4:"name";s:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";'.
683 's:7:"compare";s:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";'.
684 's:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:8;s:9:"sort_type";s:3:"ASC";'.
685 's:5:"limit";N;s:12:"red_neg_vals";b:1;s:13:"grouping_mode";b:1;s:5:"chart";'.
686 'N;s:6:"mobile";a:1:{s:7:"enabled";b:1;}}')
689 'owner' =>
'sale_SaleProduct',
690 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_PRICE_LIST__12_5'),
692 'mark_default' => 10,
693 'settings' => unserialize(
'a:12:{s:6:"entity";s:29:"Bitrix\Sale\Internals\Product";s:6:"period";'.
694 'a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:2:{i:4;a:4:{s:4:"name";'.
695 's:56:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.NAME";'.
696 's:5:"alias";s:9:"xxxxxxxxx";s:4:"aggr";s:12:"GROUP_CONCAT";s:8:"grouping";'.
697 'b:1;}i:12;a:2:{s:4:"name";s:15:"NAME_WITH_IDENT";s:8:"grouping";b:1;}}s:6:"filter";'.
698 'a:1:{i:0;a:3:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";s:6:"ACTIVE";s:7:"compare";'.
699 's:5:"EQUAL";s:5:"value";s:4:"true";s:10:"changeable";s:1:"0";}i:1;a:5:{s:4:"type";'.
700 's:5:"field";s:4:"name";s:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";'.
701 's:7:"compare";s:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";'.
702 's:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:12;s:9:"sort_type";s:3:"ASC";'.
703 's:5:"limit";N;s:12:"red_neg_vals";b:1;s:13:"grouping_mode";b:1;s:11:"helper_spec";'.
704 'a:1:{s:5:"ucspt";b:1;}s:5:"chart";N;s:6:"mobile";a:1:{s:7:"enabled";b:1;}}')
707 'owner' =>
'sale_SaleBasket',
708 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT__12_5'),
710 'mark_default' => 11,
711 'settings' => unserialize(
'a:11:{s:6:"entity";s:28:"Bitrix\Sale\Internals\Basket";s:6:"period";'.
712 'a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:6:{i:6;a:2:{s:4:"name";'.
713 's:15:"NAME_WITH_IDENT";s:8:"grouping";b:1;}i:7;a:4:{s:4:"name";s:8:"QUANTITY";'.
714 's:5:"alias";s:10:"xxxxxxxxxx";s:4:"aggr";s:3:"SUM";s:17:"grouping_subtotal";'.
715 'b:1;}i:5;a:4:{s:4:"name";s:13:"SUMMARY_PRICE";s:5:"alias";s:16:"xxxxxxxxx xxxxxx";'.
716 's:4:"aggr";s:3:"SUM";s:17:"grouping_subtotal";b:1;}i:9;a:4:{s:4:"name";'.
717 's:24:"SUMMARY_PURCHASING_PRICE";s:5:"alias";s:13:"xxxxxxxxxxxxx";s:4:"aggr";s:3:"SUM";'.
718 's:17:"grouping_subtotal";b:1;}i:10;a:4:{s:4:"name";s:12:"GROSS_PROFIT";s:5:"alias";'.
719 's:15:"xxxxxxx xxxxxxx";s:4:"aggr";s:3:"SUM";s:17:"grouping_subtotal";b:1;}i:11;'.
720 'a:4:{s:4:"name";s:13:"PROFITABILITY";s:5:"alias";s:18:"xxxxxxxxxxxxxx (%)";s:4:"aggr";'.
721 's:3:"AVG";s:17:"grouping_subtotal";b:1;}}s:6:"filter";a:1:{i:0;a:4:{i:0;a:5:{s:4:"type";'.
722 's:5:"field";s:4:"name";s:11:"ORDER.PAYED";s:7:"compare";s:5:"EQUAL";s:5:"value";'.
723 's:4:"true";s:10:"changeable";s:1:"0";}i:1;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
724 's:4:"NAME";s:7:"compare";s:8:"CONTAINS";s:5:"value";s:0:"";s:10:"changeable";'.
725 's:1:"1";}i:2;a:5:{s:4:"type";s:5:"field";s:4:"name";s:33:"PRODUCT.GoodsSection:PRODUCT.SECT";'.
726 's:7:"compare";s:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";'.
727 's:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:6;s:9:"sort_type";s:3:"ASC";'.
728 's:5:"limit";N;s:12:"red_neg_vals";b:1;s:13:"grouping_mode";b:1;s:5:"chart";'.
729 'a:4:{s:7:"display";b:1;s:4:"type";s:3:"pie";s:8:"x_column";i:6;s:9:"y_columns";'.
730 'a:1:{i:0;i:10;}}s:6:"mobile";a:1:{s:7:"enabled";b:1;}}')
733 'owner' =>
'sale_SaleBasket',
734 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_CLIENTS_PROFIT__12_5'),
736 'mark_default' => 12,
737 'settings' => unserialize(
'a:11:{s:6:"entity";s:28:"Bitrix\Sale\Internals\Basket";s:6:"period";'.
738 'a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:7:{i:9;a:2:{s:4:"name";'.
739 's:21:"FUSER.USER.SHORT_NAME";s:8:"grouping";b:1;}i:6;a:2:{s:4:"name";s:15:"NAME_WITH_IDENT";'.
740 's:8:"grouping";b:1;}i:7;a:4:{s:4:"name";s:8:"QUANTITY";s:5:"alias";s:10:"xxxxxxxxxx";'.
741 's:4:"aggr";s:3:"SUM";s:17:"grouping_subtotal";b:1;}i:5;a:4:{s:4:"name";s:13:"SUMMARY_PRICE";'.
742 's:5:"alias";s:16:"xxxxxxxxx xxxxxx";s:4:"aggr";s:3:"SUM";s:17:"grouping_subtotal";'.
743 'b:1;}i:15;a:4:{s:4:"name";s:24:"SUMMARY_PURCHASING_PRICE";s:5:"alias";s:13:"xxxxxxxxxxxxx";'.
744 's:4:"aggr";s:3:"SUM";s:17:"grouping_subtotal";b:1;}i:13;a:4:{s:4:"name";'.
745 's:12:"GROSS_PROFIT";s:5:"alias";s:15:"xxxxxxx xxxxxxx";s:4:"aggr";s:3:"SUM";'.
746 's:17:"grouping_subtotal";b:1;}i:14;a:4:{s:4:"name";s:13:"PROFITABILITY";'.
747 's:5:"alias";s:18:"xxxxxxxxxxxxxx (%)";s:4:"aggr";s:3:"AVG";s:17:"grouping_subtotal";'.
748 'b:1;}}s:6:"filter";a:1:{i:0;a:6:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
749 's:11:"ORDER.PAYED";s:7:"compare";s:5:"EQUAL";s:5:"value";s:4:"true";s:10:"changeable";'.
750 's:1:"0";}i:1;a:5:{s:4:"type";s:5:"field";s:4:"name";s:4:"NAME";s:7:"compare";'.
751 's:8:"CONTAINS";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:2;a:5:{s:4:"type";'.
752 's:5:"field";s:4:"name";s:33:"PRODUCT.GoodsSection:PRODUCT.SECT";s:7:"compare";'.
753 's:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";s:1:"1";}i:3;'.
754 'a:5:{s:4:"type";s:5:"field";s:4:"name";s:10:"FUSER.USER";s:7:"compare";'.
755 's:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}i:4;a:5:{s:4:"type";'.
756 's:5:"field";s:4:"name";s:31:"FUSER.USER.UserGroup:USER.GROUP";s:7:"compare";'.
757 's:5:"EQUAL";s:5:"value";s:0:"";s:10:"changeable";s:1:"1";}s:5:"LOGIC";s:3:"AND";'.
758 '}}s:4:"sort";i:6;s:9:"sort_type";s:3:"ASC";s:5:"limit";N;s:12:"red_neg_vals";'.
759 'b:1;s:13:"grouping_mode";b:1;s:5:"chart";N;s:6:"mobile";a:1:{s:7:"enabled";b:1;}}')
762 'owner' =>
'sale_SaleProduct',
763 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_MOB__12_5'),
765 'mark_default' => 13,
766 'settings' => unserialize(
'a:11:{s:6:"entity";s:29:"Bitrix\Sale\Internals\Product";s:6:"period";'.
767 'a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:3:{i:2;a:4:{s:4:"name";'.
768 's:56:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.NAME";s:5:"alias";'.
769 's:9:"xxxxxxxxx";s:4:"aggr";s:12:"GROUP_CONCAT";s:8:"grouping";b:1;}i:8;a:2:{s:4:"name";'.
770 's:15:"NAME_WITH_IDENT";s:8:"grouping";b:1;}i:3;a:3:{s:4:"name";s:8:"QUANTITY";'.
771 's:5:"alias";s:16:"xxxxxxxx xxxxxxx";s:17:"grouping_subtotal";b:1;}}s:6:"filter";'.
772 'a:1:{i:0;a:3:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";s:6:"ACTIVE";s:7:"compare";'.
773 's:5:"EQUAL";s:5:"value";s:4:"true";s:10:"changeable";s:1:"0";}i:1;a:5:{s:4:"type";'.
774 's:5:"field";s:4:"name";s:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";'.
775 's:7:"compare";s:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";'.
776 's:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:8;s:9:"sort_type";s:3:"ASC";'.
777 's:5:"limit";N;s:12:"red_neg_vals";b:1;s:13:"grouping_mode";b:1;s:5:"chart";'.
778 'N;s:6:"mobile";a:1:{s:7:"enabled";b:1;}}')
781 'owner' =>
'sale_SaleProduct',
782 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_PRICE_LIST_MOB__12_5'),
784 'mark_default' => 14,
785 'settings' => unserialize(
'a:11:{s:6:"entity";s:29:"Bitrix\Sale\Internals\Product";s:6:"period";'.
786 'a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:3:{i:4;a:4:{s:4:"name";'.
787 's:56:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.NAME";s:5:"alias";'.
788 's:9:"xxxxxxxxx";s:4:"aggr";s:12:"GROUP_CONCAT";s:8:"grouping";b:1;}i:12;'.
789 'a:2:{s:4:"name";s:15:"NAME_WITH_IDENT";s:8:"grouping";b:1;}i:13;a:1:{s:4:"name";'.
790 's:22:"PRICE_IN_SITE_CURRENCY";}}s:6:"filter";a:1:{i:0;a:3:{i:0;a:5:{s:4:"type";'.
791 's:5:"field";s:4:"name";s:6:"ACTIVE";s:7:"compare";s:5:"EQUAL";s:5:"value";'.
792 's:4:"true";s:10:"changeable";s:1:"0";}i:1;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
793 's:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";s:7:"compare";'.
794 's:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";s:1:"1";}s:5:"LOGIC";'.
795 's:3:"AND";}}s:4:"sort";i:12;s:9:"sort_type";s:3:"ASC";s:5:"limit";N;s:12:"red_neg_vals";'.
796 'b:1;s:13:"grouping_mode";b:1;s:5:"chart";N;s:6:"mobile";a:1:{s:7:"enabled";b:1;}}')
801 'owner' =>
'sale_SaleProduct',
802 'title' =>
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_BY_STORE__12_5_1'),
804 'mark_default' => 15,
805 'settings' => unserialize(
'a:11:{s:6:"entity";s:29:"Bitrix\Sale\Internals\Product";s:6:"period";'.
806 'a:2:{s:4:"type";s:5:"month";s:5:"value";N;}s:6:"select";a:7:{i:16;a:2:{s:4:"name";'.
807 's:37:"StoreProduct:SALE_PRODUCT.STORE.TITLE";s:8:"grouping";b:1;}i:2;a:4:{s:4:"name";'.
808 's:56:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.NAME";s:5:"alias";'.
809 's:9:"xxxxxxxxx";s:4:"aggr";s:12:"GROUP_CONCAT";s:8:"grouping";b:1;}i:8;'.
810 'a:2:{s:4:"name";s:15:"NAME_WITH_IDENT";s:8:"grouping";b:1;}i:25;a:3:{s:4:"name";'.
811 's:35:"ARRIVED_PRODUCTS_IN_PERIOD_BY_STORE";s:5:"alias";'.
812 's:6:"xxxxxx";s:17:"grouping_subtotal";b:1;}i:26;a:3:{s:4:"name";'.
813 's:35:"EXPENSE_PRODUCTS_IN_PERIOD_BY_STORE";'.
814 's:5:"alias";s:6:"xxxxxx";s:17:"grouping_subtotal";b:1;}i:23;a:3:{s:4:"name";'.
815 's:32:"StoreProduct:SALE_PRODUCT.AMOUNT";s:5:"alias";s:16:"xxxxxxxx xxxxxxx";'.
816 's:17:"grouping_subtotal";b:1;}i:11;a:1:{s:4:"name";s:22:"PRICE_IN_SITE_CURRENCY";'.
817 '}}s:6:"filter";a:1:{i:0;a:4:{i:0;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
818 's:6:"ACTIVE";s:7:"compare";s:5:"EQUAL";s:5:"value";s:4:"true";s:10:"changeable";'.
819 's:1:"0";}i:1;a:5:{s:4:"type";s:5:"field";s:4:"name";s:25:"StoreProduct:SALE_PRODUCT";'.
820 's:7:"compare";s:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";'.
821 's:1:"1";}i:2;a:5:{s:4:"type";s:5:"field";s:4:"name";'.
822 's:51:"IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION";'.
823 's:7:"compare";s:5:"EQUAL";s:5:"value";a:1:{i:0;s:0:"";}s:10:"changeable";'.
824 's:1:"1";}s:5:"LOGIC";s:3:"AND";}}s:4:"sort";i:8;s:9:"sort_type";s:3:"ASC";'.
825 's:5:"limit";N;s:12:"red_neg_vals";b:1;s:13:"grouping_mode";b:1;s:5:"chart";'.
826 'N;s:6:"mobile";a:1:{s:7:"enabled";b:1;}}')
831 foreach ($reports as $version => &$vreports)
833 foreach ($vreports as $num => &$report)
835 if ($version ===
'12.0.0' && $report[
'mark_default'] === 1)
837 $report[
'settings'][
'select'][4][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_LEFT_BASKETS_ALIAS_4');
838 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_LEFT_BASKETS_ALIAS_5');
839 $report[
'settings'][
'select'][6][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_LEFT_BASKETS_ALIAS_6');
840 $report[
'settings'][
'select'][7][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_LEFT_BASKETS_ALIAS_7');
842 if ($version ===
'12.0.0' && $report[
'mark_default'] === 2)
844 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT_ALIAS_3');
845 $report[
'settings'][
'select'][4][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT_ALIAS_4');
846 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT_ALIAS_5');
847 $report[
'settings'][
'select'][6][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT_ALIAS_6');
848 $report[
'settings'][
'select'][14][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT_ALIAS_14');
850 if ($version ===
'12.0.0' && $report[
'mark_default'] === 3)
852 $report[
'settings'][
'select'][1][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_ALIAS_1');
853 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_ALIAS_3');
854 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_ALIAS_5');
856 if ($version ===
'12.0.0' && $report[
'mark_default'] === 4)
858 $report[
'settings'][
'select'][0][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_BEST_CLIENTS_ALIAS_0');
859 $report[
'settings'][
'select'][2][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_BEST_CLIENTS_ALIAS_2');
860 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_BEST_CLIENTS_ALIAS_3');
861 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_BEST_CLIENTS_ALIAS_5');
862 $report[
'settings'][
'select'][14][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_BEST_CLIENTS_ALIAS_14');
864 if ($version ===
'12.0.0' && $report[
'mark_default'] === 5)
866 $report[
'settings'][
'select'][0][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS_ALIAS_0');
867 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS_ALIAS_3');
868 $report[
'settings'][
'select'][4][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS_ALIAS_4');
869 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS_ALIAS_5');
870 $report[
'settings'][
'select'][6][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS_ALIAS_6');
871 $report[
'settings'][
'select'][9][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_NEW_CLIENTS_ALIAS_9');
873 if ($version ===
'12.0.0' && $report[
'mark_default'] === 6)
875 $report[
'settings'][
'select'][0][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_0');
876 $report[
'settings'][
'select'][1][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_1');
877 $report[
'settings'][
'select'][2][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_2');
878 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_3');
879 $report[
'settings'][
'select'][4][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_4');
880 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_5');
881 $report[
'settings'][
'select'][6][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_6');
882 $report[
'settings'][
'select'][13][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_SALES_ALIAS_13');
884 if ($version ===
'12.0.0' && $report[
'mark_default'] === 7)
886 $report[
'settings'][
'select'][0][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS_ALIAS_0');
887 $report[
'settings'][
'select'][1][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS_ALIAS_1');
888 $report[
'settings'][
'select'][2][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS_ALIAS_5');
889 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_EXPECTED_GOODS_ALIAS_8');
891 if ($version ===
'12.0.0' && $report[
'mark_default'] === 8)
893 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_VIEWED_GOODS_ALIAS_5');
894 $report[
'settings'][
'select'][7][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_VIEWED_GOODS_ALIAS_7');
895 $report[
'settings'][
'select'][8][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_VIEWED_GOODS_ALIAS_8');
896 $report[
'settings'][
'select'][12][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_MOST_VIEWED_GOODS_ALIAS_12');
898 if ($version ===
'12.5.0' && $report[
'mark_default'] === 9)
900 $report[
'settings'][
'select'][2][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES__12_5_ALIAS_2');
901 $report[
'settings'][
'select'][12][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES__12_5_ALIAS_12');
902 $report[
'settings'][
'select'][6][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES__12_5_ALIAS_6');
903 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES__12_5_ALIAS_3');
905 if ($version ===
'12.5.0' && $report[
'mark_default'] === 10)
907 $report[
'settings'][
'select'][4][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_PRICE_LIST__12_5_ALIAS_4');
909 if ($version ===
'12.5.0' && $report[
'mark_default'] === 11)
911 $report[
'settings'][
'select'][7][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT__12_5_ALIAS_7');
912 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT__12_5_ALIAS_5');
913 $report[
'settings'][
'select'][9][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT__12_5_ALIAS_9');
914 $report[
'settings'][
'select'][10][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT__12_5_ALIAS_10');
915 $report[
'settings'][
'select'][11][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_PROFIT__12_5_ALIAS_11');
917 if ($version ===
'12.5.0' && $report[
'mark_default'] === 12)
919 $report[
'settings'][
'select'][7][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_CLIENTS_PROFIT__12_5_ALIAS_7');
920 $report[
'settings'][
'select'][5][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_CLIENTS_PROFIT__12_5_ALIAS_5');
921 $report[
'settings'][
'select'][15][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_CLIENTS_PROFIT__12_5_ALIAS_15');
922 $report[
'settings'][
'select'][13][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_CLIENTS_PROFIT__12_5_ALIAS_13');
923 $report[
'settings'][
'select'][14][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_CLIENTS_PROFIT__12_5_ALIAS_14');
925 if ($version ===
'12.5.0' && $report[
'mark_default'] === 13)
927 $report[
'settings'][
'select'][2][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_MOB__12_5_ALIAS_2');
928 $report[
'settings'][
'select'][3][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_MOB__12_5_ALIAS_3');
930 if ($version ===
'12.5.0' && $report[
'mark_default'] === 14)
932 $report[
'settings'][
'select'][4][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_PRICE_LIST__12_5_ALIAS_4');
934 if ($version ===
'12.5.1' && $report[
'mark_default'] === 15)
936 $report[
'settings'][
'select'][2][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_BY_STORE__12_5_1_ALIAS_2');
937 $report[
'settings'][
'select'][23][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_BY_STORE__12_5_1_ALIAS_23');
938 $report[
'settings'][
'select'][25][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_BY_STORE__12_5_1_ALIAS_25');
939 $report[
'settings'][
'select'][26][
'alias'] =
GetMessage(
'SALE_REPORT_DEFAULT_GOODS_INVENTORIES_BY_STORE__12_5_1_ALIAS_26');
943 if ($version ===
'12.0.0' && in_array($report[
'mark_default'],
array(2, 3)))
945 unset($vreports[$num]);
956 $arModuleVersion =
array();
957 include(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/sale/install/version.php");
958 return $arModuleVersion[
'VERSION'];
969 $arResponseData =
array();
970 $arbFilterTypeFill =
array();
971 foreach (array_unique($arRequestData) as $filterType)
973 if (empty($arbFilterTypeFill[$filterType]))
978 $arResponseData[$filterType][] =
array(
980 'text' =>
GetMessage(
'REPORT_IGNORE_FILTER_VALUE')
982 foreach(self::getPersonTypes() as $kID => $v)
986 $arResponseData[$filterType][] =
array(
'value' => $kID,
'text' => $v[
'NAME']);
991 $arResponseData[$filterType][] =
array(
993 'text' =>
GetMessage(
'REPORT_IGNORE_FILTER_VALUE')
995 foreach(self::getPaySystemList() as $kID =>
$val)
999 $arResponseData[$filterType][] =
array(
'value' => $kID,
'text' =>
$val[
'value']);
1004 $arResponseData[$filterType][] =
array(
1006 'text' =>
GetMessage(
'REPORT_IGNORE_FILTER_VALUE')
1008 foreach(self::getDeliveryList() as $kID =>
$val)
1012 $arResponseData[$filterType][] =
array(
'value' => $kID,
'text' =>
$val[
'value']);
1017 $arResponseData[$filterType][] =
array(
1019 'text' =>
GetMessage(
'REPORT_IGNORE_FILTER_VALUE')
1022 foreach(self::getCatalogSections() as $kSectionID => $vSection)
1024 if (self::isCatalogCorrespondsDefSite($vSection[
'catalog'][
'ID']))
1027 if ($vSection[
'catalog'][
'ID'] != $prevCatalog)
1029 $arResponseData[$filterType][] =
array(
1030 'value' =>
'c'.$vSection[
'catalog'][
'ID'],
1031 'text' =>
'- '.
GetMessage(
'SALE_REPORT_CONSTRUCT_CATALOG_NAME_LABEL').
1032 ': '.$vSection[
'catalog'][
'NAME']
1035 $prevCatalog = $vSection[
'catalog'][
'ID'];
1036 $arResponseData[$filterType][] =
array(
'value' => $kSectionID,
'text' =>
' '.$vSection[
'name']);
1042 $arbFilterTypeFill[$filterType] =
true;
1044 return $arResponseData;
1051 $html .=
'<option value="">'.GetMessage(
'REPORT_IGNORE_FILTER_VALUE').
'</option>';
1052 foreach(self::getCatalogSections() as $kSectionID => $vSection)
1054 if (self::isCatalogCorrespondsDefSite($vSection[
'catalog'][
'ID']))
1057 if ($vSection[
'catalog'][
'ID'] != $prevCatalog)
1059 $html .=
'<option value="c'.htmlspecialcharsbx($vSection[
'catalog'][
'ID']).
'">- '.
GetMessage(
'SALE_REPORT_CONSTRUCT_CATALOG_NAME_LABEL').
1060 ': '.htmlspecialcharsbx($vSection[
'catalog'][
'NAME']).
'</option>';
1062 $prevCatalog = $vSection[
'catalog'][
'ID'];
1063 $html .=
'<option value="'.htmlspecialcharsbx($kSectionID).
'"> '.
htmlspecialcharsbx($vSection[
'name']).
'</option>';
1072 if (self::$reportCurrencyId != self::$siteCurrencyId)
1084 private static $monetaryFields =
array(
1093 private static $goodsQuantityFields =
array(
1097 private static $withoutTotalFields =
array(
1101 private static $userNotAuthNameFields =
array();
1105 return 'Bitrix\Sale\Internals\Order';
1119 'DATE_INSERT_SHORT',
1120 'DATE_UPDATE_SHORT',
1126 'EMP_STATUS_BY' =>
array(
1134 'DATE_STATUS_SHORT',
1138 'Payment:ORDER' =>
array(
1143 'EMP_PAID_BY' =>
array(
1159 'RESPONSIBLE_BY' =>
array(
1169 'Shipment:REPS_ORDER' =>
array(
1174 'EMP_ALLOW_DELIVERY_BY' =>
array(
1182 'DATE_ALLOW_DELIVERY_SHORT',
1184 'DELIVERY_DOC_DATE_SHORT',
1186 'EMP_DEDUCTED_BY' =>
array(
1194 'DATE_DEDUCTED_SHORT',
1199 'RESPONSIBLE_BY' =>
array(
1209 'EMP_CANCELED_BY' =>
array(
1217 'DATE_CANCELED_SHORT',
1233 'UserGroup:USER.GROUP' =>
array(
1244 array(
'name' =>
'ID'),
1245 array(
'name' =>
'DATE_INSERT_SHORT')
1251 return array_merge(parent::getCalcVariations(),
array(
1257 'USER.UserGroup:USER.GROUP.ID' =>
array(
1261 'USER.UserGroup:USER.GROUP.NAME' =>
array(
1270 return array_merge(parent::getCompareVariations(),
array(
1283 'PERSON_TYPE_ID' =>
array(
1291 'USER.UserGroup:USER.GROUP' =>
array(
1295 '\Bitrix\Main\User' =>
array(
1298 '\Bitrix\Main\Group' =>
array(
1310 if(!is_null($date_to))
1314 '<=DATE_INSERT_SHORT' => $date_to,
1315 '=DATE_INSERT_SHORT' =>
null
1319 if(!is_null($date_from))
1323 '>=DATE_INSERT_SHORT' => $date_from,
1324 '=DATE_INSERT_SHORT' =>
null
1330 '=LID' =>
$DB->ForSql(self::getDefaultSiteId())
1338 if ($field->getRefEntityName() ==
'\Bitrix\Main\User')
1341 if ($filterElement[
'value'])
1343 $res = CUser::GetByID($filterElement[
'value']);
1348 $username = CUser::FormatName(CSite::GetNameFormat(
null, self::getDefaultSiteId()),
$user,
true,
false);
1349 $filterElement[
'value'] =
array(
'id' =>
$user[
'ID'],
'name' => $username);
1353 $filterElement[
'value'] =
array(
'id' => $filterElement[
'value'],
'name' =>
GetMessage(
'REPORT_USER_NOT_FOUND'));
1358 $filterElement[
'value'] =
array(
'id' =>
'');
1361 else if ($field->getRefEntityName() ==
'\Bitrix\Main\Group')
1364 if ($filterElement[
'value'])
1367 $group =
$res->fetch();
1371 $filterElement[
'value'] =
array(
'id' => $group[
'ID'],
'name' => $group[
'NAME']);
1375 $filterElement[
'value'] =
array(
'id' => $filterElement[
'value'],
'name' =>
GetMessage(
'SALE_REPORT_GROUP_NOT_FOUND'));
1380 $filterElement[
'value'] =
array(
'id' =>
'');
1388 foreach (
$rows as &$row)
1390 foreach ($row as
$k => &$v)
1392 if (!array_key_exists(
$k, $columnInfo))
1397 $cInfo = &$columnInfo[
$k];
1401 foreach ($v as &$subv)
1403 self::formatResultValue(
$k, $subv, $row, $cInfo, $total);
1408 self::formatResultValue(
$k, $v, $row, $cInfo, $total);
1413 unset($row, $v, $subv);
1417 public static function formatResultValue(
$k, &$v, &$row, &$cInfo, $total, &$customChartValue =
null)
1419 $dataType = self::getFieldDataType($cInfo[
'field']);
1422 if ($dataType !==
'float' )
1424 parent::formatResultValue(
$k, $v, $row, $cInfo, $total);
1427 if (
$k ===
'PERSON_TYPE_ID')
1429 $v = self::$personTypes[$v][
'NAME'];
1431 else if (
$k ===
'LID')
1433 $v = self::$sitelist[$v];
1436 else if (
$k ===
'SALE_ORDER_USER_EMAIL')
1438 if (is_null($v) || empty($v) || $v ==
' ') unset($row[
'__HREF_'.
$k]);
1444 if (in_array($dataType,
array(
'integer',
'float')))
1451 if (empty($cInfo[
'aggr']))
1453 if (($cInfo[
'field']->getEntity()->
getName() ===
'Shipment'
1454 && in_array($cInfo[
'field']->
getName(),
array(
'ID',
'DELIVERY_ID',
'DELIVERY_NAME'),
true))
1455 || ($cInfo[
'field']->getEntity()->
getName() ===
'Payment'
1456 && in_array($cInfo[
'field']->
getName(),
array(
'ID',
'PAY_SYSTEM_ID',
'PAY_SYSTEM_NAME'),
true)))
1458 if (is_null($v) || empty($v) || $v ==
' ')
1460 unset($row[
'__HREF_'.
$k]);
1466 foreach (self::$monetaryFields as $monField)
1468 if (preg_match(
'/'.$monField.
'$/',
$k))
1471 $v = number_format(doubleval($v), 2,
'.',
' ');
1477 foreach (self::$goodsQuantityFields as $qField)
1479 if (preg_match(
'/'.$qField.
'$/',
$k))
1481 if (!empty($v) && !is_null($v) && $v !=
' ')
1483 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
1484 else $v = sprintf(
'%d', round($v,0));
1491 foreach (self::$userNotAuthNameFields as $uField)
1493 if (preg_match(
'/'.$uField.
'$/',
$k))
1495 if (empty($v) || is_null($v) || $v ==
' ')
1497 $v =
GetMessage(
'SALE_REPORT_USER_NOT_AUTH');
1508 $bFormatOnly =
true;
1509 static::formatResultsTotal($paramTotal, $viewColumns, $bFormatOnly);
1514 parent::formatResultsTotal($total, $columnInfo);
1516 foreach ($total as
$k => &$v)
1519 foreach (self::$monetaryFields as $monField)
1521 if (preg_match(
'/'.$monField.
'$/',
$k))
1524 $v = number_format(doubleval($v), 2,
'.',
' ');
1530 foreach (self::$goodsQuantityFields as $qField)
1532 if (preg_match(
'/'.$qField.
'$/',
$k))
1534 if (!empty($v) && !is_null($v) && $v !=
' ')
1536 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
1537 else $v = sprintf(
'%d', round($v,0));
1544 foreach (self::$withoutTotalFields as $wtField)
1546 if (preg_match(
'/TOTAL_'.$wtField.
'$/',
$k))
1558 if (empty($elem[
'aggr']))
1560 $field = $fList[$elem[
'name']];
1562 if ($field->getEntity()->getName() ==
'User')
1568 'EMP_CANCELED_BY.EMAIL',
1569 'EMP_STATUS_BY.EMAIL',
1570 'Payment:ORDER.EMP_PAID_BY.EMAIL',
1571 'Payment:ORDER.RESPONSIBLE_BY.EMAIL',
1572 'Shipment:REPS_ORDER.EMP_ALLOW_DELIVERY_BY.EMAIL',
1573 'Shipment:REPS_ORDER.EMP_DEDUCTED_BY.EMAIL',
1574 'Shipment:REPS_ORDER.RESPONSIBLE_BY.EMAIL'
1578 $href =
array(
'pattern' =>
'mailto:#'.$elem[
'name'].
'#');
1584 'EMP_CANCELED_BY.SHORT_NAME',
1585 'EMP_STATUS_BY.SHORT_NAME',
1586 'Payment:ORDER.EMP_PAID_BY.SHORT_NAME',
1587 'Payment:ORDER.RESPONSIBLE_BY.SHORT_NAME',
1588 'Shipment:REPS_ORDER.EMP_ALLOW_DELIVERY_BY.SHORT_NAME',
1589 'Shipment:REPS_ORDER.EMP_DEDUCTED_BY.SHORT_NAME',
1590 'Shipment:REPS_ORDER.RESPONSIBLE_BY.SHORT_NAME'
1594 $userDef = mb_substr($elem[
'name'], 0, -11);
1595 $href =
array(
'pattern' =>
'/bitrix/admin/sale_buyers_profile.php?USER_ID=#'.$userDef.
'.ID#&lang='.LANG);
1598 else if ($field->getEntity()->getName() ==
'Order')
1600 if ($elem[
'name'] ===
'ID')
1602 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_view.php?ID=#ID#&lang='.LANG);
1605 else if ($field->getEntity()->getName() ===
'Payment')
1607 if ($elem[
'name'] ===
'Payment:ORDER.ID')
1609 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_payment_edit.php?order_id=#Payment:ORDER.ORDER_ID#&payment_id=#Payment:ORDER.ID#&lang='.LANG);
1611 else if ($elem[
'name'] ===
'Payment:ORDER.PAY_SYSTEM_ID'
1612 || $elem[
'name'] ===
'Payment:ORDER.PAY_SYSTEM_NAME')
1614 $href =
array(
'pattern' =>
'/bitrix/admin/sale_pay_system_edit.php?ID=#Payment:ORDER.PAY_SYSTEM_ID#&lang='.LANG);
1617 else if ($field->getEntity()->getName() ===
'Shipment')
1619 if ($elem[
'name'] ===
'Shipment:REPS_ORDER.ID')
1621 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_shipment_edit.php?order_id=#Shipment:REPS_ORDER.ORDER_ID#&shipment_id=#Shipment:REPS_ORDER.ID#&lang='.LANG);
1623 else if ($elem[
'name'] ===
'Shipment:REPS_ORDER.DELIVERY_ID'
1624 || $elem[
'name'] ===
'Shipment:REPS_ORDER.DELIVERY_NAME')
1626 $href =
array(
'pattern' =>
'/bitrix/admin/sale_delivery_service_edit.php?ID=#Shipment:REPS_ORDER.DELIVERY_ID#&lang='.LANG);
1637 private static $monetaryFields =
array(
1649 private static $goodsQuantityFields =
array(
1650 'SALE_ORDER_USER_PRODUCTS_QUANT',
1655 private static $withoutTotalFields =
array(
1660 private static $userNotAuthNameFields =
array();
1664 return 'Bitrix\Main\User';
1689 'Bitrix\Sale\Internals\Order:USER' =>
array(
1690 'DATE_INSERT_SHORT',
1691 'DATE_UPDATE_SHORT',
1697 'EMP_STATUS_BY' =>
array(
1705 'DATE_STATUS_SHORT',
1712 'EMP_CANCELED_BY' =>
array(
1720 'DATE_CANCELED_SHORT',
1727 'UserGroup:USER.GROUP' =>
array(
1736 return array_merge(parent::getCalcVariations(),
array(
1737 'UserGroup:USER.GROUP.ID' =>
array(
1741 'UserGroup:USER.GROUP.NAME' =>
array(
1750 return array_merge(parent::getCompareVariations(),
array(
1752 '\Bitrix\Sale\Internals\StatusLang' =>
array(
1756 'Bitrix\Sale\Internals\Order:USER.PERSON_TYPE_ID' =>
array(
1761 'PERSONAL_GENDER' =>
array(
1765 'UserGroup:USER.GROUP' =>
array(
1769 '\Bitrix\Main\User' =>
array(
1772 '\Bitrix\Main\Group' =>
array(
1781 array(
'name' =>
'ID'),
1782 array(
'name' =>
'SHORT_NAME')
1788 if(is_null($date_from) && is_null($date_to))
1794 if(!is_null($date_to))
1798 '<=DATE_REG_SHORT' => $date_to,
1799 '=DATE_REG_SHORT' =>
null
1803 if(!is_null($date_from))
1807 '>=DATE_REG_SHORT' => $date_from,
1808 '=DATE_REG_SHORT' =>
null
1817 if ($field->getRefEntityName() ==
'\Bitrix\Main\User')
1820 if ($filterElement[
'value'])
1822 $res = CUser::GetByID($filterElement[
'value']);
1827 $username = CUser::FormatName(CSite::GetNameFormat(
null, self::getDefaultSiteId()),
$user,
true,
false);
1828 $filterElement[
'value'] =
array(
'id' =>
$user[
'ID'],
'name' => $username);
1832 $filterElement[
'value'] =
array(
'id' => $filterElement[
'value'],
'name' =>
GetMessage(
'REPORT_USER_NOT_FOUND'));
1837 $filterElement[
'value'] =
array(
'id' =>
'');
1840 else if ($field->getRefEntityName() ==
'\Bitrix\Main\Group')
1843 if ($filterElement[
'value'])
1846 $group =
$res->fetch();
1850 $filterElement[
'value'] =
array(
'id' => $group[
'ID'],
'name' => $group[
'NAME']);
1854 $filterElement[
'value'] =
array(
'id' => $filterElement[
'value'],
'name' =>
GetMessage(
'SALE_REPORT_GROUP_NOT_FOUND'));
1859 $filterElement[
'value'] =
array(
'id' =>
'');
1866 if (strncasecmp($fElem[
'name'],
'Bitrix\Sale\Internals\Order:USER', 23) === 0)
1876 if (strncasecmp($elem[
'name'],
'Bitrix\Sale\Internals\Order:USER', 23) === 0)
1884 private static function fieldInFilter(&
$filter, $fieldPathStr)
1888 if (
$k ===
'LOGIC')
continue;
1889 if (is_array($v))
return(self::fieldInFilter($v, $fieldPathStr));
1890 else if (mb_strpos(
$k, $fieldPathStr) !==
false)
return true;
1901 if (mb_strpos(
$k,
'_SALE_ORDER_USER_') !==
false)
1909 if (self::fieldInFilter(
$filter,
'Bitrix\Sale\Internals\Order:USER.')) $bResult =
true;
1922 if (
$filter[
'LOGIC'] ===
'AND')
1926 array(
'=Bitrix\Sale\Internals\Order:USER.LID' =>
$DB->ForSql(self::getDefaultSiteId())),
1927 array(
'=Bitrix\Sale\Internals\Order:USER.LID' =>
null)
1941 array(
'=Bitrix\Sale\Internals\Order:USER.LID' =>
$DB->ForSql(self::getDefaultSiteId())),
1942 array(
'=Bitrix\Sale\Internals\Order:USER.LID' =>
null)
1952 foreach (
$rows as &$row)
1954 foreach ($row as
$k => &$v)
1956 if (!array_key_exists(
$k, $columnInfo))
1961 $cInfo = &$columnInfo[
$k];
1965 foreach ($v as &$subv)
1967 self::formatResultValue(
$k, $subv, $row, $cInfo, $total);
1972 self::formatResultValue(
$k, $v, $row, $cInfo, $total);
1977 unset($row, $v, $subv);
1981 public static function formatResultValue(
$k, &$v, &$row, &$cInfo, $total, &$customChartValue =
null)
1983 $dataType = self::getFieldDataType($cInfo[
'field']);
1986 if ($dataType !==
'float' )
1988 parent::formatResultValue(
$k, $v, $row, $cInfo, $total);
1993 $v = self::$sitelist[$v];
1995 else if (
$k ===
'PERSONAL_GENDER')
1997 $v = self::$genders[$v];
2000 else if (
$k ===
'EMAIL')
2002 if (is_null($v) || empty($v) || $v ==
' ') unset($row[
'__HREF_'.
$k]);
2004 else if (
$k ===
'MAIN_USER_SALE_ORDER_USER_PERSON_TYPE_ID')
2006 $v = self::$personTypes[$v][
'NAME'];
2012 if (in_array($dataType,
array(
'integer',
'float')))
2020 foreach (self::$monetaryFields as $monField)
2022 if ($cInfo[
'field']->getEntity()->getDataClass() ===
'Bitrix\\Sale\\Internals\\OrderTable'
2023 && preg_match(
'/'.$monField.
'$/', $cInfo[
'field']->getName()))
2026 $v = number_format(doubleval($v), 2,
'.',
' ');
2032 foreach (self::$goodsQuantityFields as $qField)
2034 if (preg_match(
'/'.$qField.
'$/',
$k))
2036 if (!empty($v) && !is_null($v) && $v !=
' ')
2038 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
2039 else $v = sprintf(
'%d', round($v,0));
2046 foreach (self::$userNotAuthNameFields as $uField)
2048 if (preg_match(
'/'.$uField.
'$/',
$k))
2050 if (empty($v) || is_null($v) || $v ==
' ')
2052 $v =
GetMessage(
'SALE_REPORT_USER_NOT_AUTH');
2063 $bFormatOnly =
true;
2064 static::formatResultsTotal($paramTotal, $viewColumns, $bFormatOnly);
2069 parent::formatResultsTotal($total, $columnInfo);
2071 foreach ($total as
$k => &$v)
2074 foreach (self::$monetaryFields as $monField)
2076 if (preg_match(
'/'.$monField.
'$/',
$k))
2079 $v = number_format(doubleval($v), 2,
'.',
' ');
2085 foreach (self::$goodsQuantityFields as $qField)
2087 if (preg_match(
'/'.$qField.
'$/',
$k))
2089 if (!empty($v) && !is_null($v) && $v !=
' ')
2091 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
2092 else $v = sprintf(
'%d', round($v,0));
2099 foreach (self::$withoutTotalFields as $wtField)
2101 if (preg_match(
'/TOTAL_'.$wtField.
'$/',
$k))
2113 if (empty($elem[
'aggr']))
2115 $field = $fList[$elem[
'name']];
2117 if ($field->getEntity()->getName() ==
'User')
2119 if ($elem[
'name'] ==
'SHORT_NAME')
2121 $href =
array(
'pattern' =>
'/bitrix/admin/sale_buyers_profile.php?USER_ID=#ID#&lang='.LANG);
2123 else if ($elem[
'name'] ==
'EMAIL')
2125 $href =
array(
'pattern' =>
'mailto:#EMAIL#');
2127 else if ($elem[
'name'] ==
'Bitrix\Sale\Internals\Order:USER.EMP_STATUS_BY.SHORT_NAME')
2129 $href =
array(
'pattern' =>
'/bitrix/admin/sale_buyers_profile.php?USER_ID=#Bitrix\Sale\Internals\Order:USER.EMP_STATUS_BY.ID#&lang='.LANG);
2131 else if ($elem[
'name'] ==
'Bitrix\Sale\Internals\Order:USER.EMP_STATUS_BY.EMAIL')
2133 $href =
array(
'pattern' =>
'mailto:#Bitrix\Sale\Internals\Order:USER.EMP_STATUS_BY.EMAIL#');
2135 else if ($elem[
'name'] ==
'Bitrix\Sale\Internals\Order:USER.EMP_CANCELED_BY.SHORT_NAME')
2137 $href =
array(
'pattern' =>
'/bitrix/admin/sale_buyers_profile.php?USER_ID=#Bitrix\Sale\Internals\Order:USER.EMP_CANCELED_BY.ID#&lang='.LANG);
2139 else if ($elem[
'name'] ==
'Bitrix\Sale\Internals\Order:USER.EMP_CANCELED_BY.EMAIL')
2141 $href =
array(
'pattern' =>
'mailto:#Bitrix\Sale\Internals\Order:USER.EMP_CANCELED_BY.EMAIL#');
2144 elseif ($field->getEntity()->getName() ==
'Order')
2146 if ($elem[
'name'] ==
'Bitrix\Sale\Internals\Order:USER.ID')
2148 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_view.php?ID=#Bitrix\Sale\Internals\Order:USER.ID#&lang='.LANG);
2159 private static $monetaryFields =
array(
2170 'PAYMENT_ORDER_SUM',
2171 'PRODUCT_PURCHASING_PRICE_IN_SITE_CURRENCY',
2176 private static $goodsQuantityFields =
array(
2183 private static $withoutTotalFields =
array(
2187 'PRODUCT_SALE_GOODS_SECTION_PROD_SECT_ID',
2188 'PRODUCT_SALE_GOODS_SECTION_PROD_SECT_NAME',
2194 private static $avgGroupingAggregationFields =
array(
2198 private static $userNotAuthNameFields =
array(
2199 'FUSER_USER_SHORT_NAME'
2202 private static $currentIblockFilter =
array(
'value' =>
null,
'compare' =>
null);
2206 return 'Bitrix\Sale\Internals\Basket';
2220 'FUSER.USER' =>
array(
2225 'UserGroup:USER.GROUP' =>
array(
2238 'DATE_INSERT_SHORT',
2239 'DATE_UPDATE_SHORT',
2245 'EMP_STATUS_BY' =>
array(
2253 'DATE_STATUS_SHORT',
2256 'Payment:ORDER' =>
array(
2261 'EMP_PAID_BY' =>
array(
2277 'RESPONSIBLE_BY' =>
array(
2287 'Shipment:REPS_ORDER' =>
array(
2292 'EMP_ALLOW_DELIVERY_BY' =>
array(
2300 'DATE_ALLOW_DELIVERY_SHORT',
2302 'DELIVERY_DOC_DATE_SHORT',
2304 'EMP_DEDUCTED_BY' =>
array(
2312 'DATE_DEDUCTED_SHORT',
2317 'RESPONSIBLE_BY' =>
array(
2329 'EMP_CANCELED_BY' =>
array(
2337 'DATE_CANCELED_SHORT',
2356 'SUMMARY_PURCHASING_PRICE',
2359 'PRODUCT.GoodsSection:PRODUCT.SECT' =>
array(
2369 array(
'name' =>
'ID'),
2370 array(
'name' =>
'DATE_UPD'),
2371 array(
'name' =>
'ORDER_ID'),
2372 array(
'name' =>
'PRODUCT_ID'),
2373 array(
'name' =>
'NAME')
2379 return array_merge(parent::getCalcVariations(),
array(
2385 'FUSER.USER.UserGroup:USER.GROUP.ID' =>
array(
2389 'FUSER.USER.UserGroup:USER.GROUP.NAME' =>
array(
2393 'PRODUCT.GoodsSection:PRODUCT.SECT.ID' =>
array(
2397 'PRODUCT.GoodsSection:PRODUCT.SECT.NAME' =>
array(
2406 return array_merge(parent::getCompareVariations(),
array(
2416 'ORDER.LID' =>
array(
2420 'ORDER.PERSON_TYPE_ID' =>
array(
2424 'ORDER.STATUS' =>
array(
2429 'PRODUCT.GoodsSection:PRODUCT.SECT' =>
array(
2433 'FUSER.USER.UserGroup:USER.GROUP' =>
array(
2437 '\Bitrix\Main\User' =>
array(
2440 '\Bitrix\Main\Group' =>
array(
2452 if(!is_null($date_to))
2456 '<=DATE_UPD' => $date_to,
2461 if(!is_null($date_from))
2465 '>=DATE_UPD' => $date_from,
2472 '=LID' =>
$DB->ForSql(self::getDefaultSiteId())
2481 $fieldName =
'PRODUCT.GoodsSection:PRODUCT.SECT.ID';
2484 foreach (
$filter as $fId => &$fInfo)
2486 foreach ($fInfo as
$k => &$fElem)
2488 if (is_array($fElem) && $fElem[
'type'] ==
'field')
2492 if (preg_match(
'/__COLUMN__(\d+)/', $fElem[
'name'], $match))
2495 $columnName = $viewColumns[$num][
'fieldName'];
2498 if ($fElem[
'name'] == $fieldName || $columnName == $fieldName)
2500 $iblockFilterCompare = $fElem[
'compare'];
2501 if ($iblockFilterCompare ===
'EQUAL')
2503 $iblockFilterValue =
array();
2504 $arFilterValues =
array();
2505 if (is_array($fElem[
'value'])) $arFilterValues = $fElem[
'value'];
2506 else $arFilterValues[] = $fElem[
'value'];
2507 foreach ($arFilterValues as
$l => $filterValue)
2509 if (is_string($filterValue) && $filterValue[0] ==
'c')
2511 $iblockFilterValue[] = intval(mb_substr($filterValue, 1));
2514 unset($arFilterValues[
$l]);
2518 $sections =
array();
2519 foreach (parent::$catalogSections as $sectKey => $sect)
2521 if ($sectKey == $filterValue) $iblockFilterValue[] = intval($sect[
'catalog'][
'ID']);
2522 if (in_array($filterValue, $sect[
'path'])) $sections[] = $sectKey;
2524 $arFilterValues[
$l] = $sections;
2528 if (
$l === 0) unset($fInfo[
$k]);
2529 else if (
$l === 1) $fInfo[
$k][
'value'] = reset($arFilterValues);
2532 $newFilterValue =
array();
2533 foreach ($arFilterValues as $filterValue)
2535 $newFilterValue = array_merge($newFilterValue, $filterValue);
2537 $newFilterValue = array_unique($newFilterValue);
2538 $fInfo[
$k][
'value'] = $newFilterValue;
2540 $l =
count($iblockFilterValue);
2541 if (
$l === 0) $iblockFilterValue =
null;
2542 else if (
$l === 1) $iblockFilterValue = reset($iblockFilterValue);
2543 else $iblockFilterValue = array_unique($iblockFilterValue);
2544 self::$currentIblockFilter[
'value'] = $iblockFilterValue;
2545 self::$currentIblockFilter[
'compare'] = $iblockFilterCompare;
2556 if (self::$currentIblockFilter[
'value'])
2560 ((self::$currentIblockFilter[
'compare'] ===
'EQUAL') ?
'=' :
'!=').
'PRODUCT.IBLOCK.IBLOCK_ID' => self::$currentIblockFilter[
'value']
2563 self::$currentIblockFilter[
'value'] =
null;
2564 self::$currentIblockFilter[
'compare'] =
null;
2569 if ($field->getRefEntityName() ==
'\Bitrix\Main\User')
2572 if ($filterElement[
'value'])
2574 $res = CUser::GetByID($filterElement[
'value']);
2579 $username = CUser::FormatName(CSite::GetNameFormat(
null, self::getDefaultSiteId()),
$user,
true,
false);
2580 $filterElement[
'value'] =
array(
'id' =>
$user[
'ID'],
'name' => $username);
2584 $filterElement[
'value'] =
array(
'id' => $filterElement[
'value'],
'name' =>
GetMessage(
'REPORT_USER_NOT_FOUND'));
2589 $filterElement[
'value'] =
array(
'id' =>
'');
2592 else if ($field->getRefEntityName() ==
'\Bitrix\Main\Group')
2595 if ($filterElement[
'value'])
2598 $group =
$res->fetch();
2602 $filterElement[
'value'] =
array(
'id' => $group[
'ID'],
'name' => $group[
'NAME']);
2606 $filterElement[
'value'] =
array(
'id' => $filterElement[
'value'],
'name' =>
GetMessage(
'SALE_REPORT_GROUP_NOT_FOUND'));
2611 $filterElement[
'value'] =
array(
'id' =>
'');
2619 foreach (
$rows as &$row)
2621 foreach ($row as
$k => &$v)
2623 if (!array_key_exists(
$k, $columnInfo))
2628 $cInfo = &$columnInfo[
$k];
2632 foreach ($v as &$subv)
2634 self::formatResultValue(
$k, $subv, $row, $cInfo, $total);
2639 self::formatResultValue(
$k, $v, $row, $cInfo, $total);
2644 unset($row, $v, $subv);
2648 public static function formatResultValue(
$k, &$v, &$row, &$cInfo, $total, &$customChartValue =
null)
2650 $dataType = self::getFieldDataType($cInfo[
'field']);
2653 if ($dataType !==
'float' )
2655 parent::formatResultValue(
$k, $v, $row, $cInfo, $total);
2658 if (
$k ===
'SALE_BASKET_ORDER_PERSON_TYPE_ID')
2660 $v = self::$personTypes[$v][
'NAME'];
2663 else if (
$k ===
'SALE_BASKET_FUSER_USER_EMAIL')
2665 if (is_null($v) || empty($v) || $v ==
' ') unset($row[
'__HREF_'.
$k]);
2672 if (in_array($dataType,
array(
'integer',
'float')))
2679 if (empty($cInfo[
'aggr']))
2681 if (($cInfo[
'field']->getEntity()->
getName() ===
'Shipment'
2682 && in_array($cInfo[
'field']->
getName(),
array(
'ID',
'DELIVERY_ID',
'DELIVERY_NAME'),
true))
2683 || ($cInfo[
'field']->getEntity()->
getName() ===
'Payment'
2684 && in_array($cInfo[
'field']->
getName(),
array(
'ID',
'PAY_SYSTEM_ID',
'PAY_SYSTEM_NAME'),
true)))
2686 if (is_null($v) || empty($v) || $v ==
' ')
2688 unset($row[
'__HREF_'.
$k]);
2694 foreach (self::$monetaryFields as $monField)
2696 if (preg_match(
'/'.$monField.
'$/',
$k))
2699 $v = number_format(doubleval($v), 2,
'.',
' ');
2705 foreach (self::$goodsQuantityFields as $qField)
2707 if (preg_match(
'/'.$qField.
'$/',
$k))
2709 if (!empty($v) && !is_null($v) && $v !=
' ')
2711 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
2712 else $v = sprintf(
'%d', round($v,0));
2719 foreach (self::$userNotAuthNameFields as $uField)
2721 if (preg_match(
'/'.$uField.
'$/',
$k))
2723 if (empty($v) || is_null($v) || $v ==
' ')
2725 $v =
GetMessage(
'SALE_REPORT_USER_NOT_AUTH');
2726 unset($row[
'__HREF_'.
$k]);
2733 if (!isset($cInfo[
'grouping_aggr']))
2735 foreach (self::$avgGroupingAggregationFields as $aggrField)
2737 if (preg_match(
'/'.$aggrField.
'$/',
$k))
2739 $cInfo[
'grouping_aggr'] =
'AVG';
2749 $bFormatOnly =
true;
2750 static::formatResultsTotal($paramTotal, $viewColumns, $bFormatOnly);
2755 parent::formatResultsTotal($total, $columnInfo);
2757 foreach ($total as
$k => &$v)
2760 foreach (self::$monetaryFields as $monField)
2762 if (preg_match(
'/'.$monField.
'$/',
$k))
2765 $v = number_format(doubleval($v), 2,
'.',
' ');
2771 foreach (self::$goodsQuantityFields as $qField)
2773 if (preg_match(
'/'.$qField.
'$/',
$k))
2775 if (!empty($v) && !is_null($v) && $v !=
' ')
2777 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
2778 else $v = sprintf(
'%d', round($v,0));
2785 foreach (self::$withoutTotalFields as $wtField)
2787 if (preg_match(
'/TOTAL_'.$wtField.
'$/',
$k))
2799 if (empty($elem[
'aggr']))
2801 $field = $fList[$elem[
'name']];
2803 if ($field->getEntity()->getName() ==
'User')
2809 'ORDER.EMP_CANCELED_BY.EMAIL',
2810 'ORDER.EMP_STATUS_BY.EMAIL',
2811 'ORDER.Payment:ORDER.EMP_PAID_BY.EMAIL',
2812 'ORDER.Payment:ORDER.RESPONSIBLE_BY.EMAIL',
2813 'ORDER.Shipment:REPS_ORDER.EMP_ALLOW_DELIVERY_BY.EMAIL',
2814 'ORDER.Shipment:REPS_ORDER.EMP_DEDUCTED_BY.EMAIL',
2815 'ORDER.Shipment:REPS_ORDER.RESPONSIBLE_BY.EMAIL'
2819 $href =
array(
'pattern' =>
'mailto:#'.$elem[
'name'].
'#');
2824 'FUSER.USER.SHORT_NAME',
2825 'ORDER.EMP_CANCELED_BY.SHORT_NAME',
2826 'ORDER.EMP_STATUS_BY.SHORT_NAME',
2827 'ORDER.Payment:ORDER.EMP_PAID_BY.SHORT_NAME',
2828 'ORDER.Payment:ORDER.RESPONSIBLE_BY.SHORT_NAME',
2829 'ORDER.Shipment:REPS_ORDER.EMP_ALLOW_DELIVERY_BY.SHORT_NAME',
2830 'ORDER.Shipment:REPS_ORDER.EMP_DEDUCTED_BY.SHORT_NAME',
2831 'ORDER.Shipment:REPS_ORDER.RESPONSIBLE_BY.SHORT_NAME'
2835 $userDef = mb_substr($elem[
'name'], 0, -11);
2836 $href =
array(
'pattern' =>
'/bitrix/admin/sale_buyers_profile.php?USER_ID=#'.$userDef.
'.ID#&lang='.LANG);
2839 elseif ($field->getEntity()->getName() ==
'Basket')
2841 if ($elem[
'name'] ==
'NAME' || $elem[
'name'] ==
'NAME_WITH_IDENT')
2843 $href =
array(
'pattern' =>
'/bitrix/admin/cat_product_edit.php?IBLOCK_ID='.
2844 '#PRODUCT.IBLOCK.IBLOCK.ID#&type=#PRODUCT.IBLOCK.IBLOCK.IBLOCK_TYPE_ID#&ID='.
2845 '#PRODUCT_ID#&lang='.LANG.
'&WF=Y');
2847 elseif ($elem[
'name'] ==
'ORDER_ID')
2849 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_view.php?ID=#ORDER_ID#&lang='.LANG);
2852 else if ($field->getEntity()->getName() ==
'Order')
2854 if ($elem[
'name'] ===
'ORDER.ID')
2856 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_view.php?ID=#ORDER.ID#&lang='.LANG);
2859 else if ($field->getEntity()->getName() ===
'Payment')
2861 if ($elem[
'name'] ===
'ORDER.Payment:ORDER.ID')
2863 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_payment_edit.php?order_id=#ORDER.Payment:ORDER.ORDER_ID#&payment_id=#ORDER.Payment:ORDER.ID#&lang='.LANG);
2865 else if ($elem[
'name'] ===
'ORDER.Payment:ORDER.PAY_SYSTEM_ID'
2866 || $elem[
'name'] ===
'ORDER.Payment:ORDER.PAY_SYSTEM_NAME')
2868 $href =
array(
'pattern' =>
'/bitrix/admin/sale_pay_system_edit.php?ID=#ORDER.Payment:ORDER.PAY_SYSTEM_ID#&lang='.LANG);
2871 else if ($field->getEntity()->getName() ===
'Shipment')
2873 if ($elem[
'name'] ===
'ORDER.Shipment:REPS_ORDER.ID')
2875 $href =
array(
'pattern' =>
'/bitrix/admin/sale_order_shipment_edit.php?order_id=#ORDER.Shipment:REPS_ORDER.ORDER_ID#&shipment_id=#ORDER.Shipment:REPS_ORDER.ID#&lang='.LANG);
2877 else if ($elem[
'name'] ===
'ORDER.Shipment:REPS_ORDER.DELIVERY_ID'
2878 || $elem[
'name'] ===
'ORDER.Shipment:REPS_ORDER.DELIVERY_NAME')
2880 $href =
array(
'pattern' =>
'/bitrix/admin/sale_delivery_service_edit.php?ID=#ORDER.Shipment:REPS_ORDER.DELIVERY_ID#&lang='.LANG);
2891 private static $customProductFilter =
'all';
2893 private static $monetaryFields =
array(
2894 'PRICE_IN_SITE_CURRENCY',
2895 'SUMMARY_PRICE_IN_SITE_CURRENCY',
2896 'PURCHASING_PRICE_IN_SITE_CURRENCY'
2899 private static $goodsQuantityFields =
array(
2901 'SALED_PRODUCTS_IN_PERIOD_BY_SHOP',
2902 'CONSUMED_PRODUCTS_IN_PERIOD_BY_SHOP',
2903 'ARRIVED_PRODUCTS_IN_PERIOD_BY_SHOP',
2904 'ARRIVED_PRODUCTS_IN_PERIOD_BY_STORE',
2905 'EXPENSE_PRODUCTS_IN_PERIOD_BY_STORE',
2906 'STORE_PRODUCT_SALE_PRODUCT_AMOUNT'
2909 private static $withoutTotalFields =
array(
2914 private static $userNotAuthNameFields =
array();
2916 private static $currentIblockFilter =
array(
'value' =>
null,
'compare' =>
null);
2920 self::$customProductFilter = $strFilterValue;
2931 return self::$customProductFilter;
2936 return 'Bitrix\Sale\Internals\Product';
2954 'WEIGHT_IN_SITE_UNITS',
2955 'PRICE_IN_SITE_CURRENCY',
2956 'PURCHASING_PRICE_IN_SITE_CURRENCY',
2957 'SUMMARY_PRICE_IN_SITE_CURRENCY',
2958 'VIEWS_IN_PERIOD_BY_SHOP',
2959 'SUBSCRIPTIONS_IN_PERIOD_BY_SHOP',
2960 'ORDERS_IN_PERIOD_BY_SHOP',
2962 'SALED_PRODUCTS_IN_PERIOD_BY_SHOP',
2963 'CONSUMED_PRODUCTS_IN_PERIOD_BY_SHOP',
2964 'ARRIVED_PRODUCTS_IN_PERIOD_BY_SHOP',
2965 'ARRIVED_PRODUCTS_IN_PERIOD_BY_STORE',
2966 'EXPENSE_PRODUCTS_IN_PERIOD_BY_STORE',
2967 'IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION' =>
array(
2971 'StoreProduct:SALE_PRODUCT' =>
array(
2975 'STORE.DESCRIPTION',
2988 'data_type' =>
'integer',
2989 'expression' =>
array(
2990 '(SELECT SUM(b_catalog_viewed_product.VIEW_COUNT) FROM b_catalog_product, b_catalog_viewed_product WHERE %s = b_catalog_viewed_product.ELEMENT_ID
2991 AND b_catalog_product.ID = b_catalog_viewed_product.ELEMENT_ID
2992 AND b_catalog_viewed_product.DATE_VISIT '.$sqlTimeInterval.
' AND b_catalog_viewed_product.SITE_ID = \''.
$DB->ForSql(self::getDefaultSiteId()).
'\')
', 'ID
'
2994 ), 'VIEWS_IN_PERIOD_BY_SHOP
');
2996 $entity->addField(array(
2997 'data_type
' => 'integer
',
2998 'expression
' => array(
2999 '(SELECT SUM(1) FROM b_catalog_subscribe WHERE b_catalog_subscribe.ITEM_ID = %s
3000 AND b_catalog_subscribe.DATE_FROM
'.$sqlTimeInterval.'
3001 AND b_catalog_subscribe.SITE_ID = \
''.$DB->ForSql(self::getDefaultSiteId()).
'\')
', 'ID
'
3003 ), 'SUBSCRIPTIONS_IN_PERIOD_BY_SHOP
');
3005 $entity->addField(array(
3006 'data_type
' => 'integer
',
3007 'expression
' => array(
3008 '(SELECT COUNT(DISTINCT b_sale_order.ID)
3009 FROM b_catalog_product
3010 INNER JOIN b_sale_basket ON b_catalog_product.ID = b_sale_basket.PRODUCT_ID
3011 INNER JOIN b_sale_order ON b_sale_basket.ORDER_ID = b_sale_order.ID
3013 b_catalog_product.ID = %s
3014 AND b_sale_order.PAYED = \
'Y\'
3015 AND b_sale_order.DATE_INSERT '.$sqlTimeInterval.
'
3016 AND b_sale_basket.LID = \''.
$DB->ForSql(self::getDefaultSiteId()).
'\')
', 'ID
'
3018 ), 'ORDERS_IN_PERIOD_BY_SHOP
');
3020 $entity->addField(array(
3021 'data_type
' => 'integer
',
3022 'expression
' => array(
3023 $DB->isNull('(SELECT SUM(b_sale_basket.QUANTITY)
3025 INNER JOIN b_sale_order ON b_sale_basket.ORDER_ID = b_sale_order.ID
3026 WHERE b_sale_basket.PRODUCT_ID = %s
3027 AND b_sale_order.PAYED = \
'Y\'
3028 AND b_sale_order.DEDUCTED = \'Y\'
3029 AND b_sale_order.DATE_INSERT '.$sqlTimeInterval.
'
3030 AND b_sale_basket.LID = \''.
$DB->ForSql(self::getDefaultSiteId()).
'\')
', 0),
3033 ), 'SALED_PRODUCTS_IN_PERIOD_BY_SHOP
');
3035 $entity->addField(array(
3036 'data_type
' => 'integer
',
3037 'expression
' => array(
3038 $DB->isNull('(SELECT SUM(b_sale_basket.QUANTITY)
3040 INNER JOIN b_sale_order ON b_sale_basket.ORDER_ID = b_sale_order.ID
3041 WHERE b_sale_basket.PRODUCT_ID = %s
3042 AND b_sale_order.PAYED = \
'Y\'
3043 AND b_sale_order.DEDUCTED = \'Y\'
3044 AND b_sale_order.DATE_INSERT '.$sqlTimeInterval.
'
3045 AND b_sale_basket.LID = \''.
$DB->ForSql(self::getDefaultSiteId()).
'\')
', 0).'+
'.
3046 $DB->isNull('(SELECT SUM(b_catalog_docs_element.AMOUNT)
3047 FROM b_catalog_store_docs
3048 INNER JOIN b_catalog_docs_element on b_catalog_store_docs.ID = b_catalog_docs_element.DOC_ID
3049 WHERE b_catalog_store_docs.DOC_TYPE = \
'D\'
3050 AND b_catalog_store_docs.STATUS = \'Y\'
3051 AND b_catalog_store_docs.DATE_DOCUMENT '.$sqlTimeInterval.
'
3052 AND b_catalog_docs_element.ELEMENT_ID = %s)', 0),
3055 ),
'CONSUMED_PRODUCTS_IN_PERIOD_BY_SHOP');
3058 'data_type' =>
'float',
3059 'expression' =>
array(
3060 '(SELECT SUM(b_catalog_docs_element.AMOUNT)
3061 FROM b_catalog_store_docs
3062 INNER JOIN b_catalog_docs_element on b_catalog_store_docs.ID = b_catalog_docs_element.DOC_ID
3063 WHERE b_catalog_store_docs.DOC_TYPE in (\'A\', \'R\')
3064 AND b_catalog_store_docs.STATUS = \'Y\'
3065 AND b_catalog_store_docs.DATE_DOCUMENT '.$sqlTimeInterval.
'
3066 AND b_catalog_docs_element.ELEMENT_ID = %s)',
'ID'
3068 ),
'ARRIVED_PRODUCTS_IN_PERIOD_BY_SHOP');
3071 'data_type' =>
'float',
3072 'expression' =>
array(
3073 '(SELECT SUM(b_catalog_docs_element.AMOUNT)
3074 FROM b_catalog_store_docs
3075 INNER JOIN b_catalog_docs_element on b_catalog_store_docs.ID = b_catalog_docs_element.DOC_ID
3076 WHERE b_catalog_store_docs.DOC_TYPE in (\'A\', \'M\', \'R\')
3077 AND b_catalog_store_docs.STATUS = \'Y\'
3078 AND b_catalog_store_docs.DATE_DOCUMENT '.$sqlTimeInterval.
'
3079 AND b_catalog_docs_element.STORE_TO = %s
3080 AND b_catalog_docs_element.ELEMENT_ID = %s)',
'StoreProduct:SALE_PRODUCT.STORE_ID',
'ID'
3082 ),
'ARRIVED_PRODUCTS_IN_PERIOD_BY_STORE');
3085 'data_type' =>
'integer',
3086 'expression' =>
array(
3087 $DB->isNull(
'(SELECT SUM(b_sale_store_barcode.QUANTITY)
3088 FROM b_sale_store_barcode
3089 INNER JOIN b_sale_basket ON b_sale_store_barcode.BASKET_ID = b_sale_basket.ID
3090 INNER JOIN b_sale_order ON b_sale_basket.ORDER_ID = b_sale_order.ID
3091 WHERE b_sale_store_barcode.STORE_ID = %s
3092 AND b_sale_basket.PRODUCT_ID = %s
3093 AND b_sale_order.PAYED = \'Y\'
3094 AND b_sale_order.DEDUCTED = \'Y\'
3095 AND b_sale_order.DATE_INSERT '.$sqlTimeInterval.
'
3096 AND b_sale_basket.LID = \''.
$DB->ForSql(self::getDefaultSiteId()).
'\')
', 0).'+
'.
3097 $DB->isNull('(SELECT SUM(b_catalog_docs_element.AMOUNT)
3098 FROM b_catalog_store_docs
3099 INNER JOIN b_catalog_docs_element on b_catalog_store_docs.ID = b_catalog_docs_element.DOC_ID
3100 WHERE b_catalog_store_docs.DOC_TYPE in (\
'M\', \'D\')
3101 AND b_catalog_store_docs.STATUS = \'Y\'
3102 AND b_catalog_store_docs.DATE_DOCUMENT '.$sqlTimeInterval.
'
3103 AND b_catalog_docs_element.STORE_FROM = %s
3104 AND b_catalog_docs_element.ELEMENT_ID = %s)', 0),
3105 'StoreProduct:SALE_PRODUCT.STORE_ID',
'ID',
'StoreProduct:SALE_PRODUCT.STORE_ID',
'ID'
3107 ),
'EXPENSE_PRODUCTS_IN_PERIOD_BY_STORE');
3110 'data_type' =>
'float',
3111 'expression' =>
array(
3112 '100 * CASE WHEN %s IS NULL OR %s = 0 THEN NULL ELSE %s / %s END',
3113 'VIEWS_IN_PERIOD_BY_SHOP',
'VIEWS_IN_PERIOD_BY_SHOP',
'ORDERS_IN_PERIOD_BY_SHOP',
'VIEWS_IN_PERIOD_BY_SHOP'
3121 array(
'name' =>
'ID'),
3122 array(
'name' =>
'NAME')
3128 return array_merge(parent::getCompareVariations(),
array(
3129 'IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION' =>
array(
3133 'StoreProduct:SALE_PRODUCT' =>
array(
3141 return array_merge(parent::getCalcVariations(),
array(
3142 'IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.ID' =>
array(
3146 'IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.NAME' =>
array(
3150 'StoreProduct:SALE_PRODUCT.STORE.ID' =>
array(
3154 'StoreProduct:SALE_PRODUCT.STORE.TITLE' =>
array(
3169 '=IBLOCK.IBLOCK.Site:IBLOCK.SITE_ID' =>
$DB->ForSql(self::getDefaultSiteId())
3174 if (!empty($customProductFilter))
3176 if ($customProductFilter ===
'avail') $strOperation =
'>';
3177 else if ($customProductFilter ===
'not_avail') $strOperation =
'<=';
3178 else $strOperation =
'';
3179 if (!empty($strOperation))
$filter[] =
array($strOperation.
'QUANTITY' =>
'0');
3188 if ($fElem[
'name'] ===
'StoreProduct:SALE_PRODUCT')
3194 $res = parent::getEntityFilterPrimaryFieldName($fElem);
3201 if ($fElem[
'name'] ===
'StoreProduct:SALE_PRODUCT.STORE_ID')
3211 if ($elem[
'name'] ===
'StoreProduct:SALE_PRODUCT.STORE_ID')
3222 $fieldName =
'IBLOCK.SectionElement:IBLOCK_ELEMENT.IBLOCK_SECTION.ID';
3225 foreach (
$filter as $fId => &$fInfo)
3227 foreach ($fInfo as
$k => &$fElem)
3229 if (is_array($fElem) && $fElem[
'type'] ==
'field')
3233 if (preg_match(
'/__COLUMN__(\d+)/', $fElem[
'name'], $match))
3236 $columnName = $viewColumns[$num][
'fieldName'];
3239 if ($fElem[
'name'] == $fieldName || $columnName == $fieldName)
3241 $iblockFilterCompare = $fElem[
'compare'];
3242 if ($iblockFilterCompare ===
'EQUAL')
3244 $iblockFilterValue =
array();
3245 $arFilterValues =
array();
3246 if (is_array($fElem[
'value'])) $arFilterValues = $fElem[
'value'];
3247 else $arFilterValues[] = $fElem[
'value'];
3248 foreach ($arFilterValues as
$l => $filterValue)
3250 if (is_string($filterValue) && $filterValue[0] ==
'c')
3252 $iblockFilterValue[] = intval(mb_substr($filterValue, 1));
3255 unset($arFilterValues[
$l]);
3259 $sections =
array();
3260 foreach (parent::$catalogSections as $sectKey => $sect)
3262 if ($sectKey == $filterValue) $iblockFilterValue[] = intval($sect[
'catalog'][
'ID']);
3263 if (in_array($filterValue, $sect[
'path'])) $sections[] = $sectKey;
3265 $arFilterValues[
$l] = $sections;
3269 if (
$l === 0) unset($fInfo[
$k]);
3270 else if (
$l === 1) $fInfo[
$k][
'value'] = reset($arFilterValues);
3273 $newFilterValue =
array();
3274 foreach ($arFilterValues as $filterValue)
3276 $newFilterValue = array_merge($newFilterValue, $filterValue);
3278 $newFilterValue = array_unique($newFilterValue);
3279 $fInfo[
$k][
'value'] = $newFilterValue;
3281 $l =
count($iblockFilterValue);
3282 if (
$l === 0) $iblockFilterValue =
null;
3283 else if (
$l === 1) $iblockFilterValue = reset($iblockFilterValue);
3284 else $iblockFilterValue = array_unique($iblockFilterValue);
3285 self::$currentIblockFilter[
'value'] = $iblockFilterValue;
3286 self::$currentIblockFilter[
'compare'] = $iblockFilterCompare;
3291 if ($fElem[
'name'] ==
'StoreProduct:SALE_PRODUCT.STORE_ID')
3293 $fElem[
'name'] =
'StoreProduct:SALE_PRODUCT.STORE_ID';
3304 if (self::$bUsePriceTypesColumns)
3310 $priceField =
'cast(b_catalog_price.PRICE as text)';
3314 $priceField =
'b_catalog_price.PRICE';
3316 $price = $helper->getConcatFunction(
3319 'b_catalog_price.CURRENCY'
3323 foreach (self::$priceTypes as $id =>
$info)
3325 if (
$info[
'selected'] ===
true)
3327 $fieldName =
'PRICE_TYPE_'.$id;
3328 $runtime[$fieldName] =
array(
3329 'data_type' =>
'string',
3330 'expression' =>
array(
'
3331 (SELECT ' . $price .
'
3332 FROM b_catalog_price
3333 LEFT JOIN b_catalog_group ON b_catalog_group.ID = b_catalog_price.CATALOG_GROUP_ID
3334 WHERE b_catalog_price.PRODUCT_ID = %s
3335 AND b_catalog_group.ID = '.$id.
'
3336 AND ( b_catalog_price.quantity_from <= 1 OR b_catalog_price.quantity_from IS NULL )
3337 AND ( b_catalog_price.quantity_to >= 1 OR b_catalog_price.quantity_to IS NULL ) LIMIT 1)',
3340 'view_column' =>
array(
3341 'humanTitle' =>
$info[
'name']
3344 $select[$fieldName] = $fieldName;
3349 if (self::$currentIblockFilter[
'value'])
3353 ((self::$currentIblockFilter[
'compare'] ===
'EQUAL') ?
'=' :
'!=').
'IBLOCK.IBLOCK_ID' => self::$currentIblockFilter[
'value']
3356 self::$currentIblockFilter[
'value'] =
null;
3357 self::$currentIblockFilter[
'compare'] =
null;
3363 foreach (
$rows as &$row)
3366 foreach ($row as
$k => &$v)
3368 if (!array_key_exists(
$k, $columnInfo))
3373 $cInfo = &$columnInfo[
$k];
3377 foreach ($v as &$subv)
3379 self::formatResultValue(
$k, $subv, $row, $cInfo, $total);
3384 self::formatResultValue(
$k, $v, $row, $cInfo, $total);
3389 unset($row, $v, $subv);
3403 public static function formatResultValue(
$k, &$v, &$row, &$cInfo, $total, &$customChartValue =
null)
3405 $dataType = self::getFieldDataType($cInfo[
'field']);
3408 if ($dataType !==
'float' )
3410 parent::formatResultValue(
$k, $v, $row, $cInfo, $total);
3416 if (in_array($dataType,
array(
'integer',
'float')))
3424 foreach (self::$monetaryFields as $monField)
3426 if (preg_match(
'/'.$monField.
'$/',
$k))
3429 $v = number_format(doubleval($v), 2,
'.',
' ');
3435 foreach (self::$goodsQuantityFields as $qField)
3437 if (preg_match(
'/'.$qField.
'$/',
$k))
3439 if (!empty($v) && !is_null($v) && $v !=
' ')
3441 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
3442 else $v = sprintf(
'%d', round($v,0));
3449 foreach (self::$userNotAuthNameFields as $uField)
3451 if (preg_match(
'/'.$uField.
'$/',
$k))
3453 if (empty($v) || is_null($v) || $v ==
' ')
3455 $v =
GetMessage(
'SALE_REPORT_USER_NOT_AUTH');
3462 if (self::$bUsePriceTypesColumns)
3464 if (mb_strpos(
$k,
'PRICE_TYPE_') === 0 && is_numeric(mb_substr(
$k, 11))) $cInfo[
'align'] =
'right';
3468 if (preg_match(
'/[A-Za-z_]*PRICE_TYPE_[0-9]+$/',
$k) && !empty($v) && $v !==
' ')
3471 $spacePos = mb_strpos(trim($v),
' ');
3472 $v = number_format(doubleval(mb_substr($v, 0, $spacePos)), 2,
'.',
' ').mb_substr($v, $spacePos);
3480 $bFormatOnly =
true;
3481 static::formatResultsTotal($paramTotal, $viewColumns, $bFormatOnly);
3486 parent::formatResultsTotal($total, $columnInfo);
3488 foreach ($total as
$k => &$v)
3491 foreach (self::$monetaryFields as $monField)
3493 if (preg_match(
'/'.$monField.
'$/',
$k))
3496 $v = number_format(doubleval($v), 2,
'.',
' ');
3502 foreach (self::$goodsQuantityFields as $qField)
3504 if (preg_match(
'/'.$qField.
'$/',
$k))
3506 if (!empty($v) && !is_null($v) && $v !=
' ')
3508 if (self::$fDecimalQuant) $v = sprintf(
'%.3f', round($v,3));
3509 else $v = sprintf(
'%d', round($v,0));
3516 foreach (self::$withoutTotalFields as $wtField)
3518 if (preg_match(
'/TOTAL_'.$wtField.
'$/',
$k))
3528 if (preg_match(
'/[A-Za-z_]*PRICE_TYPE_[0-9]+$/',
$k) && !empty($v) && $v !==
' ')
3531 $spacePos = mb_strpos($v,
' ');
3532 $v = number_format(doubleval(mb_substr($v, 0, $spacePos)), 2,
'.',
' ').mb_substr($v, $spacePos);
3541 if (empty($elem[
'aggr']))
3543 $field = $fList[$elem[
'name']];
3545 if ($field->getEntity()->getName() ==
'Product')
3547 if ($elem[
'name'] ==
'NAME')
3549 $href =
array(
'pattern' =>
'/bitrix/admin/cat_product_edit.php?IBLOCK_ID='.
3550 '#IBLOCK.IBLOCK.ID#&type=#IBLOCK.IBLOCK.IBLOCK_TYPE_ID#&ID='.
3551 '#ID#&lang='.LANG.
'&WF=Y');
static getConnection($name="")
static getList(array $parameters=array())
static getList(array $params=array())
static ConvertCurrency($valSum, $curFrom, $curTo, $valDate="")
static GetByID($ID, $SHOW_USERS_AMOUNT="N")
static getPaySystemList()
static getDefaultReports()
static getReportCurrencyId()
static calculateInReportCurrency($value)
static getSectionsSelectHTMLOptions()
static getCatalogSections()
static getAjaxResponse($arRequestData)
static getProductStores()
static getCurrentVersion()
static getWeightOptions()
static setSelectedPriceTypes($arSelected)
static getSiteCurrencyId()
static isCatalogCorrespondsDefSite($catalogId)
static $bUsePriceTypesColumns
static addOwner($ownerName)
static setSiteCurrencyId($currencyId)
static getHelperByOwner($ownerId)
static getDefaultSiteWeightUnits()
static setSelectedCurrency($currencyId)
static setDefaultSiteId($siteId)
static getDefaultSiteId()
static getDefaultSiteWeightDivider()
static formatResultGroupingTotal($params)
static beforeFilterBackReferenceRewrite(&$filter, $viewColumns)
static getCompareVariations()
static beforeViewDataQuery(&$select, &$filter, &$group, &$order, &$limit, &$options, &$runtime=null)
static fillFilterReferenceColumn(&$filterElement, Entity\ReferenceField $field)
static getDefaultElemHref($elem, $fList)
static formatResults(&$rows, &$columnInfo, $total)
static formatResultsTotal(&$total, &$columnInfo, &$bFormatOnly=null)
static getPeriodFilter($date_from, $date_to)
static getDefaultColumns()
static getCalcVariations()
static formatResultGroupingTotal($params)
static getCompareVariations()
static fillFilterReferenceColumn(&$filterElement, Entity\ReferenceField $field)
static getDefaultElemHref($elem, $fList)
static formatResults(&$rows, &$columnInfo, $total)
static formatResultsTotal(&$total, &$columnInfo, &$bFormatOnly=null)
static getPeriodFilter($date_from, $date_to)
static getDefaultColumns()
static getCalcVariations()
static enablePriceTypesColumns($bUsePriceTypesColumns)
static confirmFilterBackReferenceRewrite($fElem, $chain)
static getCustomProductFilter()
static formatResultGroupingTotal($params)
static beforeFilterBackReferenceRewrite(&$filter, $viewColumns)
static getCompareVariations()
static confirmSelectBackReferenceRewrite($elem, $chain)
static beforeViewDataQuery(&$select, &$filter, &$group, &$order, &$limit, &$options, &$runtime=null)
static setRuntimeFields(\Bitrix\Main\Entity\Base $entity, $sqlTimeInterval)
static getDefaultElemHref($elem, $fList)
static formatResults(&$rows, &$columnInfo, $total)
static formatResultsTotal(&$total, &$columnInfo, &$bFormatOnly=null)
static getPeriodFilter($date_from, $date_to)
static setCustomProductFilter($strFilterValue)
static getDefaultColumns()
static getEntityFilterPrimaryFieldName($fElem)
static getCalcVariations()
static confirmFilterBackReferenceRewrite($fElem, $chain)
static formatResultGroupingTotal($params)
static getCompareVariations()
static confirmSelectBackReferenceRewrite($elem, $chain)
static beforeViewDataQuery(&$select, &$filter, &$group, &$order, &$limit, &$options, &$runtime=null)
static fillFilterReferenceColumn(&$filterElement, Entity\ReferenceField $field)
static getDefaultElemHref($elem, $fList)
static formatResults(&$rows, &$columnInfo, $total)
static formatResultsTotal(&$total, &$columnInfo, &$bFormatOnly=null)
static getPeriodFilter($date_from, $date_to)
static getDefaultColumns()
static getCalcVariations()
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
if($NS['step']==6) if( $NS[ 'step']==7) if(COption::GetOptionInt('main', 'disk_space', 0) > 0) $info
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
</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."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
const SALE_REPORT_OWNER_ID
$GLOBALS['_____370096793']