6require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/sale/general/order.php");
20 if (mb_substr(
$key, 0, 1) ==
"=")
22 $arFields1[mb_substr(
$key, 1)] = $value;
29 $arFields1[
'TAX_LIST'] =
$arFields[
'TAX_LIST'];
34 $arFields1[
'ORDER_PROP'] =
$arFields[
'ORDER_PROP'];
39 $arFields1[
'DELIVERY_PRICE'] =
$arFields[
'DELIVERY_PRICE'];
42 if (array_key_exists(
'ONLY_FULL_PAY_FROM_ACCOUNT',
$arFields))
44 $arFields1[
'ONLY_FULL_PAY_FROM_ACCOUNT'] =
$arFields[
'ONLY_FULL_PAY_FROM_ACCOUNT'];
57 if ($isOrderConverted !=
'N')
59 if (!empty($arFields1))
81 $arInsert =
$DB->PrepareInsert(
"b_sale_order",
$arFields);
83 if (!array_key_exists(
"DATE_STATUS",
$arFields))
85 $arInsert[0] .=
", DATE_STATUS";
86 $arInsert[1] .=
", ".$DB->GetNowFunction();
88 if (!array_key_exists(
"DATE_INSERT",
$arFields))
90 $arInsert[0] .=
", DATE_INSERT";
91 $arInsert[1] .=
", ".$DB->GetNowFunction();
93 if (!array_key_exists(
"DATE_UPDATE",
$arFields))
95 $arInsert[0] .=
", DATE_UPDATE";
96 $arInsert[1] .=
", ".$DB->GetNowFunction();
99 foreach ($arFields1 as
$key => $value)
101 if ($arInsert[0] <>
'')
103 $arInsert[0] .=
", ";
104 $arInsert[1] .=
", ";
106 $arInsert[0] .=
$key;
107 $arInsert[1] .= $value;
111 "INSERT INTO b_sale_order(".$arInsert[0].
") ".
112 "VALUES(".$arInsert[1].
")";
116 $ID = intval(
$DB->LastID());
117 CSaleOrder::SetAccountNumber(
$ID);
125 if ($isOrderConverted ==
'N')
131 if(defined(
"CACHED_b_sale_order"))
148 $arFields1 =
array();
151 if (mb_substr(
$key, 0, 1) ==
"=")
153 $arFields1[mb_substr(
$key, 1)] = $value;
161 foreach(
GetModuleEvents(
"sale",
"OnBeforeOrderUpdate",
true) as $arEvent)
166 if ($isOrderConverted !=
'N')
168 if (!empty($arFields1))
174 $result = Sale\Compatible\OrderCompatibility::update(
$ID, array_merge(
$arFields, $arFields1), $bDateUpdate);
187 $arOrderOldFields =
array();
189 $resultFields =
$result->getData();
190 if (!empty($resultFields[
'OLD_FIELDS']) && is_array($resultFields[
'OLD_FIELDS']))
192 $arOrderOldFields = $resultFields[
'OLD_FIELDS'];
201 $strUpdate =
$DB->PrepareUpdate(
"b_sale_order",
$arFields);
203 foreach ($arFields1 as
$key => $value)
205 if ($strUpdate <>
'') $strUpdate .=
", ";
206 $strUpdate .=
$key.
"=".$value.
" ";
210 $arOrderOldFields = CSaleOrder::GetByID(
$ID);
213 "UPDATE b_sale_order SET ".
216 $strSql .=
", DATE_UPDATE = ".$DB->GetNowFunction().
" ";
217 $strSql .=
"WHERE ID = ".$ID.
" ";
219 $updated =
$DB->Query($strSql,
true);
231 unset(
$GLOBALS[
"SALE_ORDER"][
"SALE_ORDER_CACHE_".
$ID]);
238 foreach(
GetModuleEvents(
"sale",
"OnTrackingNumberChange",
true) as $arEvent)
241 if (
$arFields[
"TRACKING_NUMBER"] <>
'' && $arOrderOldFields[
"TRACKING_NUMBER"] !=
$arFields[
"TRACKING_NUMBER"])
243 $accountNumber = (isset(
$arFields[
"ACCOUNT_NUMBER"])) ?
$arFields[
"ACCOUNT_NUMBER"] : $arOrderOldFields[
"ACCOUNT_NUMBER"];
248 $dbUser = CUser::GetByID(
$userId);
249 if ($arUser = $dbUser->Fetch())
251 if ($payerName ==
'')
252 $payerName = $arUser[
"NAME"].(($arUser[
"NAME"] ==
'' || $arUser[
"LAST_NAME"] ==
'') ?
"" :
" ").$arUser[
"LAST_NAME"];
253 if ($payerEMail ==
'')
254 $payerEMail = $arUser[
"EMAIL"];
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'])
268 $event->Send(
"SALE_ORDER_TRACKING_NUMBER", $arOrderOldFields[
"LID"], $arEmailFields,
"N");
272 if(defined(
"CACHED_b_sale_order") && $bDateUpdate &&
$arFields[
"UPDATED_1C"] !=
"Y")
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_"))));
297 if ($propIDTmp <>
'' || $propIDTmp > 0)
299 if (!in_array($propIDTmp, $arPropIDsTmp))
301 $arPropIDsTmp[] = $propIDTmp;
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)");
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)");
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)");
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)");
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)");
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)");
343 if (!is_array($arOrder))
344 $arOrder =
array(
'ID' =>
'DESC');
347 if (!is_array($arSelectFields))
348 $arSelectFields =
array();
353 $obUserFieldsSql->
SetEntity(
"ORDER",
"O.ID");
354 $obUserFieldsSql->SetSelect($arSelectFields);
356 $obUserFieldsSql->SetOrder($arOrder);
358 if (array_key_exists(
"DATE_FROM",
$arFilter))
364 if (array_key_exists(
"DATE_TO",
$arFilter))
370 if (array_key_exists(
"DATE_INSERT_FROM",
$arFilter))
376 if (array_key_exists(
"DATE_INSERT_TO",
$arFilter))
382 if (array_key_exists(
"DATE_UPDATE_FROM",
$arFilter))
388 if (array_key_exists(
"DATE_UPDATE_TO",
$arFilter))
395 if (array_key_exists(
"DATE_STATUS_FROM",
$arFilter))
401 if (array_key_exists(
"DATE_STATUS_TO",
$arFilter))
407 if (array_key_exists(
"DATE_PAYED_FROM",
$arFilter))
413 if (array_key_exists(
"DATE_PAYED_TO",
$arFilter))
419 if (array_key_exists(
"DATE_ALLOW_DELIVERY_FROM",
$arFilter))
422 unset(
$arFilter[
"DATE_ALLOW_DELIVERY_FROM"]);
425 if (array_key_exists(
"DATE_ALLOW_DELIVERY_TO",
$arFilter))
428 unset(
$arFilter[
"DATE_ALLOW_DELIVERY_TO"]);
431 if (array_key_exists(
"DATE_CANCELED_FROM",
$arFilter))
437 if (array_key_exists(
"DATE_CANCELED_TO",
$arFilter))
443 if (array_key_exists(
"DATE_DEDUCTED_FROM",
$arFilter))
449 if (array_key_exists(
"DATE_DEDUCTED_TO",
$arFilter))
455 if (array_key_exists(
"DATE_MARKED_FROM",
$arFilter))
461 if (array_key_exists(
"DATE_MARKED_TO",
$arFilter))
467 if (array_key_exists(
"DATE_PAY_BEFORE_FROM",
$arFilter))
470 unset(
$arFilter[
"DATE_PAY_BEFORE_FROM"]);
473 if (array_key_exists(
"DATE_PAY_BEFORE_TO",
$arFilter))
479 if (array_key_exists(
"DELIVERY_REQUEST_SENT",
$arFilter))
481 if(
$arFilter[
"DELIVERY_REQUEST_SENT"] ==
"Y")
482 $arFilter[
"!DELIVERY_DATE_REQUEST"] =
"";
484 $arFilter[
"+DELIVERY_DATE_REQUEST"] =
"";
486 unset(
$arFilter[
"DELIVERY_REQUEST_SENT"]);
490 if (array_key_exists(
"CUSTOM_SUBQUERY",
$arFilter))
492 $callback =
$arFilter[
"CUSTOM_SUBQUERY"];
496 if ($isOrderConverted !=
'N')
504 if (empty($arSelectFields))
506 $arSelectFields =
array(
528 "DATE_ALLOW_DELIVERY",
529 "EMP_ALLOW_DELIVERY_ID",
533 "REASON_UNDO_DEDUCTED",
543 "DATE_INSERT_FORMAT",
549 "PS_STATUS_DESCRIPTION",
565 "DELIVERY_DATE_REQUEST",
571 "RESPONSIBLE_LAST_NAME",
572 "RESPONSIBLE_SECOND_NAME",
574 "RESPONSIBLE_WORK_POSITION",
575 "RESPONSIBLE_PERSONAL_PHOTO",
576 "RESPONSIBLE_GROUP_ID",
584 elseif (in_array(
"*", $arSelectFields))
586 $arSelectFields =
array(
608 "DATE_ALLOW_DELIVERY",
609 "EMP_ALLOW_DELIVERY_ID",
613 "REASON_UNDO_DEDUCTED",
623 "DATE_INSERT_FORMAT",
629 "PS_STATUS_DESCRIPTION",
645 "DELIVERY_DATE_REQUEST",
651 "RESPONSIBLE_LAST_NAME",
652 "RESPONSIBLE_SECOND_NAME",
654 "RESPONSIBLE_WORK_POSITION",
655 "RESPONSIBLE_PERSONAL_PHOTO",
656 "RESPONSIBLE_GROUP_ID",
668 $maxLock = (int)COption::GetOptionString(
"sale",
"MAX_LOCK_TIME");
670 $userID = intval(
$GLOBALS[
"USER"]->GetID());
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"),
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'
743 'LOCK_USER_NAME' => [
744 'FIELD' => $helper->getConcatFunction(
752 'FROM' =>
'LEFT JOIN b_user UL ON (O.LOCKED_BY = UL.ID)',
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"),
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"),
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)"),
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)"),
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)"),
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)"),
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)")
815 require_once
$_SERVER[
"DOCUMENT_ROOT"].
'/bitrix/modules/sale/general/status.php';
819 $arPropIDsTmp =
array();
820 foreach ($arOrder as
$key => $value)
826 $key = $arKeyTmp[
"FIELD"];
831 if (is_array($arGroupBy))
832 foreach ($arGroupBy as
$key => $value)
835 foreach ($arSelectFields as
$key => $value)
840 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%",
"", $arSqls[
"SELECT"]);
842 $r = $obUserFieldsSql->GetFilter();
843 $strSqlUFFilter =
'';
845 $strSqlUFFilter =
" (".$r.
") ";
847 if (is_array($arGroupBy) &&
count($arGroupBy)==0)
850 "SELECT ".$arSqls[
"SELECT"].
" ".
851 $obUserFieldsSql->GetSelect().
" ".
852 "FROM b_sale_order O ".
853 " ".$arSqls[
"FROM"].
" ".
854 $obUserFieldsSql->GetJoin(
"O.ID").
" ";
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.
" ";
863 if ($arSqls[
"GROUPBY"] <>
'')
864 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
878 "SELECT ".$arSqls[
"SELECT"].
" ".
879 $obUserFieldsSql->GetSelect().
" ".
880 "FROM b_sale_order O ".
881 " ".$arSqls[
"FROM"].
" ".
882 $obUserFieldsSql->GetJoin(
"O.ID").
" ";
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.
" ";
891 if ($arSqls[
"GROUPBY"] <>
'')
892 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
894 if ($arSqls[
"ORDERBY"] <>
'')
895 $strSql .=
"ORDER BY ".$arSqls[
"ORDERBY"].
" ";
897 if (is_array($arNavStartParams) && intval($arNavStartParams[
"nTopCount"])<=0)
900 "SELECT COUNT('x') as CNT ".
901 "FROM b_sale_order O ".
902 " ".$arSqls[
"FROM"].
" ".
903 $obUserFieldsSql->GetJoin(
"O.ID").
" ";
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.
" ";
912 if ($arSqls[
"GROUPBY"] <>
'')
913 $strSql_tmp .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
919 if ($arSqls[
"GROUPBY"] ==
'')
926 $cnt =
$dbRes->SelectedRowsCount();
934 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
938 if (is_array($arNavStartParams) && intval($arNavStartParams[
"nTopCount"])>0)
939 $strSql .=
"LIMIT ".intval($arNavStartParams[
"nTopCount"]);
960 foreach(
GetModuleEvents(
"sale",
"OnBeforeOrderAddHistory",
true) as $arEvent)
964 if ($OldFields[
"ID"] <= 0)
967 if (isset($NewFields[
"ID"]))
968 unset($NewFields[
"ID"]);
971 $arInsert =
array(
"H_USER_ID" =>
$USER->GetID(),
"H_ORDER_ID" => $OldFields[
"ID"],
"H_CURRENCY" => $OldFields[
"CURRENCY"]);
973 $arDeleteFields =
array(
979 "EMP_ALLOW_DELIVERY_ID",
992 foreach ($NewFields as
$key =>
$val)
994 if (
$key ==
"PAY_VOUCHER_DATE" ||
$key ==
"DELIVERY_DOC_DATE")
997 $val = CDatabase::FormatDate(trim(
$val),
false,
"Y-M-D");
1000 if (array_key_exists(
$key, $OldFields) &&
$val <> '' &&
$val != $OldFields[
$key] && !in_array(
$key, $arDeleteFields))
1002 if (
$key ==
"PAY_VOUCHER_DATE" ||
$key ==
"DELIVERY_DOC_DATE")
1012 $arPrepare =
$DB->PrepareInsert(
"b_sale_order_history", $arInsert);
1013 $arPrepare[0] .=
", H_DATE_INSERT";
1014 $arPrepare[1] .=
", ".$DB->GetNowFunction();
1016 $strSql =
"INSERT INTO b_sale_order_history (".$arPrepare[0].
") ".
"VALUES (".$arPrepare[1].
");";
1017 $DB->Query($strSql);
1020 foreach(
GetModuleEvents(
"sale",
"OnAfterOrderAddHistory",
true) as $arEvent)
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static getConnection($name="")
static get($moduleId, $name, $default="", $siteId=false)
static backRawField($entityName, array $fields, $separator='=')
static getList($sort=array(), $filter=array(), $group=null, $nav=array(), $select=array(), $callback=false)
static add(array $fields)
static freezeCouponStorage()
static unFreezeCouponStorage()
static isLocationProMigrated()
static AddRecordsByFields($orderId, array $arOldFields, array $arNewFields, $arDeleteFields=array(), $entityName="", $entityId=null, $entity=null, array $data=array())
static AddRecord($orderId, $type, $data=array(), $entityName=null, $entityId=null)
static GetFilterOperation($key)
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false, $callback=false, $arOptions=array())
static CheckFields($ACTION, &$arFields, $ID=0)
static getLocationPropertyInfo()
static AddOrderHistory($OldFields, $NewFields)
static Update($ID, $arFields, $bDateUpdate=true)
static GetList($arOrder=array("ID"=>"DESC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arOptions=array())
static PrepareGetListArray($key, &$arFields, &$arPropIDsTmp)
static addFieldsTo(array &$fields, $statusIdName, $prefix)
SetEntity($entity_id, $ID)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
global $USER_FIELD_MANAGER
$_SERVER["DOCUMENT_ROOT"]
ExecuteModuleEventEx($arEvent, $arParams=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
$GLOBALS['____1690880296']
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
const CACHED_b_sale_order