1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
order.php
См. документацию.
1<?php
2
5
6require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/general/order.php");
7
9{
10 public static function Add($arFields)
11 {
13
14 $isOrderConverted = Main\Config\Option::get("main", "~sale_converted_15", 'Y');
15
16
17 $arFields1 = array();
18 foreach ($arFields as $key => $value)
19 {
20 if (mb_substr($key, 0, 1) == "=")
21 {
22 $arFields1[mb_substr($key, 1)] = $value;
23 unset($arFields[$key]);
24 }
25 }
26
27 if (!empty($arFields['TAX_LIST']) && is_array($arFields['TAX_LIST']))
28 {
29 $arFields1['TAX_LIST'] = $arFields['TAX_LIST'];
30 }
31
32 if (!empty($arFields['ORDER_PROP']) && is_array($arFields['TAX_LIST']))
33 {
34 $arFields1['ORDER_PROP'] = $arFields['ORDER_PROP'];
35 }
36
37 if (!empty($arFields['DELIVERY_PRICE']) && floatval($arFields['DELIVERY_PRICE']) > 0)
38 {
39 $arFields1['DELIVERY_PRICE'] = $arFields['DELIVERY_PRICE'];
40 }
41
42 if (array_key_exists('ONLY_FULL_PAY_FROM_ACCOUNT', $arFields))
43 {
44 $arFields1['ONLY_FULL_PAY_FROM_ACCOUNT'] = $arFields['ONLY_FULL_PAY_FROM_ACCOUNT'];
45 }
46
47 unset($arFields['DELIVERY_PRICE']);
48 unset($arFields['TAX_LIST']);
49
51 return false;
52
53 foreach(GetModuleEvents("sale", "OnBeforeOrderAdd", true) as $arEvent)
54 if (ExecuteModuleEventEx($arEvent, Array(&$arFields))===false)
55 return false;
56
57 if ($isOrderConverted != 'N')
58 {
59 if (!empty($arFields1))
60 {
62 }
63
65 if ($result->isSuccess(true))
66 {
67 $ID = $result->getId();
68 }
69 else
70 {
71 foreach($result->getErrorMessages() as $error)
72 {
73 $APPLICATION->ThrowException($error);
74 }
75
76 return false;
77 }
78 }
79 else
80 {
81 $arInsert = $DB->PrepareInsert("b_sale_order", $arFields);
82
83 if (!array_key_exists("DATE_STATUS", $arFields))
84 {
85 $arInsert[0] .= ", DATE_STATUS";
86 $arInsert[1] .= ", ".$DB->GetNowFunction();
87 }
88 if (!array_key_exists("DATE_INSERT", $arFields))
89 {
90 $arInsert[0] .= ", DATE_INSERT";
91 $arInsert[1] .= ", ".$DB->GetNowFunction();
92 }
93 if (!array_key_exists("DATE_UPDATE", $arFields))
94 {
95 $arInsert[0] .= ", DATE_UPDATE";
96 $arInsert[1] .= ", ".$DB->GetNowFunction();
97 }
98
99 foreach ($arFields1 as $key => $value)
100 {
101 if ($arInsert[0] <> '')
102 {
103 $arInsert[0] .= ", ";
104 $arInsert[1] .= ", ";
105 }
106 $arInsert[0] .= $key;
107 $arInsert[1] .= $value;
108 }
109
110 $strSql =
111 "INSERT INTO b_sale_order(".$arInsert[0].") ".
112 "VALUES(".$arInsert[1].")";
113
114 $DB->Query($strSql);
115
116 $ID = intval($DB->LastID());
117 CSaleOrder::SetAccountNumber($ID);
118 }
119
120
121 CSaleOrderChange::AddRecord($ID, "ORDER_ADDED");
122
123 $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields);
124
125 if ($isOrderConverted == 'N')
126 {
127 foreach (GetModuleEvents("sale", "OnOrderAdd", true) as $arEvent)
128 ExecuteModuleEventEx($arEvent, Array($ID, $arFields));
129 }
130
131 if(defined("CACHED_b_sale_order"))
132 {
133 $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders");
134 $CACHE_MANAGER->SetImmediate("sale_orders", true);
135 }
136
137 return $ID;
138 }
139
140 public static function Update($ID, $arFields, $bDateUpdate = true)
141 {
143
144 $isOrderConverted = Main\Config\Option::get("main", "~sale_converted_15", 'Y');
145
146 $ID = intval($ID);
147
148 $arFields1 = array();
149 foreach ($arFields as $key => $value)
150 {
151 if (mb_substr($key, 0, 1) == "=")
152 {
153 $arFields1[mb_substr($key, 1)] = $value;
154 unset($arFields[$key]);
155 }
156 }
157
158 if (!CSaleOrder::CheckFields("UPDATE", $arFields, $ID))
159 return false;
160
161 foreach(GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent)
162 if (ExecuteModuleEventEx($arEvent, Array($ID, &$arFields))===false)
163 return false;
164
165
166 if ($isOrderConverted != 'N')
167 {
168 if (!empty($arFields1))
169 {
171 }
172
174 $result = Sale\Compatible\OrderCompatibility::update($ID, array_merge($arFields, $arFields1), $bDateUpdate);
176 if (!$result->isSuccess())
177 {
178 foreach($result->getErrorMessages() as $error)
179 {
180 $APPLICATION->ThrowException($error);
181 }
182
183 return false;
184 }
185 else
186 {
187 $arOrderOldFields = array();
188
189 $resultFields = $result->getData();
190 if (!empty($resultFields['OLD_FIELDS']) && is_array($resultFields['OLD_FIELDS']))
191 {
192 $arOrderOldFields = $resultFields['OLD_FIELDS'];
193 }
194
195 $updated = true;
196 }
197 }
198 else
199 {
200
201 $strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields);
202
203 foreach ($arFields1 as $key => $value)
204 {
205 if ($strUpdate <> '') $strUpdate .= ", ";
206 $strUpdate .= $key."=".$value." ";
207 }
208
209 //get old fields
210 $arOrderOldFields = CSaleOrder::GetByID($ID);
211
212 $strSql =
213 "UPDATE b_sale_order SET ".
214 " ".$strUpdate." ";
215 if($bDateUpdate)
216 $strSql .= ", DATE_UPDATE = ".$DB->GetNowFunction()." ";
217 $strSql .= "WHERE ID = ".$ID." ";
218
219 $updated = $DB->Query($strSql, true);
220
221 if (!$updated)
222 return false;
223
224 }
225
226 $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields);
227
228 if ($updated)
230
231 unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_".$ID]);
232
233 foreach(GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent)
234 ExecuteModuleEventEx($arEvent, Array($ID, $arFields));
235
236 if (isset($arFields["TRACKING_NUMBER"]))
237 {
238 foreach(GetModuleEvents("sale", "OnTrackingNumberChange", true) as $arEvent)
239 ExecuteModuleEventEx($arEvent, array($ID, $arFields["TRACKING_NUMBER"]));
240
241 if ($arFields["TRACKING_NUMBER"] <> '' && $arOrderOldFields["TRACKING_NUMBER"] != $arFields["TRACKING_NUMBER"])
242 {
243 $accountNumber = (isset($arFields["ACCOUNT_NUMBER"])) ? $arFields["ACCOUNT_NUMBER"] : $arOrderOldFields["ACCOUNT_NUMBER"];
244 $userId = (isset($arFields["USER_ID"])) ? $arFields["USER_ID"] : $arOrderOldFields["USER_ID"];
245
246 $payerName = "";
247 $payerEMail = '';
248 $dbUser = CUser::GetByID($userId);
249 if ($arUser = $dbUser->Fetch())
250 {
251 if ($payerName == '')
252 $payerName = $arUser["NAME"].(($arUser["NAME"] == '' || $arUser["LAST_NAME"] == '') ? "" : " ").$arUser["LAST_NAME"];
253 if ($payerEMail == '')
254 $payerEMail = $arUser["EMAIL"];
255 }
256
257 $arEmailFields = Array(
258 "ORDER_ID" => $accountNumber,
259 "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $arOrderOldFields["LID"]))),
260 "ORDER_USER" => $payerName,
261 "ORDER_TRACKING_NUMBER" => $arFields["TRACKING_NUMBER"],
262 "BCC" => COption::GetOptionString("sale", "order_email", "order@".$_SERVER['SERVER_NAME']),
263 "EMAIL" => $payerEMail,
264 "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$_SERVER['SERVER_NAME'])
265 );
266
267 $event = new CEvent;
268 $event->Send("SALE_ORDER_TRACKING_NUMBER", $arOrderOldFields["LID"], $arEmailFields, "N");
269 }
270 }
271
272 if(defined("CACHED_b_sale_order") && $bDateUpdate && $arFields["UPDATED_1C"] != "Y")
273 {
274 $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders");
275 $CACHE_MANAGER->SetImmediate("sale_orders", true);
276 }
277
278 return $ID;
279 }
280
281 public static function PrepareGetListArray($key, &$arFields, &$arPropIDsTmp)
282 {
283 $propIDTmp = false;
284 if (mb_strpos($key, "PROPERTY_ID_") === 0)
285 $propIDTmp = intval(mb_substr($key, mb_strlen("PROPERTY_ID_")));
286 elseif (mb_strpos($key, "PROPERTY_NAME_") === 0)
287 $propIDTmp = intval(mb_substr($key, mb_strlen("PROPERTY_NAME_")));
288 elseif (mb_strpos($key, "PROPERTY_VALUE_") === 0)
289 $propIDTmp = intval(mb_substr($key, mb_strlen("PROPERTY_VALUE_")));
290 elseif (mb_strpos($key, "PROPERTY_CODE_") === 0)
291 $propIDTmp = intval(mb_substr($key, mb_strlen("PROPERTY_CODE_")));
292 elseif (mb_strpos($key, "PROPERTY_VAL_BY_CODE_") === 0)
293 $propIDTmp = preg_replace("/[^a-zA-Z0-9_-]/is", "", trim(mb_substr($key, mb_strlen("PROPERTY_VAL_BY_CODE_"))));
294
295 $locationPropInfo = self::getLocationPropertyInfo();
296
297 if ($propIDTmp <> '' || $propIDTmp > 0)
298 {
299 if (!in_array($propIDTmp, $arPropIDsTmp))
300 {
301 $arPropIDsTmp[] = $propIDTmp;
302
303 $arFields["PROPERTY_ID_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
304 $arFields["PROPERTY_ORDER_PROPS_ID_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
305 $arFields["PROPERTY_NAME_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
306
307 if(CSaleLocation::isLocationProMigrated() && isset($locationPropInfo['ID'][$propIDTmp]))
308 {
309 $arFields["PROPERTY_VALUE_".$propIDTmp] = array("FIELD" => "L_".$propIDTmp.".ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID) INNER JOIN b_sale_location L_".$propIDTmp." ON (SP_".$propIDTmp.".VALUE = L_".$propIDTmp.".CODE)");
310 }
311 else
312 {
313 $arFields["PROPERTY_VALUE_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
314 }
315
316 $arFields["PROPERTY_CODE_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".ORDER_PROPS_ID = ".$propIDTmp." AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
317
318 if(CSaleLocation::isLocationProMigrated() && isset($locationPropInfo['CODE'][$propIDTmp]))
319 {
320 $arFields["PROPERTY_VAL_BY_CODE_".$propIDTmp] = array("FIELD" => "L_".$propIDTmp.".ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".CODE = '".$propIDTmp."' AND O.ID = SP_".$propIDTmp.".ORDER_ID) INNER JOIN b_sale_location L_".$propIDTmp." ON (SP_".$propIDTmp.".VALUE = L_".$propIDTmp.".CODE)");
321 }
322 else
323 {
324 $arFields["PROPERTY_VAL_BY_CODE_".$propIDTmp] = array("FIELD" => "SP_".$propIDTmp.".VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_".$propIDTmp." ON (SP_".$propIDTmp.".CODE = '".$propIDTmp."' AND O.ID = SP_".$propIDTmp.".ORDER_ID)");
325 }
326 }
327 }
328 }
329
339 public static function GetList($arOrder = array("ID"=>"DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arOptions = array())
340 {
341 global $DB, $USER_FIELD_MANAGER;
342
343 if (!is_array($arOrder))
344 $arOrder = array('ID' => 'DESC');
345 if (!is_array($arFilter))
346 $arFilter = array();
347 if (!is_array($arSelectFields))
348 $arSelectFields = array();
349
350 $isOrderConverted = Main\Config\Option::get("main", "~sale_converted_15", 'Y');
351
352 $obUserFieldsSql = new CUserTypeSQL;
353 $obUserFieldsSql->SetEntity("ORDER", "O.ID");
354 $obUserFieldsSql->SetSelect($arSelectFields);
355 $obUserFieldsSql->SetFilter($arFilter);
356 $obUserFieldsSql->SetOrder($arOrder);
357
358 if (array_key_exists("DATE_FROM", $arFilter))
359 {
360 $val = $arFilter["DATE_FROM"];
361 unset($arFilter["DATE_FROM"]);
362 $arFilter[">=DATE_INSERT"] = $val;
363 }
364 if (array_key_exists("DATE_TO", $arFilter))
365 {
366 $val = $arFilter["DATE_TO"];
367 unset($arFilter["DATE_TO"]);
368 $arFilter["<=DATE_INSERT"] = $val;
369 }
370 if (array_key_exists("DATE_INSERT_FROM", $arFilter))
371 {
372 $val = $arFilter["DATE_INSERT_FROM"];
373 unset($arFilter["DATE_INSERT_FROM"]);
374 $arFilter[">=DATE_INSERT"] = $val;
375 }
376 if (array_key_exists("DATE_INSERT_TO", $arFilter))
377 {
378 $val = $arFilter["DATE_INSERT_TO"];
379 unset($arFilter["DATE_INSERT_TO"]);
380 $arFilter["<=DATE_INSERT"] = $val;
381 }
382 if (array_key_exists("DATE_UPDATE_FROM", $arFilter))
383 {
384 $val = $arFilter["DATE_UPDATE_FROM"];
385 unset($arFilter["DATE_UPDATE_FROM"]);
386 $arFilter[">=DATE_UPDATE"] = $val;
387 }
388 if (array_key_exists("DATE_UPDATE_TO", $arFilter))
389 {
390 $val = $arFilter["DATE_UPDATE_TO"];
391 unset($arFilter["DATE_UPDATE_TO"]);
392 $arFilter["<=DATE_UPDATE"] = $val;
393 }
394
395 if (array_key_exists("DATE_STATUS_FROM", $arFilter))
396 {
397 $val = $arFilter["DATE_STATUS_FROM"];
398 unset($arFilter["DATE_STATUS_FROM"]);
399 $arFilter[">=DATE_STATUS"] = $val;
400 }
401 if (array_key_exists("DATE_STATUS_TO", $arFilter))
402 {
403 $val = $arFilter["DATE_STATUS_TO"];
404 unset($arFilter["DATE_STATUS_TO"]);
405 $arFilter["<=DATE_STATUS"] = $val;
406 }
407 if (array_key_exists("DATE_PAYED_FROM", $arFilter))
408 {
409 $val = $arFilter["DATE_PAYED_FROM"];
410 unset($arFilter["DATE_PAYED_FROM"]);
411 $arFilter[">=DATE_PAYED"] = $val;
412 }
413 if (array_key_exists("DATE_PAYED_TO", $arFilter))
414 {
415 $val = $arFilter["DATE_PAYED_TO"];
416 unset($arFilter["DATE_PAYED_TO"]);
417 $arFilter["<=DATE_PAYED"] = $val;
418 }
419 if (array_key_exists("DATE_ALLOW_DELIVERY_FROM", $arFilter))
420 {
421 $val = $arFilter["DATE_ALLOW_DELIVERY_FROM"];
422 unset($arFilter["DATE_ALLOW_DELIVERY_FROM"]);
423 $arFilter[">=DATE_ALLOW_DELIVERY"] = $val;
424 }
425 if (array_key_exists("DATE_ALLOW_DELIVERY_TO", $arFilter))
426 {
427 $val = $arFilter["DATE_ALLOW_DELIVERY_TO"];
428 unset($arFilter["DATE_ALLOW_DELIVERY_TO"]);
429 $arFilter["<=DATE_ALLOW_DELIVERY"] = $val;
430 }
431 if (array_key_exists("DATE_CANCELED_FROM", $arFilter))
432 {
433 $val = $arFilter["DATE_CANCELED_FROM"];
434 unset($arFilter["DATE_CANCELED_FROM"]);
435 $arFilter[">=DATE_CANCELED"] = $val;
436 }
437 if (array_key_exists("DATE_CANCELED_TO", $arFilter))
438 {
439 $val = $arFilter["DATE_CANCELED_TO"];
440 unset($arFilter["DATE_CANCELED_TO"]);
441 $arFilter["<=DATE_CANCELED"] = $val;
442 }
443 if (array_key_exists("DATE_DEDUCTED_FROM", $arFilter))
444 {
445 $val = $arFilter["DATE_DEDUCTED_FROM"];
446 unset($arFilter["DATE_DEDUCTED_FROM"]);
447 $arFilter[">=DATE_DEDUCTED"] = $val;
448 }
449 if (array_key_exists("DATE_DEDUCTED_TO", $arFilter))
450 {
451 $val = $arFilter["DATE_DEDUCTED_TO"];
452 unset($arFilter["DATE_DEDUCTED_TO"]);
453 $arFilter["<=DATE_DEDUCTED"] = $val;
454 }
455 if (array_key_exists("DATE_MARKED_FROM", $arFilter))
456 {
457 $val = $arFilter["DATE_MARKED_FROM"];
458 unset($arFilter["DATE_MARKED_FROM"]);
459 $arFilter[">=DATE_MARKED"] = $val;
460 }
461 if (array_key_exists("DATE_MARKED_TO", $arFilter))
462 {
463 $val = $arFilter["DATE_MARKED_TO"];
464 unset($arFilter["DATE_MARKED_TO"]);
465 $arFilter["<=DATE_MARKED"] = $val;
466 }
467 if (array_key_exists("DATE_PAY_BEFORE_FROM", $arFilter))
468 {
469 $val = $arFilter["DATE_PAY_BEFORE_FROM"];
470 unset($arFilter["DATE_PAY_BEFORE_FROM"]);
471 $arFilter[">=DATE_PAY_BEFORE"] = $val;
472 }
473 if (array_key_exists("DATE_PAY_BEFORE_TO", $arFilter))
474 {
475 $val = $arFilter["DATE_PAY_BEFORE_TO"];
476 unset($arFilter["DATE_PAY_BEFORE_TO"]);
477 $arFilter["<=DATE_PAY_BEFORE"] = $val;
478 }
479 if (array_key_exists("DELIVERY_REQUEST_SENT", $arFilter))
480 {
481 if($arFilter["DELIVERY_REQUEST_SENT"] == "Y")
482 $arFilter["!DELIVERY_DATE_REQUEST"] = "";
483 else
484 $arFilter["+DELIVERY_DATE_REQUEST"] = "";
485
486 unset($arFilter["DELIVERY_REQUEST_SENT"]);
487 }
488
489 $callback = false;
490 if (array_key_exists("CUSTOM_SUBQUERY", $arFilter))
491 {
492 $callback = $arFilter["CUSTOM_SUBQUERY"];
493 unset($arFilter["CUSTOM_SUBQUERY"]);
494 }
495
496 if ($isOrderConverted != 'N')
497 {
498 $result = Sale\Compatible\OrderCompatibility::getList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields, $callback);
499 if ($result instanceof Sale\Compatible\CDBResult)
500 $result->addFetchAdapter(new Sale\Compatible\OrderFetchAdapter());
501 return $result;
502 }
503
504 if (empty($arSelectFields))
505 {
506 $arSelectFields = array(
507 "ID",
508 "LID",
509 "PERSON_TYPE_ID",
510 "PAYED",
511 "DATE_PAYED",
512 "EMP_PAYED_ID",
513 "CANCELED",
514 "DATE_CANCELED",
515 "EMP_CANCELED_ID",
516 "REASON_CANCELED",
517 "MARKED",
518 "DATE_MARKED",
519 "EMP_MARKED_ID",
520 "REASON_MARKED",
521 "STATUS_ID",
522 "DATE_STATUS",
523 "PAY_VOUCHER_NUM",
524 "PAY_VOUCHER_DATE",
525 "EMP_STATUS_ID",
526 "PRICE_DELIVERY",
527 "ALLOW_DELIVERY",
528 "DATE_ALLOW_DELIVERY",
529 "EMP_ALLOW_DELIVERY_ID",
530 "DEDUCTED",
531 "DATE_DEDUCTED",
532 "EMP_DEDUCTED_ID",
533 "REASON_UNDO_DEDUCTED",
534 "RESERVED",
535 "PRICE",
536 "CURRENCY",
537 "DISCOUNT_VALUE",
538 "SUM_PAID",
539 "USER_ID",
540 "PAY_SYSTEM_ID",
541 "DELIVERY_ID",
542 "DATE_INSERT",
543 "DATE_INSERT_FORMAT",
544 "DATE_UPDATE",
545 "USER_DESCRIPTION",
546 "ADDITIONAL_INFO",
547 "PS_STATUS",
548 "PS_STATUS_CODE",
549 "PS_STATUS_DESCRIPTION",
550 "PS_STATUS_MESSAGE",
551 "PS_SUM",
552 "PS_CURRENCY",
553 "PS_RESPONSE_DATE",
554 "COMMENTS",
555 "TAX_VALUE",
556 "STAT_GID",
557 "RECURRING_ID",
558 "RECOUNT_FLAG",
559 "USER_LOGIN",
560 "USER_NAME",
561 "USER_LAST_NAME",
562 "USER_EMAIL",
563 "DELIVERY_DOC_NUM",
564 "DELIVERY_DOC_DATE",
565 "DELIVERY_DATE_REQUEST",
566 "STORE_ID",
567 "ORDER_TOPIC",
568 "RESPONSIBLE_ID",
569 "RESPONSIBLE_LOGIN",
570 "RESPONSIBLE_NAME",
571 "RESPONSIBLE_LAST_NAME",
572 "RESPONSIBLE_SECOND_NAME",
573 "RESPONSIBLE_EMAIL",
574 "RESPONSIBLE_WORK_POSITION",
575 "RESPONSIBLE_PERSONAL_PHOTO",
576 "RESPONSIBLE_GROUP_ID",
577 "DATE_PAY_BEFORE",
578 "DATE_BILL",
579 "ACCOUNT_NUMBER",
580 "TRACKING_NUMBER",
581 "XML_ID"
582 );
583 }
584 elseif (in_array("*", $arSelectFields))
585 {
586 $arSelectFields = array(
587 "ID",
588 "LID",
589 "PERSON_TYPE_ID",
590 "PAYED",
591 "DATE_PAYED",
592 "EMP_PAYED_ID",
593 "CANCELED",
594 "DATE_CANCELED",
595 "EMP_CANCELED_ID",
596 "REASON_CANCELED",
597 "MARKED",
598 "DATE_MARKED",
599 "EMP_MARKED_ID",
600 "REASON_MARKED",
601 "STATUS_ID",
602 "DATE_STATUS",
603 "PAY_VOUCHER_NUM",
604 "PAY_VOUCHER_DATE",
605 "EMP_STATUS_ID",
606 "PRICE_DELIVERY",
607 "ALLOW_DELIVERY",
608 "DATE_ALLOW_DELIVERY",
609 "EMP_ALLOW_DELIVERY_ID",
610 "DEDUCTED",
611 "DATE_DEDUCTED",
612 "EMP_DEDUCTED_ID",
613 "REASON_UNDO_DEDUCTED",
614 "RESERVED",
615 "PRICE",
616 "CURRENCY",
617 "DISCOUNT_VALUE",
618 "SUM_PAID",
619 "USER_ID",
620 "PAY_SYSTEM_ID",
621 "DELIVERY_ID",
622 "DATE_INSERT",
623 "DATE_INSERT_FORMAT",
624 "DATE_UPDATE",
625 "USER_DESCRIPTION",
626 "ADDITIONAL_INFO",
627 "PS_STATUS",
628 "PS_STATUS_CODE",
629 "PS_STATUS_DESCRIPTION",
630 "PS_STATUS_MESSAGE",
631 "PS_SUM",
632 "PS_CURRENCY",
633 "PS_RESPONSE_DATE",
634 "COMMENTS",
635 "TAX_VALUE",
636 "STAT_GID",
637 "RECURRING_ID",
638 "RECOUNT_FLAG",
639 "USER_LOGIN",
640 "USER_NAME",
641 "USER_LAST_NAME",
642 "USER_EMAIL",
643 "DELIVERY_DOC_NUM",
644 "DELIVERY_DOC_DATE",
645 "DELIVERY_DATE_REQUEST",
646 "STORE_ID",
647 "ORDER_TOPIC",
648 "RESPONSIBLE_ID",
649 "RESPONSIBLE_LOGIN",
650 "RESPONSIBLE_NAME",
651 "RESPONSIBLE_LAST_NAME",
652 "RESPONSIBLE_SECOND_NAME",
653 "RESPONSIBLE_EMAIL",
654 "RESPONSIBLE_WORK_POSITION",
655 "RESPONSIBLE_PERSONAL_PHOTO",
656 "RESPONSIBLE_GROUP_ID",
657 "DATE_PAY_BEFORE",
658 "DATE_BILL",
659 "ACCOUNT_NUMBER",
660 "TRACKING_NUMBER",
661 "XML_ID"
662 );
663 }
664
666 $helper = $connection->getSqlHelper();
667
668 $maxLock = (int)COption::GetOptionString("sale", "MAX_LOCK_TIME");
669 if(is_object($GLOBALS["USER"]))
670 $userID = intval($GLOBALS["USER"]->GetID());
671 else
672 $userID = 0;
673
674 // FIELDS -->
676 "ID" => array("FIELD" => "O.ID", "TYPE" => "int"),
677 "LID" => array("FIELD" => "O.LID", "TYPE" => "string"),
678 "PERSON_TYPE_ID" => array("FIELD" => "O.PERSON_TYPE_ID", "TYPE" => "int"),
679 "PAYED" => array("FIELD" => "O.PAYED", "TYPE" => "char"),
680 "DATE_PAYED" => array("FIELD" => "O.DATE_PAYED", "TYPE" => "datetime"),
681 "EMP_PAYED_ID" => array("FIELD" => "O.EMP_PAYED_ID", "TYPE" => "int"),
682 "CANCELED" => array("FIELD" => "O.CANCELED", "TYPE" => "char"),
683 "DATE_CANCELED" => array("FIELD" => "O.DATE_CANCELED", "TYPE" => "datetime"),
684 "EMP_CANCELED_ID" => array("FIELD" => "O.EMP_CANCELED_ID", "TYPE" => "int"),
685 "REASON_CANCELED" => array("FIELD" => "O.REASON_CANCELED", "TYPE" => "string"),
686 "STATUS_ID" => array("FIELD" => "O.STATUS_ID", "TYPE" => "string"),
687 "DATE_STATUS" => array("FIELD" => "O.DATE_STATUS", "TYPE" => "datetime"),
688 "PAY_VOUCHER_NUM" => array("FIELD" => "O.PAY_VOUCHER_NUM", "TYPE" => "string"),
689 "PAY_VOUCHER_DATE" => array("FIELD" => "O.PAY_VOUCHER_DATE", "TYPE" => "date"),
690 "EMP_STATUS_ID" => array("FIELD" => "O.EMP_STATUS_ID", "TYPE" => "int"),
691 "PRICE_DELIVERY" => array("FIELD" => "O.PRICE_DELIVERY", "TYPE" => "double"),
692 "ALLOW_DELIVERY" => array("FIELD" => "O.ALLOW_DELIVERY", "TYPE" => "char"),
693 "DATE_ALLOW_DELIVERY" => array("FIELD" => "O.DATE_ALLOW_DELIVERY", "TYPE" => "datetime"),
694 "EMP_ALLOW_DELIVERY_ID" => array("FIELD" => "O.EMP_ALLOW_DELIVERY_ID", "TYPE" => "int"),
695 "DEDUCTED" => array("FIELD" => "O.DEDUCTED", "TYPE" => "char"),
696 "DATE_DEDUCTED" => array("FIELD" => "O.DATE_DEDUCTED", "TYPE" => "datetime"),
697 "EMP_DEDUCTED_ID" => array("FIELD" => "O.EMP_DEDUCTED_ID", "TYPE" => "int"),
698 "REASON_UNDO_DEDUCTED" => array("FIELD" => "O.REASON_UNDO_DEDUCTED", "TYPE" => "string"),
699 "RESERVED" => array("FIELD" => "O.RESERVED", "TYPE" => "char"),
700 "MARKED" => array("FIELD" => "O.MARKED", "TYPE" => "char"),
701 "DATE_MARKED" => array("FIELD" => "O.DATE_MARKED", "TYPE" => "datetime"),
702 "EMP_MARKED_ID" => array("FIELD" => "O.EMP_MARKED_ID", "TYPE" => "int"),
703 "REASON_MARKED" => array("FIELD" => "O.REASON_MARKED", "TYPE" => "string"),
704 "PRICE" => array("FIELD" => "O.PRICE", "TYPE" => "double"),
705 "CURRENCY" => array("FIELD" => "O.CURRENCY", "TYPE" => "string"),
706 "DISCOUNT_VALUE" => array("FIELD" => "O.DISCOUNT_VALUE", "TYPE" => "double"),
707 "SUM_PAID" => array("FIELD" => "O.SUM_PAID", "TYPE" => "double"),
708 "USER_ID" => array("FIELD" => "O.USER_ID", "TYPE" => "int"),
709 "PAY_SYSTEM_ID" => array("FIELD" => "O.PAY_SYSTEM_ID", "TYPE" => "int"),
710 "DELIVERY_ID" => array("FIELD" => "O.DELIVERY_ID", "TYPE" => "string"),
711 "DATE_INSERT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"),
712 "DATE_INSERT_FORMAT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"),
713 "DATE_UPDATE" => array("FIELD" => "O.DATE_UPDATE", "TYPE" => "datetime"),
714 "USER_DESCRIPTION" => array("FIELD" => "O.USER_DESCRIPTION", "TYPE" => "string"),
715 "ADDITIONAL_INFO" => array("FIELD" => "O.ADDITIONAL_INFO", "TYPE" => "string"),
716 "PS_STATUS" => array("FIELD" => "O.PS_STATUS", "TYPE" => "char"),
717 "PS_STATUS_CODE" => array("FIELD" => "O.PS_STATUS_CODE", "TYPE" => "string"),
718 "PS_STATUS_DESCRIPTION" => array("FIELD" => "O.PS_STATUS_DESCRIPTION", "TYPE" => "string"),
719 "PS_STATUS_MESSAGE" => array("FIELD" => "O.PS_STATUS_MESSAGE", "TYPE" => "string"),
720 "PS_SUM" => array("FIELD" => "O.PS_SUM", "TYPE" => "double"),
721 "PS_CURRENCY" => array("FIELD" => "O.PS_CURRENCY", "TYPE" => "string"),
722 "PS_RESPONSE_DATE" => array("FIELD" => "O.PS_RESPONSE_DATE", "TYPE" => "datetime"),
723 "COMMENTS" => array("FIELD" => "O.COMMENTS", "TYPE" => "string"),
724 "TAX_VALUE" => array("FIELD" => "O.TAX_VALUE", "TYPE" => "double"),
725 "STAT_GID" => array("FIELD" => "O.STAT_GID", "TYPE" => "string"),
726 "RECURRING_ID" => array("FIELD" => "O.RECURRING_ID", "TYPE" => "int"),
727 "RECOUNT_FLAG" => array("FIELD" => "O.RECOUNT_FLAG", "TYPE" => "char"),
728 "AFFILIATE_ID" => array("FIELD" => "O.AFFILIATE_ID", "TYPE" => "int"),
729 "LOCKED_BY" => array("FIELD" => "O.LOCKED_BY", "TYPE" => "int"),
730
731 'LOCK_STATUS' => [
732 'FIELD' => "
733 case
734 when DATE_LOCK is null then 'green'
735 when " . $helper->addSecondsToDateTime($maxLock * 60, 'DATE_LOCK') . " < " . $helper->getCurrentDateTimeFunction() . " then 'yellow'
736 when LOCKED_BY = " . $userID . " then 'yellow'
737 else 'red'
738 end
739 ",
740 'TYPE' => 'string',
741 ],
742
743 'LOCK_USER_NAME' => [
744 'FIELD' => $helper->getConcatFunction(
745 "'('",
746 'UL.LOGIN',
747 "') '",
748 'UL.NAME',
749 "' '",
750 'UL.LAST_NAME'
751 ),
752 'FROM' => 'LEFT JOIN b_user UL ON (O.LOCKED_BY = UL.ID)',
753 'TYPE' => 'string',
754 ],
755
756 "DELIVERY_DOC_NUM" => array("FIELD" => "O.DELIVERY_DOC_NUM", "TYPE" => "string"),
757 "DELIVERY_DOC_DATE" => array("FIELD" => "O.DELIVERY_DOC_DATE", "TYPE" => "date"),
758 "UPDATED_1C" => array("FIELD" => "O.UPDATED_1C", "TYPE" => "string"),
759 "STORE_ID" => array("FIELD" => "O.STORE_ID", "TYPE" => "int"),
760 "BY_RECOMMENDATION" => array("FIELD" => "(SELECT (CASE WHEN MAX(BR.RECOMMENDATION) IS NULL OR MAX(BR.RECOMMENDATION) = '' THEN 'N' ELSE 'Y' END) FROM b_sale_basket BR WHERE BR.ORDER_ID=O.ID GROUP BY BR.ORDER_ID)", "TYPE" => "char"),
761
762 "ORDER_TOPIC" => array("FIELD" => "O.ORDER_TOPIC", "TYPE" => "string"),
763 "RESPONSIBLE_ID" => array("FIELD" => "O.RESPONSIBLE_ID", "TYPE" => "int"),
764 "DATE_PAY_BEFORE" => array("FIELD" => "O.DATE_PAY_BEFORE", "TYPE" => "date"),
765 "DATE_BILL" => array("FIELD" => "O.DATE_BILL", "TYPE" => "date"),
766 "ACCOUNT_NUMBER" => array("FIELD" => "O.ACCOUNT_NUMBER", "TYPE" => "string"),
767 "TRACKING_NUMBER" => array("FIELD" => "O.TRACKING_NUMBER", "TYPE" => "string"),
768 "XML_ID" => array("FIELD" => "O.XML_ID", "TYPE" => "string"),
769 "ID_1C" => array("FIELD" => "O.ID_1C", "TYPE" => "string"),
770 "VERSION_1C" => array("FIELD" => "O.VERSION_1C", "TYPE" => "string"),
771 "VERSION" => array("FIELD" => "O.VERSION", "TYPE" => "int"),
772 "EXTERNAL_ORDER" => array("FIELD" => "O.EXTERNAL_ORDER", "TYPE" => "string"),
773
774 "NAME_SEARCH" => array("FIELD" => "U.NAME, U.LAST_NAME, U.SECOND_NAME, U.EMAIL, U.LOGIN, U.ID", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
775 "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
776 "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
777 "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
778 "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
779 "USER_GROUP_ID" => array("FIELD" => "UG.GROUP_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_user_group UG ON (UG.USER_ID = O.USER_ID)"),
780
781 "RESPONSIBLE_LOGIN" => array("FIELD" => "UR.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
782 "RESPONSIBLE_NAME" => array("FIELD" => "UR.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
783 "RESPONSIBLE_LAST_NAME" => array("FIELD" => "UR.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
784 "RESPONSIBLE_SECOND_NAME" => array("FIELD" => "UR.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
785 "RESPONSIBLE_EMAIL" => array("FIELD" => "UR.EMAIL", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
786 "RESPONSIBLE_WORK_POSITION" => array("FIELD" => "UR.WORK_POSITION", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
787 "RESPONSIBLE_PERSONAL_PHOTO" => array("FIELD" => "UR.PERSONAL_PHOTO", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"),
788
789 "BUYER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"),
790 "BASKET_ID" => array("FIELD" => "B.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
791 "BASKET_PRODUCT_ID" => array("FIELD" => "B.PRODUCT_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
792 "BASKET_PRODUCT_XML_ID" => array("FIELD" => "B.PRODUCT_XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
793 "BASKET_MODULE" => array("FIELD" => "B.MODULE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
794 "BASKET_NAME" => array("FIELD" => "B.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
795 "BASKET_QUANTITY" => array("FIELD" => "B.QUANTITY", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
796 "BASKET_PRICE" => array("FIELD" => "B.PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
797 "BASKET_CURRENCY" => array("FIELD" => "B.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
798 "BASKET_DISCOUNT_PRICE" => array("FIELD" => "B.DISCOUNT_PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
799 "BASKET_DISCOUNT_NAME" => array("FIELD" => "B.DISCOUNT_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
800 "BASKET_DISCOUNT_VALUE" => array("FIELD" => "B.DISCOUNT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
801 "BASKET_DISCOUNT_COUPON" => array("FIELD" => "B.DISCOUNT_COUPON", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
802 "BASKET_VAT_RATE" => array("FIELD" => "B.VAT_RATE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
803 "BASKET_RECOMMENDATION" => array("FIELD" => "B.RECOMMENDATION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
804 "BASKET_PRICE_TOTAL" => array("FIELD" => "(B.PRICE * B.QUANTITY)", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"),
805
806 "PROPERTY_ID" => array("FIELD" => "SP.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
807 "PROPERTY_ORDER_PROPS_ID" => array("FIELD" => "SP.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
808 "PROPERTY_NAME" => array("FIELD" => "SP.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
809 "PROPERTY_VALUE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
810 "PROPERTY_CODE" => array("FIELD" => "SP.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
811 "PROPERTY_VAL_BY_CODE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"),
812
813 "DELIVERY_DATE_REQUEST" => array("FIELD" => "OD.DATE_REQUEST", "TYPE" => "datetime", "FROM" => "LEFT JOIN b_sale_order_delivery OD ON (O.ID = OD.ORDER_ID)")
814 );
815 require_once $_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/sale/general/status.php';
816 CSaleStatusAdapter::addFieldsTo($arFields, 'O.STATUS_ID', 'STATUS_PERMS_');
817 // <-- FIELDS
818
819 $arPropIDsTmp = array();
820 foreach ($arOrder as $key => $value)
822
823 foreach ($arFilter as $key => $value)
824 {
826 $key = $arKeyTmp["FIELD"];
827
829 }
830
831 if (is_array($arGroupBy))
832 foreach ($arGroupBy as $key => $value)
834
835 foreach ($arSelectFields as $key => $value)
837
838 $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql, $callback, $arOptions);
839
840 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
841
842 $r = $obUserFieldsSql->GetFilter();
843 $strSqlUFFilter = '';
844 if($r <> '')
845 $strSqlUFFilter = " (".$r.") ";
846
847 if (is_array($arGroupBy) && count($arGroupBy)==0)
848 {
849 $strSql =
850 "SELECT ".$arSqls["SELECT"]." ".
851 $obUserFieldsSql->GetSelect()." ".
852 "FROM b_sale_order O ".
853 " ".$arSqls["FROM"]." ".
854 $obUserFieldsSql->GetJoin("O.ID")." ";
855
856 if ($arSqls["WHERE"] <> '')
857 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
858 if ($arSqls["WHERE"] <> '' && $strSqlUFFilter <> '')
859 $strSql .= " AND ".$strSqlUFFilter." ";
860 elseif ($arSqls["WHERE"] == '' && $strSqlUFFilter <> '')
861 $strSql .= " WHERE ".$strSqlUFFilter." ";
862
863 if ($arSqls["GROUPBY"] <> '')
864 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
865
866 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
867
868 $dbRes = $DB->Query($strSql);
869 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
870
871 if ($arRes = $dbRes->Fetch())
872 return $arRes["CNT"];
873 else
874 return False;
875 }
876
877 $strSql =
878 "SELECT ".$arSqls["SELECT"]." ".
879 $obUserFieldsSql->GetSelect()." ".
880 "FROM b_sale_order O ".
881 " ".$arSqls["FROM"]." ".
882 $obUserFieldsSql->GetJoin("O.ID")." ";
883
884 if ($arSqls["WHERE"] <> '')
885 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
886 if ($arSqls["WHERE"] <> '' && $strSqlUFFilter <> '')
887 $strSql .= " AND ".$strSqlUFFilter." ";
888 elseif ($arSqls["WHERE"] == '' && $strSqlUFFilter <> '')
889 $strSql .= " WHERE ".$strSqlUFFilter." ";
890
891 if ($arSqls["GROUPBY"] <> '')
892 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
893
894 if ($arSqls["ORDERBY"] <> '')
895 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
896
897 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"])<=0)
898 {
899 $strSql_tmp =
900 "SELECT COUNT('x') as CNT ".
901 "FROM b_sale_order O ".
902 " ".$arSqls["FROM"]." ".
903 $obUserFieldsSql->GetJoin("O.ID")." ";
904
905 if ($arSqls["WHERE"] <> '')
906 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
907 if ($arSqls["WHERE"] <> '' && $strSqlUFFilter <> '')
908 $strSql_tmp .= " AND ".$strSqlUFFilter." ";
909 elseif ($arSqls["WHERE"] == '' && $strSqlUFFilter <> '')
910 $strSql_tmp .= " WHERE ".$strSqlUFFilter." ";
911
912 if ($arSqls["GROUPBY"] <> '')
913 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
914
915 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
916
917 $dbRes = $DB->Query($strSql_tmp);
918 $cnt = 0;
919 if ($arSqls["GROUPBY"] == '')
920 {
921 if ($arRes = $dbRes->Fetch())
922 $cnt = $arRes["CNT"];
923 }
924 else
925 {
926 $cnt = $dbRes->SelectedRowsCount();
927 }
928
929 $dbRes = new CDBResult();
930
931 //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
932
933 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
934 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
935 }
936 else
937 {
938 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"])>0)
939 $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]);
940
941 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
942
943 $dbRes = $DB->Query($strSql);
944 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
945 }
946
947 return $dbRes;
948 }
949
950 /*
951 * Change order to add stories
952 *
953 * @param array $arOrderOld old order fields
954 * @return bool true
955 */
956 public static function AddOrderHistory($OldFields, $NewFields)
957 {
958 global $DB, $USER;
959
960 foreach(GetModuleEvents("sale", "OnBeforeOrderAddHistory", true) as $arEvent)
961 if (ExecuteModuleEventEx($arEvent, Array(&$NewFields))===false)
962 return false;
963
964 if ($OldFields["ID"] <= 0)
965 return false;
966
967 if (isset($NewFields["ID"]))
968 unset($NewFields["ID"]);
969
970 $bChange = false;
971 $arInsert = array("H_USER_ID" => $USER->GetID(), "H_ORDER_ID" => $OldFields["ID"], "H_CURRENCY" => $OldFields["CURRENCY"]);
972
973 $arDeleteFields = array(
974 "ID",
975 "EMP_CANCELED_ID",
976 "EMP_MARKED_ID",
977 "EMP_DEDUCTED_ID",
978 "EMP_STATUS_ID",
979 "EMP_ALLOW_DELIVERY_ID",
980 "LOCKED_BY",
981 "DATE_LOCK",
982 "UPDATED_1C",
983 "DATE_INSERT",
984 "DATE_UPDATE",
985 "USER_DESCRIPTION",
986 "ADDITIONAL_INFO",
987 "COMMENTS",
988 "RECOUNT_FLAG",
989 "RECURRING_ID"
990 );
991
992 foreach ($NewFields as $key => $val)
993 {
994 if ($key == "PAY_VOUCHER_DATE" || $key == "DELIVERY_DOC_DATE")
995 {
996 $valOld = $val;
997 $val = CDatabase::FormatDate(trim($val), false, "Y-M-D");
998 }
999
1000 if (array_key_exists($key, $OldFields) && $val <> '' && $val != $OldFields[$key] && !in_array($key, $arDeleteFields))
1001 {
1002 if ($key == "PAY_VOUCHER_DATE" || $key == "DELIVERY_DOC_DATE")
1003 $val = $valOld;
1004
1005 $bChange = true;
1006 $arInsert[$key] = $val;
1007 }
1008 }
1009
1010 if ($bChange)
1011 {
1012 $arPrepare = $DB->PrepareInsert("b_sale_order_history", $arInsert);
1013 $arPrepare[0] .= ", H_DATE_INSERT";
1014 $arPrepare[1] .= ", ".$DB->GetNowFunction();
1015
1016 $strSql = "INSERT INTO b_sale_order_history (".$arPrepare[0].") "."VALUES (".$arPrepare[1].");";
1017 $DB->Query($strSql);
1018 }
1019
1020 foreach(GetModuleEvents("sale", "OnAfterOrderAddHistory", true) as $arEvent)
1021 ExecuteModuleEventEx($arEvent, Array($NewFields));
1022
1023 return true;
1024 }
1025}
$connection
Определения actionsdefinitions.php:38
global $APPLICATION
Определения include.php:80
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static getConnection($name="")
Определения application.php:638
static get($moduleId, $name, $default="", $siteId=false)
Определения option.php:30
Определения date.php:9
static backRawField($entityName, array $fields, $separator='=')
Определения entitycompatibility.php:861
static getList($sort=array(), $filter=array(), $group=null, $nav=array(), $select=array(), $callback=false)
Определения entitycompatibility.php:106
static add(array $fields)
Определения ordercompatibility.php:1631
static isLocationProMigrated()
Определения location.php:58
static AddRecordsByFields($orderId, array $arOldFields, array $arNewFields, $arDeleteFields=array(), $entityName="", $entityId=null, $entity=null, array $data=array())
Определения order_change.php:161
static AddRecord($orderId, $type, $data=array(), $entityName=null, $entityId=null)
Определения order_change.php:126
Определения order.php:15
static GetFilterOperation($key)
Определения order.php:1011
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false, $callback=false, $arOptions=array())
Определения order.php:1070
static CheckFields($ACTION, &$arFields, $ID=0)
Определения order.php:697
static getLocationPropertyInfo()
Определения order.php:3247
Определения event.php:13
Определения order.php:9
static Add($arFields)
Определения order.php:10
static AddOrderHistory($OldFields, $NewFields)
Определения order.php:956
static Update($ID, $arFields, $bDateUpdate=true)
Определения order.php:140
static GetList($arOrder=array("ID"=>"DESC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arOptions=array())
Определения order.php:339
static PrepareGetListArray($key, &$arFields, &$arPropIDsTmp)
Определения order.php:281
static addFieldsTo(array &$fields, $statusIdName, $prefix)
Определения status.php:590
Определения usertypesql.php:4
SetEntity($entity_id, $ID)
Определения usertypesql.php:16
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
global $USER_FIELD_MANAGER
Определения attempt.php:6
$result
Определения get_property_values.php:14
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$arOptions
Определения structure.php:223
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
$GLOBALS['____1690880296']
Определения license.php:1
$event
Определения prolog_after.php:141
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
</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
const CACHED_b_sale_order
Определения include.php:33
$val
Определения options.php:1793
$arRes
Определения options.php:104
$error
Определения subscription_card_product.php:20
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168