1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
mobile_order.php
См. документацию.
1<?php
2
4
6{
7 public static function GetFormatedUserName($userId)
8 {
9 static $userCache = array();
10
11 $userId = intval($userId);
12
13 if($userId > 0)
14 {
15 if (!isset($userCache[$userId]) || !is_array($userCache[$userId]))
16 {
17 $dbUser = CUser::GetByID($userId);
18 if ($arUser = $dbUser->Fetch())
19 {
20 $userCache[$userId] = CUser::FormatName(
21 CSite::GetNameFormat(false),
22 array(
23 "NAME" => $arUser["NAME"],
24 "LAST_NAME" => $arUser["LAST_NAME"],
25 "SECOND_NAME" => $arUser["SECOND_NAME"],
26 "LOGIN" => $arUser["LOGIN"]
27 ),
28 true
29 );
30 }
31 }
32 }
33
34 return $userCache[$userId];
35 }
36
37 public static function getMobileReports()
38 {
39 define('COLUMNS_COUNT_FOR_SIMPLE_TEMPLATE', 3);
40 define('PATH_TO_MOBILE_REPORTS', '/bitrix/admin/mobile/sale_reports_view.php');
41
42 // Using report module
43 if (!CModule::IncludeModule('report'))
44 return false;
45
46 // Using catalog module
47 if (!CModule::IncludeModule('catalog'))
48 return false;
49
51
52 $dbRepList = Bitrix\Report\ReportTable::getList(array(
53 'select' => array('ID', 'TITLE', 'SETTINGS'),
54 'filter' => array('=CREATED_BY' => $GLOBALS["USER"]->GetID(), '=OWNER_ID' => CBaseSaleReportHelper::getOwners())
55 ));
56
57 $arMenuItems = array();
58
59 while ($arReport = $dbRepList->fetch())
60 {
61 $settings = unserialize($arReport['SETTINGS'], ['allowed_classes' => false]);
62
63 if(isset($settings['mobile'])
64 && is_array($settings['mobile'])
65 && isset($settings['mobile']['enabled'])
66 && $settings['mobile']['enabled'] == true)
67 {
68 if(count($settings['select']) <= COLUMNS_COUNT_FOR_SIMPLE_TEMPLATE)
69 $template = "admin_mobile";
70 else
71 $template = "admin_mobile_encl";
72
73 $arMenuItems[] = array(
74 "text" => htmlspecialcharsbx($arReport['TITLE']),
75 "data-url" => PATH_TO_MOBILE_REPORTS.'?ID='.$arReport['ID'].'&rep_templ='.$template
76 );
77 }
78 }
79
80 if(empty($arMenuItems))
81 return false;
82 else
83 return array(
84 "text" => GetMessage("SMOB_REPORTS"),
85 "type" => "section",
86 "items" => $arMenuItems
87 );
88 }
89
90 // RegisterModuleDependences("mobileapp", "OnBeforeAdminMobileMenuBuild",
91 // "sale", "CSaleMobileOrderUtils", "buildSaleAdminMobileMenu");
92 public static function buildSaleAdminMobileMenu()
93 {
94 $items = array(
95 array(
96 "text" => GetMessage("SMOB_ALL_ORDERS"),
97 "data-url" => "/bitrix/admin/mobile/sale_orders_list.php?lang=".LANGUAGE_ID,
98 "data-pageid" => "orders_list",
99 "default" => true,
100 "push-param" => "sl"
101 ),
102 array(
103 "text" => GetMessage("SMOB_WAITING_FOR_PAY"),
104 "data-url" => "/bitrix/admin/mobile/sale_orders_list.php?lang=".LANGUAGE_ID."&action=get_filtered&filter_name=waiting_for_pay",
105 "data-pageid" => "orders_waiting_for_pay",
106 ),
107 array(
108 "text" => GetMessage("SMOB_WAITING_FOR_DELIVERY"),
109 "data-url" => "/bitrix/admin/mobile/sale_orders_list.php?lang=".LANGUAGE_ID."&action=get_filtered&filter_name=waiting_for_delivery",
110 "data-pageid" => "orders_waiting_for_delivery",
111 )
112 );
113
114 if (\Bitrix\Main\ModuleManager::isModuleInstalled("pull"))
115 {
116 $items[] = array(
117 "text" => GetMessage("SMOB_PUSH_SETTINGS"),
118 "data-url" => "/bitrix/admin/mobile/sale_orders_push.php?lang=".LANGUAGE_ID,
119 "data-pageid" => "orders_push"
120 );
121 }
122
123
124 $arMenu = array(
125 array(
126 "text" => GetMessage("SMOB_ORDERS_MANAGEMENT"),
127 "type" => "section",
128 "items" => $items
129 )
130 );
131
132 $arRepMenu = self::getMobileReports();
133
134 if($arRepMenu)
135 $arMenu[] = $arRepMenu;
136
137 $startSortMenuPosition = 200;
138
139 foreach ($arMenu as $key => $item)
140 {
141 $item["sort"] = $key+$startSortMenuPosition;
143 }
144
145 return true;
146 }
147
148 public static function makeDetailClassFromOrder($arOrder)
149 {
150 $saleModulePermissions = $GLOBALS["APPLICATION"]->GetGroupRight("sale");
151
152 $mad = new CAdminMobileDetail;
153 $arSection = array(
154 "TITLE" => GetMessage("SMOB_ORDER_INFO"),
155 "OPEN" => true,
156 "ROWS" => array(
157 array("TITLE" => GetMessage("SMOB_CREATED").":", "VALUE" => self::getDateTime($arOrder['DATE_INSERT'])),
158 array("TITLE" => GetMessage("SMOB_CHANGED").":", "VALUE" => self::getDateTime($arOrder['DATE_UPDATE'])),
159 array("TITLE" => GetMessage("SMOB_STATUS").":", "VALUE" => $arOrder['STATUS_NAME']),
160 ),
161 );
162
163 $dateCChanged = false;
164
165 if($arOrder["DATE_CANCELED"] <> '')
166 $dateCChanged = self::getDateTime($arOrder["DATE_CANCELED"]);
167
168 if(intval($arOrder["EMP_CANCELED_ID"]) > 0)
169 $dateCChanged .= " ".self::GetFormatedUserName($arOrder["EMP_CANCELED_ID"]);
170
171 if($arOrder['CANCELED'] == 'Y')
172 $arSection["BOTTOM"] = array("STYLE" => "red", "VALUE" => GetMessage("SMOB_ORDER_CANCELED"));
173
174 if($arOrder['CANCELED'] == 'N' && intval($arOrder["EMP_CANCELED_ID"]) > 0)
175 $arSection["BOTTOM"] = array("STYLE" => "green", "VALUE" => GetMessage("SMOB_ORDER_CANCEL_CANCELED"));
176
177 if($dateCChanged)
178 $arSection["BOTTOM"]["VALUE"] .= "<br>".$dateCChanged;
179
180 $mad->addSection($arSection);
181
182 $arSection = array(
183 "TITLE" => GetMessage("SMOB_BUYER"),
184 "ROWS" => array(
185 array("TITLE" => GetMessage("SMOB_LOGIN").":", "VALUE" => $arOrder['USER_LOGIN']),
186 array("TITLE" => GetMessage("SMOB_PAYER_TYPE").":", "VALUE" => $arOrder['PERSON_TYPE_NAME']),
187 array("TITLE" => GetMessage("SMOB_FIO").":", "VALUE" => htmlspecialcharsbx($arOrder['CUSTOMER_FIO'])),
188 array("TITLE" => GetMessage("SMOB_EMAIL").":",
189 "VALUE" => '<a href="mailto:'.htmlspecialcharsbx($arOrder['CUSTOMER_EMAIL']).'">'.
190 htmlspecialcharsbx($arOrder['CUSTOMER_EMAIL']).'</a>'),
191 array("TITLE" => GetMessage("SMOB_PHONE").":",
192 "VALUE" => '<a href="tel:'.htmlspecialcharsbx($arOrder['CUSTOMER_PHONE']).'">'.
193 htmlspecialcharsbx($arOrder['CUSTOMER_PHONE']).'</a>'),
194 array("TITLE" => GetMessage("SMOB_ZIP").":", "VALUE" => htmlspecialcharsbx($arOrder['CUSTOMER_ZIP'])),
195 array("TITLE" => GetMessage("SMOB_LOCATION").":", "VALUE" => $arOrder['CUSTOMER_LOCATION'])
196 ),
197 );
198
199 if(trim($arOrder['CUSTOMER_CITY']) <> '')
200 $arSection["ROWS"][] = array("TITLE" => GetMessage("SMOB_CITY").":", "VALUE" => htmlspecialcharsbx($arOrder['CUSTOMER_CITY']));
201
202 $arSection["ROWS"][] = array("TITLE" => GetMessage("SMOB_ADDRESS").":", "VALUE" => htmlspecialcharsbx($arOrder['CUSTOMER_ADDRESS']));
203
204 $mad->addSection($arSection);
205
206 $dateDChange = false;
207
208 if($arOrder["DATE_ALLOW_DELIVERY"] <> '')
209 $dateDChange = self::getDateTime($arOrder["DATE_ALLOW_DELIVERY"]);
210
211 if(intval($arOrder["EMP_ALLOW_DELIVERY_ID"]) > 0)
212 $dateDChange .= " ".self::GetFormatedUserName($arOrder["EMP_ALLOW_DELIVERY_ID"]);
213
214 $arSection =array(
215 "TITLE" => GetMessage("SMOB_DELIVERY"),
216 "ROWS" => array(
217 array("TITLE" => GetMessage("SMOB_D_SERVICE").":", "VALUE" => $arOrder['DELIVERY_NAME'])
218 ));
219
220 if($arOrder['ALLOW_DELIVERY'] == 'Y')
221 $arSection["BOTTOM"] = array("STYLE" => "green", "VALUE" => GetMessage("SMOB_D_ALLOWED"));
222
223 if($arOrder['ALLOW_DELIVERY'] == 'N' && !is_null($arOrder["DATE_ALLOW_DELIVERY"]))
224 $arSection["BOTTOM"] = array("STYLE" => "red", "VALUE" => GetMessage("SMOB_D_DISALLOWED"));
225
226 if($dateDChange)
227 $arSection["BOTTOM"]["VALUE"] .= "<br>".$dateDChange;
228
229 $mad->addSection($arSection);
230
231 $arSection = array(
232 "TITLE" => GetMessage("SMOB_PAYMENT"),
233 "ROWS" => array(
234 array("TITLE" => GetMessage("SMOB_P_METHOD").":", "VALUE" => htmlspecialcharsbx($arOrder['PAY_SYSTEM_NAME'])),
235 array("TITLE" => GetMessage("SMOB_P_PRICE").":", "VALUE" => $arOrder['PRICE_STR']),
236 ));
237
238 $datePChange = false;
239
240 if($arOrder['DATE_PAYED'] <> '')
241 $datePChange = self::getDateTime($arOrder['DATE_PAYED']);
242
243 if(intval($arOrder["EMP_PAYED_ID"]) > 0)
244 $datePChange .= " ".self::GetFormatedUserName($arOrder["EMP_PAYED_ID"]);
245
246 if($arOrder['PAYED'] == 'Y')
247 $arSection["BOTTOM"] = array(
248 "STYLE" => "green",
249 "VALUE" => GetMessage("SMOB_PAYED"));
250
251 if($arOrder['PAYED'] == 'N' && !is_null($arOrder['DATE_PAYED']))
252 $arSection["BOTTOM"] = array(
253 "STYLE" => "red",
254 "VALUE" => GetMessage("SMOB_PAY_CANCELED"));
255
256 if($datePChange)
257 $arSection["BOTTOM"]["VALUE"] .= "<br>".$datePChange;
258
259 $mad->addSection($arSection);
260
261 $arSection = array(
262 "TITLE" => GetMessage("SMOB_COMMENTS"),
263 "ROWS" => array(
264 array("TITLE" => GetMessage("SMOB_C_BUYER").":", "VALUE" => $arOrder['USER_DESCRIPTION']),
265 )
266 );
267
268 if($saleModulePermissions > "D")
269 $arSection["ROWS"][] = array("TITLE" => GetMessage("SMOB_C_MANAGER").":", "VALUE" => $arOrder['COMMENTS']);
270
271 $mad->addSection($arSection);
272
273 if($arOrder['MARKED'] == 'Y')
274 {
275 $arSection = array(
276 "TITLE" => GetMessage("SMOB_MARK"),
277 "OPEN" => true,
278 );
279
280 $reason = $arOrder["REASON_MARKED"] <> '' ? $arOrder["REASON_MARKED"] : GetMessage("SMOB_MARK_NO_DESCRIPTION");
281
282 if($arOrder['DATE_MARKED'] <> '')
283 $reason .= '<br>'.self::getDateTime($arOrder['DATE_MARKED']);
284
285 if(intval($arOrder['EMP_MARKED_ID']) > 0)
286 $reason .= " (".self::GetFormatedUserName($arOrder["EMP_MARKED_ID"]).")";
287
288 $arSection["BOTTOM"] = array(
289 "STYLE" => "red",
290 "VALUE" => $reason
291 );
292
293 $mad->addSection($arSection);
294 }
295
296 $arSection =array(
297 "TITLE" => GetMessage("SMOB_DEDUCT"),
298 );
299
300 if($arOrder['DEDUCTED'] == 'Y')
301 $arSection["BOTTOM"] = array("STYLE" => "green", "VALUE" => GetMessage("SMOB_ORDER_DEDUCTED"));
302 elseif($arOrder['DEDUCTED'] == 'N' && $arOrder["DATE_DEDUCTED"] <> '' )
303 $arSection["BOTTOM"] = array("STYLE" => "red", "VALUE" => GetMessage("SMOB_ORDER_DEDUCTED_UNDO"));
304 else
305 $arSection["ROWS"][] = array("TITLE" => GetMessage("SMOB_ORDER_NOT_DEDUCTED"), "VALUE" => "");
306
307 if($arOrder["REASON_UNDO_DEDUCTED"] <> '')
308 $arSection["BOTTOM"]["VALUE"] .= '<br>'.$arOrder["REASON_UNDO_DEDUCTED"];
309
310 if($arOrder["DATE_DEDUCTED"] <> '')
311 $arSection["BOTTOM"]["VALUE"] .= '<br>'.self::getDateTime($arOrder["DATE_DEDUCTED"]);
312
313 if(intval($arOrder['EMP_DEDUCTED_ID']) > 0)
314 $arSection["BOTTOM"]["VALUE"] .= " (".self::GetFormatedUserName($arOrder["EMP_DEDUCTED_ID"]).")";
315
316 $mad->addSection($arSection);
317
318 ob_start();
319 $productListReturn = $GLOBALS["APPLICATION"]->IncludeComponent(
320 'bitrix:sale.mobile.product.list',
321 '.default',
322 array("ORDER_ID" => $arOrder['ID']),
323 false
324 );
325 $productListHtml = ob_get_contents();
326 ob_end_clean();
327
328 $mad->addSection(array(
329 "TITLE" => GetMessage("SMOB_PRODUCT_LIST"),
330 "TYPE" => "container",
331 "HTML" => $productListHtml
332 ));
333
334 $WEIGHT_UNIT = htmlspecialcharsbx(COption::GetOptionString('sale', 'weight_unit', "", $arOrder['LID']));
335 $WEIGHT_KOEF = htmlspecialcharsbx(COption::GetOptionString('sale', 'weight_koef', 1, $arOrder['LID']));
336
337 $arSection = array(
338 "TITLE" => GetMessage("SMOB_TOTAL"),
339 "TOTAL" => true,
340 "ROWS" => array(
341 array(
342 "TITLE" => GetMessage("SMOB_PRICE_ALL").":",
343 "VALUE" => SaleFormatCurrency($productListReturn['PRICE_TOTAL'], $arOrder["CURRENCY"])),
344 array(
345 "TITLE" => GetMessage("SMOB_P_DELIVERY").":",
346 "VALUE" => SaleFormatCurrency($productListReturn['PRICE'], $arOrder["CURRENCY"])),
347 array(
348 "TITLE" => GetMessage("SMOB_DELIVERY").":",
349 "VALUE" => SaleFormatCurrency($arOrder['PRICE_DELIVERY'], $arOrder["CURRENCY"]))
350 ));
351
352 if($arOrder['TAX_VALUE']>0)
353 $arSection["ROWS"][] = array(
354 "TITLE" => GetMessage("SMOB_TAX").":",
355 "VALUE" => SaleFormatCurrency($arOrder['TAX_VALUE'], $arOrder["CURRENCY"]));
356
357 if($arOrder['DISCOUNT_VALUE']>0)
358 $arSection["ROWS"][] = array(
359 "TITLE" => GetMessage("SMOB_DISCOUNT").":",
360 "VALUE" => SaleFormatCurrency($arOrder['DISCOUNT_VALUE'], $arOrder["CURRENCY"]));
361
362 $arSection["ROWS"][] = array(
363 "TITLE" => GetMessage("SMOB_WEIGHT").":",
364 "VALUE" => roundEx(DoubleVal($productListReturn['WEIGHT']/$WEIGHT_KOEF), SALE_WEIGHT_PRECISION)." ".$WEIGHT_UNIT);
365
366 $arSection["ROWS"][] = array(
367 "TITLE" => GetMessage("SMOB_TOTALLY").":",
368 "VALUE" => SaleFormatCurrency($arOrder['PRICE'], $arOrder["CURRENCY"]), "HIGLIGHTED" => true);
369
370 $mad->addSection($arSection);
371
372 /*
373 alternative:
374 $arDetail = $mad->getItem();
375 return CAdminMobileDetailTmpl::getHtml($arDetail);
376 */
377
378 return $mad->getHtml();
379 }
380
381 public static function getOrderInfoDetail($orderId)
382 {
383 if(!$orderId)
384 return false;
385
386 if(!$GLOBALS["USER"]->IsAuthorized())
387 return false;
388
389 $arFilter["ID"] = $orderId;
390
391 $saleModulePermissions = $GLOBALS["APPLICATION"]->GetGroupRight("sale");
392
393 if ($saleModulePermissions == "D")
394 $arFilter["USER_ID"] = intval($GLOBALS["USER"]->GetID());
396 {
397 $arFilter["STATUS_PERMS_GROUP_ID"] = $GLOBALS["USER"]->GetUserGroupArray();
398 $arFilter[">=STATUS_PERMS_PERM_VIEW"] = "Y";
399 }
400
401 $arOrder = array();
402
403 $dbOrder = CSaleOrder::GetList(array(), $arFilter);
404 $arOrder = $dbOrder->GetNext();
405
406 if(!$arOrder)
407 return false;
408
409 $arOrder["STATUS"] = CSaleStatus::GetLangByID($arOrder["STATUS_ID"]);
410 $arOrder["STATUS_NAME"] = htmlspecialcharsbx($arOrder["STATUS"]["NAME"]);
411 $arOrder["PRICE_IN_ALL_NUM"] = floatval(($arOrder["~PRICE"])+floatval($arOrder["~PRICE_DELIVERY"]));
412 $arOrder["PRICE_IN_ALL"] = SaleFormatCurrency($arOrder["PRICE_IN_ALL_NUM"], $arOrder["CURRENCY"]);
413 $arOrder["PRICE_STR"] = SaleFormatCurrency($arOrder["PRICE"], $arOrder["CURRENCY"]);
414
415 $arOrder["PERSON_TYPE"] = CSalePersonType::GetByID($arOrder["PERSON_TYPE_ID"]);
416 $arOrder["PERSON_TYPE_NAME"] = htmlspecialcharsbx($arOrder["PERSON_TYPE"]["NAME"]);
417
418 $arOrder = self::getOrderProps($arOrder);
419 $arOrder["DELIVERY_NAME"] = self::getDeliveriesInfo(array($arOrder["DELIVERY_ID"]));
420 $arOrder["DELIVERY_NAME"] = $arOrder["DELIVERY_NAME"][$arOrder["DELIVERY_ID"]];
421
422 $arPaySys = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"], $arOrder["PERSON_TYPE_ID"]);
423 $arOrder["PAY_SYSTEM_NAME"] = $arPaySys["NAME"];
424
425 $dbUserAccount = CSaleUserAccount::GetList(
426 array(),
427 array(
428 "USER_ID" => $arOrder["USER_ID"],
429 "CURRENCY" => $arOrder["CURRENCY"],
430 "LOCKED" => "N"
431 )
432 );
433
434 $arUserAccount = $dbUserAccount->GetNext();
435
436 $arOrder["CURRENT_BUDGET"] = $arUserAccount["CURRENT_BUDGET"] ? $arUserAccount["CURRENT_BUDGET"] : 0;
437 $arOrder["CURRENT_BUDGET_STRING"] = SaleFormatCurrency($arOrder["CURRENT_BUDGET"], $arOrder["CURRENCY"]);
438
439 return $arOrder;
440 }
441
442 private static function getOrderProps($arOrder)
443 {
445 'filter' => array('ORDER_ID' => $arOrder["ID"]),
446 'select' => array('*',
447 'TYPE' => 'PROPERTY.TYPE',
448 'IS_ZIP' => 'PROPERTY.IS_ZIP',
449 'IS_PAYER' => 'PROPERTY.IS_PAYER',
450 'IS_EMAIL' => 'PROPERTY.IS_EMAIL',
451 'IS_PHONE' => 'PROPERTY.IS_PHONE',
452 'IS_ADDRESS' => 'PROPERTY.IS_ADDRESS',
453 'IS_LOCATION' => 'PROPERTY.IS_LOCATION'
454 )
455 ));
456
457 while($pVal = $dbRes->fetch())
458 {
459 if($pVal['IS_PAYER'] == 'Y')
460 $arOrder["CUSTOMER_FIO"] = $pVal['VALUE'];
461 elseif($pVal['IS_EMAIL'] == 'Y')
462 $arOrder["CUSTOMER_EMAIL"] = $pVal['VALUE'];
463 elseif($pVal['IS_PHONE'] == 'Y')
464 $arOrder["CUSTOMER_PHONE"] = $pVal['VALUE'];
465 elseif($pVal['IS_ADDRESS'] == 'Y')
466 $arOrder["CUSTOMER_ADDRESS"] = $pVal['VALUE'];
467 elseif($pVal['IS_ZIP'] == 'Y')
468 $arOrder["CUSTOMER_ZIP"] = $pVal['VALUE'];
469 elseif($pVal['CODE'] == 'CITY')
470 $arOrder["CUSTOMER_CITY"] = $pVal['VALUE'];
471 elseif($pVal['IS_LOCATION'] == 'Y')
472 {
473 $arVal = CSaleLocation::GetByID($pVal["VALUE"], LANG);
474
475 $arOrder["CUSTOMER_LOCATION"] = htmlspecialcharsEx($arVal["COUNTRY_NAME"].
476 (($arVal["COUNTRY_NAME"] == '' || $arVal["CITY_NAME"] == '') ? "" : " - ").
477 $arVal["CITY_NAME"]);
478 }
479 }
480
481 return $arOrder;
482 }
483
484 public static function getCurrenciesNames($arCurIds = array())
485 {
486 if (!CModule::IncludeModule('catalog') || !CModule::IncludeModule('currency'))
487 return array();
488
489 static $arCurrCache = false;
490
491 if($arCurrCache === false)
492 {
493 $arCurrCache = array();
494 $dbCurr = CCurrency::GetList("sort", "asc");
495
496 while($arCurr = $dbCurr->Fetch())
497 $arCurrCache[$arCurr["CURRENCY"]] = $arCurr["FULL_NAME"];
498 }
499
500 $arRetSite = array();
501
502 if(!empty($arCurIds))
503 {
504 foreach ($arCurIds as $currId)
505 if(isset($arCurrCache[$currId]))
506 $arRetCur[$currId] = $arCurrCache[$currId];
507 }
508 else
509 {
510 $arRetCur = $arCurrCache;
511 }
512
513 return $arRetCur;
514 }
515
516 public static function getDeliveriesInfo($deliveryCodes)
517 {
518 if(!is_array($deliveryCodes))
519 {
520 return false;
521 }
522
523 static $result = null;
524
525 if($result !== null)
526 {
527 return $result;
528 }
529
530 foreach ($deliveryCodes as $code)
531 {
533
534 if($id <= 0)
535 {
536 continue;
537 }
538
539 if(!($deliveryService = \Bitrix\Sale\Delivery\Services\Manager::getObjectById($id)))
540 {
541 continue;
542 }
543
544 $result[$code] = htmlspecialcharsbx($deliveryService->getNameWithParent());
545 }
546
547 return $result;
548 }
549
550 public static function getSitesNames($arSitesIds = array())
551 {
552 static $arSiteCache = false;
553
554 if($arSiteCache === false)
555 {
556 $arSiteCache = array();
557 $dbSite = CSite::GetList();
558
559 while($arSite = $dbSite->Fetch())
560 $arSiteCache[$arSite["LID"]] = $arSite["NAME"];
561 }
562
563 $arRetSite = array();
564
565 if(!empty($arSitesIds))
566 {
567 foreach ($arSitesIds as $siteId)
568 if(isset($arSiteCache[$siteId]))
569 $arRetSite[$siteId] = $arSiteCache[$siteId];
570 }
571 else
572 {
573 $arRetSite = $arSiteCache;
574 }
575
576 return $arRetSite;
577 }
578
579 public static function getPaySystemsNames($arPaySystemsIds)
580 {
581 $arPaySystemsNames = array();
582
583 $dbPS = CSalePaySystem::GetList(array(), array("ID" => $arPaySystemsIds), false, false, array("ID", "NAME"));
584
585 while($arPS = $dbPS->Fetch())
586 $arPaySystemsNames[$arPS["ID"]] = htmlspecialcharsbx($arPS["NAME"]);
587
588 return $arPaySystemsNames;
589 }
590
591 public static function getPersonTypesNames($arPersonTypeIds)
592 {
593 $arPersonTypes = array();
594
595 $dbPers = CSalePersonType::GetList(array(), array("ID" => $arPersonTypeIds), false, false, array("ID", "NAME"));
596
597 while($arPers = $dbPers->Fetch())
598 $arPersonTypes[$arPers["ID"]] = htmlspecialcharsbx($arPers["NAME"]);
599
600 return $arPersonTypes;
601 }
602
603 public static function getStatusesNames($arStatusIds = false)
604 {
605 $arStatusNames = array();
606 $arFilter = array("LID" => LANGUAGE_ID);
607
608 if(is_array($arStatusIds))
609 $arFilter["ID"] = $arStatusIds;
610
611 $dbStat = CSaleStatus::GetList(
612 array(),
613 $arFilter,
614 false,
615 false,
616 array("ID", "NAME")
617 );
618
619 while($arStat = $dbStat->Fetch())
620 $arStatusNames[$arStat["ID"]] = htmlspecialcharsbx($arStat["NAME"]);
621
622 return $arStatusNames;
623 }
624
625 public static function getDateTime($strDate)
626 {
627 return FormatDateFromDB(
628 $strDate,
629 CSite::GetDateFormat('FULL', LANGUAGE_ID)
630 );
631 }
632
637 public static function getDate($strDate)
638 {
639 return FormatDateFromDB(
640 $strDate,
641 CSite::GetDateFormat('SHORT', LANGUAGE_ID)
642 );
643 }
644
645 public static function getPreparedTemplate($template, $arFields)
646 {
647 $retStr = $template;
648
649 foreach ($arFields as $key => $field)
650 $retStr = str_replace('##'.$key.'##', $field, $retStr);
651
652 return $retStr;
653 }
654}
655
657{
658 public static function InitEventHandlers()
659 {
660 if(!CModule::IncludeModule("pull"))
661 return false;
662
663 static $inited = false;
664
665 if($inited)
666 return true;
667
668 CPullWatch::Add($GLOBALS['USER']->GetID(), 'saleOrder');
669
670 $inited = true;
671
672 return true;
673 }
674
675 public static function onOrderDelete($orderId, $bSuccess)
676 {
677 if(!$bSuccess)
678 return false;
679
680 if(!CModule::IncludeModule("pull"))
681 return false;
682
683 CPullWatch::AddToStack('saleOrder',
684 array(
685 'module_id' => 'sale',
686 'command' => 'orderDelete',
687 'params' => Array("id" => $orderId)
688 )
689 );
690 }
691
692 public static function onOrderAdd($orderId, $arFields)
693 {
694 if(!CModule::IncludeModule("pull"))
695 return false;
696
697 CPullWatch::AddToStack('saleOrder',
698 array(
699 'module_id' => 'sale',
700 'command' => 'orderAdd',
701 'params' => Array("id" => $orderId)
702 )
703 );
704 }
705
706 public static function onOrderUpdate($orderId, $arFields)
707 {
708 if(!CModule::IncludeModule("pull"))
709 return false;
710
711 CPullWatch::AddToStack('saleOrder',
712 array(
713 'module_id' => 'sale',
714 'command' => 'orderUpdate',
715 'params' => Array("id" => $orderId)
716 )
717 );
718 }
719}
720
722{
723 public static function adaptFields($arFields)
724 {
725 foreach ($arFields as $fieldId => $fieldValue)
726 {
727 if($fieldId == "DATE_TO")
728 $arFields["DATE_TO"] = self::addLastTimeToDate($fieldValue);
729 elseif($fieldId == "DATE_UPDATE_TO")
730 $arFields["DATE_UPDATE_TO"] = self::addLastTimeToDate($fieldValue);
731 elseif($fieldId == "DATE_STATUS_TO")
732 $arFields["DATE_STATUS_TO"] = self::addLastTimeToDate($fieldValue);
733 elseif($fieldId == "DATE_PAYED_TO")
734 $arFields["DATE_PAYED_TO"] = self::addLastTimeToDate($fieldValue);
735 elseif($fieldId == "DATE_ALLOW_DELIVERY_TO")
736 {
737 $arFields["<=DATE_ALLOW_DELIVERY"] = self::addLastTimeToDate($fieldValue);
738 unset($arFields["DATE_ALLOW_DELIVERY_TO"]);
739 }
740 elseif($fieldId == "DATE_ALLOW_DELIVERY_FROM")
741 {
742 $arFields[">=DATE_ALLOW_DELIVERY"] = $arFields["DATE_ALLOW_DELIVERY_FROM"];
743 unset($arFields["DATE_ALLOW_DELIVERY_FROM"]);
744 }
745
746 elseif($fieldId == "ORDER_ID")
747 {
748 $arCommaEnums = explode(",", $arFields["ORDER_ID"]);
749 $commaCount = count($arCommaEnums);
750
751 if($commaCount > 1)
752 $arFields["ID"] = $arCommaEnums;
753 elseif($commaCount == 1)
754 {
755 $arHypEnum = explode("-", $arFields["ORDER_ID"]);
756
757 if(count($arHypEnum) == 2)
758 {
759 $arFields[">=ID"] =$arHypEnum[0];
760 $arFields["<=ID"] =$arHypEnum[1];
761 }
762 else
763 {
764 $arFields["ID"] = $arHypEnum;
765 }
766 }
767
768 unset($arFields["ORDER_ID"]);
769 }
770 elseif($fieldId == "PRICE_FROM")
771 {
772 $arFields[">=PRICE"] = $fieldValue;
773 unset($arFields["PRICE_FROM"]);
774 }
775 elseif($fieldId == "PRICE_TO")
776 {
777 $arFields["<PRICE"] = $fieldValue;
778 unset($arFields["PRICE_TO"]);
779 }
780 }
781
782 return $arFields;
783 }
784
785 private static function parseOrderId($strOrderId)
786 {
787 return $arResult;
788 }
789
790 public static function addLastTimeToDate($strDate)
791 {
792 $retStrDateTime = '';
793
794 if ($strDate == '')
795 return $retStrDateTime;
796
797 if ($arDate = ParseDateTime($strDate, CSite::GetDateFormat("FULL", SITE_ID)))
798 {
799 if (mb_strlen($strDate) < 11)
800 {
801 $arDate["HH"] = 23;
802 $arDate["MI"] = 59;
803 $arDate["SS"] = 59;
804 }
805
806 $retStrDateTime = date($GLOBALS["DB"]->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
807 }
808
809 return $retStrDateTime;
810 }
811
812 public static function setFieldsValues($arFields, $customFilter)
813 {
814 if(!is_array($arFields) || !is_array($customFilter))
815 return false;
816
817 foreach ($arFields as $fieldId => $arField)
818 $arFields[$fieldId]["VALUE"] = isset($customFilter[$fieldId]) ? $customFilter[$fieldId] : '';
819
820 return $arFields;
821 }
822
823 public static function buildFieldsParams()
824 {
825 return array(
826 "ORDER_ID" => array(
827 "NAME" => GetMessage("SMOB_FILTER_ORDER_ID"),
828 "TYPE" => "TEXT"
829 ),
830 "USER_ID" => array(
831 "NAME" => GetMessage("SMOB_FILTER_USER_ID"),
832 "TYPE" => "TEXT"
833 ),
834 "DATE_FROM" => array(
835 "NAME" => GetMessage("SMOB_FILTER_DATE_ORDER_FROM"),
836 "TYPE" => "DATE"
837 ),
838 "DATE_TO" => array(
839 "NAME" => GetMessage("SMOB_FILTER_DATE_ORDER_TO"),
840 "TYPE" => "DATE"
841 ),
842 "LID" => array(
843 "NAME" => GetMessage("SMOB_FILTER_SITE"),
844 "TYPE" => "ONE_SELECT",
845 "ADD_ALL_SELECT" => "Y",
847 ),
848 "CURRENCY" => array(
849 "NAME" => GetMessage("SMOB_FILTER_CURRENCY"),
850 "TYPE" => "ONE_SELECT",
852 ),
853 "PRICE_FROM" => array(
854 "NAME" => GetMessage("SMOB_FILTER_PRICE_FROM"),
855 "TYPE" => "TEXT"
856 ),
857 "PRICE_TO" => array(
858 "NAME" => GetMessage("SMOB_FILTER_PRICE_TO"),
859 "TYPE" => "TEXT"
860 ),
861 "STATUS_ID" => array(
862 "NAME" => GetMessage("SMOB_FILTER_STATUS_ID"),
863 "TYPE" => "MULTI_SELECT",
865 ),
866 "PAYED" => array(
867 "NAME" => GetMessage("SMOB_FILTER_PAYED"),
868 "TYPE" => "ONE_SELECT",
869 "ADD_ALL_SELECT" => "Y",
870 "OPTIONS" => array(
871 "Y" => GetMessage("SMOB_FILTER_PAYED_Y"),
872 "N" => GetMessage("SMOB_FILTER_PAYED_N")
873 ),
874 ),
875 "ALLOW_DELIVERY" => array(
876 "NAME" => GetMessage("SMOB_FILTER_ALLOW_DELIVERY"),
877 "TYPE" => "ONE_SELECT",
878 "ADD_ALL_SELECT" => "Y",
879 "OPTIONS" => array(
880 "Y" => GetMessage("SMOB_FILTER_ALLOW_DELIVERY_Y"),
881 "N" => GetMessage("SMOB_FILTER_ALLOW_DELIVERY_N")
882 ),
883 ),
884 "DEDUCTED" => array(
885 "NAME" => GetMessage("SMOB_FILTER_DEDUCTED"),
886 "TYPE" => "ONE_SELECT",
887 "ADD_ALL_SELECT" => "Y",
888 "OPTIONS" => array(
889 "Y" => GetMessage("SMOB_FILTER_DEDUCTED_Y"),
890 "N" => GetMessage("SMOB_FILTER_DEDUCTED_N")
891 ),
892 ),
893 "MARKED" => array(
894 "NAME" => GetMessage("SMOB_FILTER_MARKED"),
895 "TYPE" => "ONE_SELECT",
896 "ADD_ALL_SELECT" => "Y",
897 "OPTIONS" => array(
898 "Y" => GetMessage("SMOB_FILTER_MARKED_Y"),
899 "N" => GetMessage("SMOB_FILTER_MARKED_N")
900 ),
901 ),
902 );
903 }
904}
905
907{
908 private static $arEvents = array(
909 "ORDER_STATUS_CHANGED",
910 "ORDER_DELIVERY_ALLOWED",
911 "ORDER_PAYED",
912 "ORDER_COMPLETED",
913 "ORDER_DEDUCTED",
914 "ORDER_CANCELED",
915 "ORDER_CREATED",
916 "ORDER_MARKED",
917 "ORDER_CHECK_ERROR"
918 );
919
920 private static $arSubscriptions = array();
921
922 public static function getEvents()
923 {
924 return self::$arEvents;
925 }
926
927 private static function &getData()
928 {
929 if(empty(self::$arSubscriptions))
930 self::$arSubscriptions = unserialize(COption::GetOptionString("sale", "pushEventsSubscriptions", ""), ['allowed_classes' => false]);
931
932 return self::$arSubscriptions;
933 }
934
935 private static function saveData()
936 {
937 return COption::SetOptionString("sale", "pushEventsSubscriptions", serialize(self::$arSubscriptions));
938 }
939
940 public static function getSubscribers($eventId, $arParams)
941 {
942 $arResult = array();
943 $arSubscriptions = self::getData();
944
945 if(is_array($arSubscriptions))
946 foreach ($arSubscriptions as $subsId => $arSubscription)
947 if(
948 $arSubscription["E"] == array_search($eventId, self::$arEvents)
949 &&
950 $arSubscription["V"] == "Y"
951 )
952 $arResult[] = $arSubscription["U"];
953
954 return $arResult;
955 }
956
957 public static function updateSubscriptions($userId, $arSubs)
958 {
959 $arOldSubs = &self::getData();
960 $arTmpSubs = array();
961
962 if(is_array($arOldSubs))
963 {
964 foreach ($arOldSubs as $subId => $subItem)
965 if($subItem["U"] == $userId)
966 $arTmpSubs[$subId] = &$arOldSubs[$subId];
967
968 foreach ($arTmpSubs as $subId => &$subItem)
969 {
970 if(isset($arSubs[self::$arEvents[$subItem["E"]]]))
971 {
972 $subItem["V"] = $arSubs[self::$arEvents[$subItem["E"]]];
973 unset($arSubs[self::$arEvents[$subItem["E"]]]);
974 }
975
976 unset($arTmpSubs[$subId]);
977 }
978 }
979
980 if(!empty($arSubs))
981 foreach ($arSubs as $eventId => $value)
982 self::addSubscription($userId, $eventId, $value);
983
984 self::saveData();
985 return true;
986 }
987
988 public static function addSubscription($userId, $eventId, $value)
989 {
990 $result = false;
991 $evtKey = array_search($eventId, self::$arEvents);
992
993 if($evtKey !== false)
994 {
995 $arSubscriptions = &self::getData();
996 $arSubscriptions[] = array(
997 "U" => $userId,
998 "E" => $evtKey,
999 "V" => $value
1000 );
1001
1002 $result = true;
1003 }
1004
1005 return $result;
1006 }
1007
1008 private static function checkRights($userId, $eventId, $arParams)
1009 {
1010 $orderId = (int)$arParams["ORDER_ID"];
1011
1012 if($orderId <= 0)
1013 {
1014 return false;
1015 }
1016
1017 $registry = \Bitrix\Sale\Registry::getInstance(\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER);
1018
1020 $orderClass = $registry->getOrderClassName();
1021
1022 if(!($order = $orderClass::load($orderId)))
1023 {
1024 return false;
1025 }
1026
1027 $allowedStatusesView = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($userId, array('view'));
1028 return(in_array($order->getField('STATUS_ID'), $allowedStatusesView));
1029 }
1030
1031 public static function getSubscriptions($userId)
1032 {
1033 $arResult = array();
1034 $userId = intval($userId);
1035
1036 $arSubscriptions = self::getData();
1037
1038 if(is_array($arSubscriptions))
1039 foreach ($arSubscriptions as $arSubscription)
1040 if(intval($arSubscription["U"]) == $userId)
1041 $arResult[self::$arEvents[$arSubscription["E"]]] = $arSubscription["V"];
1042
1043 return $arResult;
1044 }
1045
1046 private static function makeMessage($eventId, $arParams)
1047 {
1048 global $DB;
1049
1050 $strResult = GetMessage('SMOB_PUSH_MES_'.$eventId, array(
1051 "#ACCOUNT_NUMBER#" => $arParams["ORDER"]["ACCOUNT_NUMBER"],
1052 "#DATE_INSERT#" => FormatDate($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), strtotime($arParams["ORDER"]["DATE_INSERT"])),
1053 "#PRICE#" => $arParams["ORDER"]["PRICE"],
1054 "#CURRENCY#" => $arParams["ORDER"]["CURRENCY"]
1055 ));
1056
1057 if($eventId == "ORDER_STATUS_CHANGED")
1058 {
1059 $arFilter = array(
1060 "LID" => LANGUAGE_ID,
1061 "ID" => $arParams["ORDER"]["STATUS_ID"]
1062 );
1063
1064 $dbStatusListTmp = CSaleStatus::GetList(
1065 array("SORT" => "ASC"),
1066 $arFilter,
1067 false,
1068 false,
1069 array("NAME")
1070 );
1071
1072 if($arStatus = $dbStatusListTmp->GetNext())
1073 $strResult = str_replace("#STATUS_NAME#", $arStatus["NAME"], $strResult);
1074 }
1075 elseif($eventId == "ORDER_CHECK_ERROR")
1076 {
1077 $strResult = str_replace("#CHECK_ID#", $arParams["CHECK"]["ID"], $strResult);
1078 }
1079
1080 return $strResult;
1081 }
1082
1083 private static function makeTitle($eventId, $arParams)
1084 {
1085 return "";
1086 }
1087
1088 public static function send($eventId, $arParams)
1089 {
1090 $result = false;
1091
1092 if(!isset($arParams["ORDER"]) && isset($arParams["ORDER_ID"]))
1093 $arParams["ORDER"] = CSaleOrder::GetById($arParams["ORDER_ID"]);
1094
1095 if(
1096 in_array($eventId, self::$arEvents)
1097 && isset($arParams["ORDER"])
1098 && CModule::IncludeModule("pull")
1099 )
1100 {
1101
1102 if (!empty($arParams["ORDER_ID"]) && !empty($GLOBALS['SALE_NEW_ORDER_SEND'][$arParams["ORDER_ID"]]))
1103 {
1104 return $result;
1105 }
1106
1107 $arUsers = self::getSubscribers($eventId, $arParams);
1108
1109 if(!empty($arUsers))
1110 {
1111 $text = self::makeMessage($eventId, $arParams);
1112 $title = self::makeTitle($eventId, $arParams);
1113 $arMessages = array();
1114
1115 foreach ($arUsers as $userId)
1116 {
1117 if(!self::checkRights($userId, $eventId, array("ORDER_ID" => $arParams["ORDER"]["ID"])))
1118 continue;
1119
1120 $arMessages[] = array(
1121 "USER_ID" => $userId,
1122 "TITLE" => $title,
1123 "APP_ID"=>"BitrixAdmin",
1124 "MESSAGE" => $text,
1125 "PARAMS" =>"sl_".$arParams["ORDER"]["ID"]
1126 );
1127 }
1128
1129 $pushMe = new CPushManager();
1130 $result = $pushMe->SendMessage($arMessages);
1131 }
1132 }
1133
1134 return $result;
1135 }
1136}
$arParams
Определения access_dialog.php:21
$arVal
Определения options.php:1785
$arResult
Определения generate_coupon.php:16
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static getList(array $parameters=array())
Определения datamanager.php:431
static addItem($arItem)
Определения interface.php:7
static GetList($by='sort', $order='asc', $lang=LANGUAGE_ID)
Определения currency.php:554
static SetOptionString($module_id, $name, $value="", $desc=false, $site="")
Определения option.php:29
static getIdByCode($code)
Определения delivery.php:1641
static GetByID($id, $personTypeId=0)
Определения pay_system.php:82
static GetList($arOrder=array("SORT"=> "ASC", "NAME"=> "ASC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения pay_system.php:236
static GetByID($ID)
Определения person_type.php:69
static initOwners()
Определения sale_report_helper.php:303
static getOwners()
Определения sale_report_helper.php:446
static GetByID($primary, $strLang=LANGUAGE_ID)
Определения location.php:118
static adaptFields($arFields)
Определения mobile_order.php:723
static buildFieldsParams()
Определения mobile_order.php:823
static addLastTimeToDate($strDate)
Определения mobile_order.php:790
static setFieldsValues($arFields, $customFilter)
Определения mobile_order.php:812
static InitEventHandlers()
Определения mobile_order.php:658
static onOrderUpdate($orderId, $arFields)
Определения mobile_order.php:706
static onOrderAdd($orderId, $arFields)
Определения mobile_order.php:692
static onOrderDelete($orderId, $bSuccess)
Определения mobile_order.php:675
static addSubscription($userId, $eventId, $value)
Определения mobile_order.php:988
static getSubscribers($eventId, $arParams)
Определения mobile_order.php:940
static send($eventId, $arParams)
Определения mobile_order.php:1088
static updateSubscriptions($userId, $arSubs)
Определения mobile_order.php:957
static getSubscriptions($userId)
Определения mobile_order.php:1031
static getEvents()
Определения mobile_order.php:922
static getOrderInfoDetail($orderId)
Определения mobile_order.php:381
static getSitesNames($arSitesIds=array())
Определения mobile_order.php:550
static getStatusesNames($arStatusIds=false)
Определения mobile_order.php:603
static getMobileReports()
Определения mobile_order.php:37
static getDate($strDate)
Определения mobile_order.php:637
static getPreparedTemplate($template, $arFields)
Определения mobile_order.php:645
static getPersonTypesNames($arPersonTypeIds)
Определения mobile_order.php:591
static GetFormatedUserName($userId)
Определения mobile_order.php:7
static buildSaleAdminMobileMenu()
Определения mobile_order.php:92
static getDeliveriesInfo($deliveryCodes)
Определения mobile_order.php:516
static getPaySystemsNames($arPaySystemsIds)
Определения mobile_order.php:579
static getDateTime($strDate)
Определения mobile_order.php:625
static getCurrenciesNames($arCurIds=array())
Определения mobile_order.php:484
static makeDetailClassFromOrder($arOrder)
Определения mobile_order.php:148
static GetList($arOrder=array("ID"=>"DESC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arOptions=array())
Определения order.php:339
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения person_type.php:7
static GetLangByID($statusId, $languageId=LANGUAGE_ID)
Определения status.php:55
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения status.php:72
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения user.php:80
$arFields
Определения dblapprove.php:5
$orderId
Определения payment.php:5
$template
Определения file_edit.php:49
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$arMenu
Определения file_new.php:216
$result
Определения get_property_values.php:14
global $DB
Определения cron_frame.php:29
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
$siteId
Определения ajax.php:8
roundEx($value, $prec=0)
Определения tools.php:4635
FormatDate($format="", $timestamp=false, $now=false, ?string $languageId=null)
Определения tools.php:871
ParseDateTime($datetime, $format=false)
Определения tools.php:638
htmlspecialcharsEx($str)
Определения tools.php:2685
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
FormatDateFromDB($date, $format='FULL', $phpFormat=false)
Определения tools.php:1875
$order
Определения payment.php:8
$settings
Определения product_settings.php:43
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$text
Определения template_pdf.php:79
</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."%"
Определения waybill.php:936
$saleModulePermissions
Определения tools.php:21
$items
Определения template.php:224
SaleFormatCurrency($fSum, $strCurrency, $OnlyValue=false, $withoutFormat=false)
Определения include.php:142
const SALE_WEIGHT_PRECISION
Определения include.php:47
$title
Определения pdf.php:123
const SITE_ID
Определения sonet_set_content_view.php:12
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168