/** * @param $entity * @param $orderId * @param null|int $id * @return bool */ public static function collectEntityFields($entity, $orderId, $id = null) { $oldFields = array(); $fields = array(); if (!($poolEntity = static::getPoolByEntity($entity, $orderId))) { return false; } if ($id !== null) { $found = false; foreach ($poolEntity as $entityId => $fieldValue) { if ($entityId == $id) { $found = true; break; } } if (!$found) { return false; } } foreach ($poolEntity as $entityId => $fieldValue) { if ($id !== null && $entityId != $id) { continue; } foreach ($fieldValue as $data) { if ($data['RECORD_TYPE'] == static::SALE_ORDER_HISTORY_RECORD_TYPE_ACTION) { static::addRecord($entity, $orderId, $data['TYPE'], $data['ID'], $data['DATA']); unset(static::$pool[$entity][$orderId][$data['ID']][$data['TYPE']]); continue; } $value = $data['VALUE']; $oldValue = $data['OLD_VALUE']; if (static::isDate($value)) { $value = static::convertDateField($value); } if (static::isDate($oldValue)) { $oldValue = static::convertDateField($oldValue); } $oldFields[$data['NAME']] = $oldValue; $fields[$data['NAME']] = $value; if (!empty($data['DATA']) && is_array($data['DATA'])) { if (!empty($data['DATA']['PRODUCT_ID'])) { $fields['~PRODUCT_ID'] = $data['DATA']['PRODUCT_ID']; } if (!empty($data['DATA']['NAME'])) { $fields['~NAME'] = $data['DATA']['NAME']; } } } unset(static::$pool[$entity][$orderId][$entityId]); } \CSaleOrderChange::AddRecordsByFields($orderId, $oldFields, $fields, array(), $entity, $id); unset(static::$pool[$entity][$orderId]); }
function Update($ID, $arFields, $bDateUpdate = true) { global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER; $ID = IntVal($ID); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSaleOrder::CheckFields("UPDATE", $arFields, $ID)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } //get old fields $arOrderOldFields = CSaleOrder::GetByID($ID); $strSql = "UPDATE b_sale_order SET " . "\t" . $strUpdate . " "; if ($bDateUpdate) { $strSql .= ",\tDATE_UPDATE = " . $DB->GetNowFunction() . " "; } $strSql .= "WHERE ID = " . $ID . " "; $res = $DB->Query($strSql, true, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (!$res) { return false; } $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields); if ($res) { CSaleOrderChange::AddRecordsByFields($ID, $arOrderOldFields, $arFields); } unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_" . $ID]); foreach (GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } if (isset($arFields["TRACKING_NUMBER"])) { foreach (GetModuleEvents("sale", "OnTrackingNumberChange", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields["TRACKING_NUMBER"])); } if (strlen($arFields["TRACKING_NUMBER"]) > 0 && $arOrderOldFields["TRACKING_NUMBER"] != $arFields["TRACKING_NUMBER"]) { $accountNumber = isset($arFields["ACCOUNT_NUMBER"]) ? $arFields["ACCOUNT_NUMBER"] : $arOrderOldFields["ACCOUNT_NUMBER"]; $userId = isset($arFields["USER_ID"]) ? $arFields["USER_ID"] : $arOrderOldFields["USER_ID"]; $payerName = ""; $payerEMail = ''; $dbUser = CUser::GetByID($userId); if ($arUser = $dbUser->Fetch()) { if (strlen($payerName) <= 0) { $payerName = $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"]; } if (strlen($payerEMail) <= 0) { $payerEMail = $arUser["EMAIL"]; } } $arEmailFields = array("ORDER_ID" => $accountNumber, "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $arOrderOldFields["LID"]))), "ORDER_USER" => $payerName, "ORDER_TRACKING_NUMBER" => $arFields["TRACKING_NUMBER"], "BCC" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME), "EMAIL" => $payerEMail, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME)); $event = new CEvent(); $event->Send("SALE_ORDER_TRACKING_NUMBER", $arOrderOldFields["LID"], $arEmailFields, "N"); } } if (defined("CACHED_b_sale_order") && $bDateUpdate && $arFields["UPDATED_1C"] != "Y") { $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders"); $CACHE_MANAGER->SetImmediate("sale_orders", true); } return $ID; }
function _Update($ID, &$arFields) { global $DB; $ID = (int) $ID; //CSaleBasket::Init(); if (!CSaleBasket::CheckFields("UPDATE", $arFields, $ID)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeBasketUpdateAfterCheck", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $arOldFields = false; $updateHistory = isset($arFields["ORDER_ID"]) && (int) $arFields["ORDER_ID"] > 0; $strUpdate = $DB->PrepareUpdate("b_sale_basket", $arFields); if (!empty($strUpdate)) { if ($updateHistory) { $oldOrderIterator = CSaleBasket::GetList(array(), array('ID' => $ID), false, false, array_keys($arFields)); $arOldFields = $oldOrderIterator->Fetch(); } $strSql = "update b_sale_basket set " . $strUpdate . ", DATE_UPDATE = " . $DB->GetNowFunction() . " where ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } else { $updateHistory = false; } if (isset($arFields["PROPS"]) && !empty($arFields["PROPS"]) && is_array($arFields["PROPS"])) { $sql = "delete from b_sale_basket_props where BASKET_ID = " . $ID; $bProductXml = false; $bCatalogXml = false; foreach ($arFields["PROPS"] as $prop) { if (!isset($prop['CODE'])) { continue; } if ($prop["CODE"] == "PRODUCT.XML_ID") { $bProductXml = true; } if ($prop["CODE"] == "CATALOG.XML_ID") { $bCatalogXml = true; } if ($bProductXml && $bCatalogXml) { break; } } if (!$bProductXml) { $sql .= " and CODE <> 'PRODUCT.XML_ID'"; } if (!$bCatalogXml) { $sql .= " and CODE <> 'CATALOG.XML_ID'"; } $DB->Query($sql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (!$bProductXml || !$bCatalogXml) { $sql = "delete from b_sale_basket_props where BASKET_ID = " . $ID . " and CODE IS NULL"; $DB->Query($sql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } foreach ($arFields["PROPS"] as $prop) { if (!isset($prop["NAME"])) { continue; } $prop["NAME"] = (string) $prop["NAME"]; if ($prop["NAME"] != '') { $arInsert = $DB->PrepareInsert("b_sale_basket_props", $prop); $strSql = "INSERT INTO b_sale_basket_props(BASKET_ID, " . $arInsert[0] . ") VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } } if ($updateHistory) { CSaleOrderChange::AddRecordsByFields($arFields["ORDER_ID"], $arOldFields, $arFields, array('PROPS'), "BASKET"); } foreach (GetModuleEvents("sale", "OnBasketUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return true; }
function _Update($ID, &$arFields) { global $DB; $ID = (int)$ID; //CSaleBasket::Init(); if (!CSaleBasket::CheckFields("UPDATE", $arFields, $ID)) return false; foreach(GetModuleEvents("sale", "OnBeforeBasketUpdateAfterCheck", true) as $arEvent) if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields))===false) return false; $arOldFields = CSaleBasket::GetByID($ID); $strUpdate = $DB->PrepareUpdate("b_sale_basket", $arFields); if(!empty($strUpdate)) { $strSql = "update b_sale_basket set ".$strUpdate.", DATE_UPDATE = ".$DB->GetNowFunction()." where ID = ".$ID; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } if (isset($arFields["PROPS"]) && !empty($arFields["PROPS"]) && is_array($arFields["PROPS"])) { $sql = "delete from b_sale_basket_props where BASKET_ID = ".$ID; $bProductXml = false; $bCatalogXml = false; foreach($arFields["PROPS"] as $prop) { if ($prop["CODE"] == "PRODUCT.XML_ID") $bProductXml = true; if ($prop["CODE"] == "CATALOG.XML_ID") $bCatalogXml = true; if ($bProductXml && $bCatalogXml) break; } if (!$bProductXml) $sql .= " and CODE <> 'PRODUCT.XML_ID'"; if (!$bCatalogXml) $sql .= " and CODE <> 'CATALOG.XML_ID'"; $DB->Query($sql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if (!$bProductXml || !$bCatalogXml) { $sql = "delete from b_sale_basket_props where BASKET_ID = ".$ID." and CODE IS NULL"; $DB->Query($sql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } foreach($arFields["PROPS"] as $prop) { if(strlen($prop["NAME"]) > 0) { $arInsert = $DB->PrepareInsert("b_sale_basket_props", $prop); $strSql = "INSERT INTO b_sale_basket_props(BASKET_ID, ".$arInsert[0].") VALUES(".$ID.", ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } } } if (isset($arFields["ORDER_ID"]) && (int)$arFields["ORDER_ID"] > 0) CSaleOrderChange::AddRecordsByFields($arFields["ORDER_ID"], $arOldFields, $arFields, array(), "BASKET"); foreach(GetModuleEvents("sale", "OnBasketUpdate", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array($ID, $arFields)); return true; }
/** * @param $entityName * @param $orderId * @param null|int $id * @return bool */ public static function collectEntityFields($entityName, $orderId, $id = null) { if (!($poolEntity = static::getPoolByEntity($entityName, $orderId))) { return false; } if ($id !== null) { $found = false; foreach ($poolEntity as $entityId => $fieldValue) { if ($entityId == $id) { $found = true; break; } } if (!$found) { return false; } } foreach ($poolEntity as $entityId => $fieldValue) { if ($id !== null && $entityId != $id) { continue; } $entity = null; $dataFields = array(); $oldFields = array(); $fields = array(); foreach ($fieldValue as $dataList) { foreach ($dataList as $key => $data) { if ($data['RECORD_TYPE'] == static::SALE_ORDER_HISTORY_RECORD_TYPE_ACTION) { static::addRecord($entityName, $orderId, $data['TYPE'], $data['ID'], $data['ENTITY'], $data['DATA']); unset(static::$pool[$entityName][$orderId][$data['ID']][$data['TYPE']][$key]); if (empty(static::$pool[$entityName][$orderId][$data['ID']][$data['TYPE']])) { unset(static::$pool[$entityName][$orderId][$data['ID']][$data['TYPE']]); } continue; } $value = $data['VALUE']; $oldValue = $data['OLD_VALUE']; if (static::isDate($value)) { $value = static::convertDateField($value); } if (static::isDate($oldValue)) { $oldValue = static::convertDateField($oldValue); } $oldFields[$data['NAME']] = $oldValue; $fields[$data['NAME']] = $value; if (!empty($data['DATA']) && is_array($data['DATA'])) { $dataFields = array_merge($dataFields, $data['DATA']); } $dataType = static::FIELD_TYPE_TYPE; if (isset($data['RECORD_TYPE']) == static::SALE_ORDER_HISTORY_RECORD_TYPE_FIELD) { $dataType = static::FIELD_TYPE_NAME; } if (isset($data[$dataType])) { unset(static::$pool[$entityName][$orderId][$data['ID']][$data[$dataType]][$key]); if (empty(static::$pool[$entityName][$orderId][$data['ID']][$data[$dataType]])) { unset(static::$pool[$entityName][$orderId][$data['ID']][$data[$dataType]]); } } if ($entity === null && array_key_exists('ENTITY', $data)) { $entity = $data['ENTITY']; } } } \CSaleOrderChange::AddRecordsByFields($orderId, $oldFields, $fields, array(), $entityName, $id, $entity, $dataFields); if (empty(static::$pool[$entityName][$orderId][$entityId])) { unset(static::$pool[$entityName][$orderId][$entityId]); } } if (empty(static::$pool[$entityName][$orderId])) { unset(static::$pool[$entityName][$orderId]); } if (empty(static::$pool[$entityName])) { unset(static::$pool[$entityName]); } }
/** * <p>Функция изменяет параметры заказа с кодом ID на новые параметры из массива <i> arFields</i>. Перед добавлением заказа вызываются обработчики события OnBeforeOrderUpdate модуля магазина, а после добавления - обработчики события OnOrderUpdate модуля магазина. </p> * * * * * @param int $ID Код заказа. * * * * @param array $arFields Ассоциативный массив параметров заказа, ключами в котором * являются названия параметров заказа, а значениями - новые * значения.<br> Допустимые ключи: <ul> <li> <b>LID</b> - код сайта, на котором * сделан заказ;</li> <li> <b>PERSON_TYPE_ID</b> - тип плательщика, к которому * принадлежит посетитель, сделавший заказ (заказчик);</li> <li> <b>PAYED</b> - * флаг (Y/N) оплачен ли заказ;</li> <li> <b>DATE_PAYED</b> - дата оплаты заказа;</li> * <li> <b>EMP_PAYED_ID</b> - код пользователя (сотрудника магазина), который * установил флаг оплаты;</li> <li> <b>CANCELED</b> - флаг (Y/N) отменён ли * заказ;</li> <li> <b>DATE_CANCELED</b> - дата отмены заказа;</li> <li> <b>EMP_CANCELED_ID</b> - * код пользователя, который установил флаг отмены заказа;</li> <li> * <b>REASON_CANCELED</b> - текстовое описание причины отмены заказа;</li> <li> * <b>STATUS_ID</b> - код статуса заказа;</li> <li> <b>EMP_STATUS_ID</b> - код пользователя * (сотрудника магазина), который установил текущий статус * заказа;</li> <li> <b>PRICE_DELIVERY</b> - стоимость доставки заказа;</li> <li> * <b>ALLOW_DELIVERY</b> - флаг (Y/N) разрешена ли доставка (отгрузка) заказа;</li> * <li> <b>DATE_ALLOW_DELIVERY</b> - дата, когда была разрешена доставка заказа;</li> * <li> <b>EMP_ALLOW_DELIVERY_ID</b> - код пользователя (сотрудника магазина), * который разрешил доставку заказа; </li> <li> <b>PRICE</b> - общая стоимость * заказа;</li> <li> <b>CURRENCY</b> - валюта стоимости заказа;</li> <li> <b>DISCOUNT_VALUE</b> * - общая величина скидки;</li> <li> <b>USER_ID</b> - код пользователя * заказчика;</li> <li> <b>PAY_SYSTEM_ID</b> - платежная система, которой (будет) * оплачен заказа;</li> <li> <b>DELIVERY_ID</b> - способ (служба) доставки * заказа;</li> <li> <b>USER_DESCRIPTION</b> - описание заказа заказчиком;</li> <li> * <b>ADDITIONAL_INFO</b> - дополнительная информация по заказу;</li> <li> <b>COMMENTS</b> * - произвольные комментарии;</li> <li> <b>TAX_VALUE</b> - общая сумма * налогов;</li> <li> <b>STAT_GID</b> - параметр события в статистике; </li> <li> * <b>PS_STATUS</b> - флаг (Y/N) статуса платежной системы - успешно ли оплачен * заказ (для платежных систем, которые позволяют автоматически * получать данные по проведенным через них заказам);</li> <li> * <b>PS_STATUS_CODE</b> - код статуса платежной системы (значение зависит от * системы);</li> <li> <b>PS_STATUS_DESCRIPTION</b> - описание результата работы * платежной системы;</li> <li> <b>PS_STATUS_MESSAGE</b> - сообщение от платежной * системы;</li> <li> <b>PS_SUM</b> - сумма, которая была реально оплачена через * платежную систему;</li> <li> <b>PS_CURRENCY</b> - валюта суммы;</li> <li> * <b>PS_RESPONSE_DATE</b> - дата получения статуса платежной системы;</li> <li> * <b>SUM_PAID </b> - сумма, которая уже была оплачена покупателем по * данному счету (например, с внутреннего счета);</li> <li> <b>PAY_VOUCHER_NUM </b> - * номер платежного поручения;</li> <li> <b>PAY_VOUCHER_DATE</b> - дата платежного * поручения.</li> <li> <b>DATE_INSERT</b> - дата создания заказа.</li> </ul> * * * * @param bDateUpdat $e Обновление даты изменения заказа. Значения <i>true/false</i> * (по-умолчанию <i>true</i>). * * * * @return int <p>Возвращается код добавленного заказа или <i>false</i> в случае * ошибки.</p><a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $arOrder = CSaleOrder::GetByID($ID); * if ($arOrder) * { * $arFields = array( * "PAYED" => "Y", * "DATE_PAYED" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))), * "USER_ID" => $arOrder["USER_ID"], * "EMP_PAYED_ID" => $USER->GetID() * ); * CSaleOrder::Update($ID, $arFields); * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorder/csaleorder__update.a8be5ffa.php * @author Bitrix */ public static function Update($ID, $arFields, $bDateUpdate = true) { global $DB, $USER_FIELD_MANAGER; $ID = IntVal($ID); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1)=="=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSaleOrder::CheckFields("UPDATE", $arFields, $ID)) return false; foreach(GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent) if (ExecuteModuleEventEx($arEvent, Array($ID, &$arFields))===false) return false; $strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate)>0) $strUpdate .= ", "; $strUpdate .= $key."=".$value." "; } //get old fields $arOrderOldFields = CSaleOrder::GetByID($ID); $strSql = "UPDATE b_sale_order SET ". " ".$strUpdate." "; if($bDateUpdate) $strSql .= ", DATE_UPDATE = ".$DB->GetNowFunction()." "; $strSql .= "WHERE ID = ".$ID." "; $res = $DB->Query($strSql, true, "File: ".__FILE__."<br>Line: ".__LINE__); if (!$res) return false; $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields); if ($res) CSaleOrderChange::AddRecordsByFields($ID, $arOrderOldFields, $arFields); unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_".$ID]); foreach(GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array($ID, $arFields)); return $ID; }
function Update($ID, $arFields, $bDateUpdate = true) { global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER, $APPLICATION; $isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'N'); $ID = IntVal($ID); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSaleOrder::CheckFields("UPDATE", $arFields, $ID)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } if ($isOrderConverted == "Y") { if (!empty($arFields1)) { $arFields1 = \Bitrix\Sale\Compatible\OrderCompatibility::backRawField(\Bitrix\Sale\Compatible\OrderCompatibility::ENTITY_ORDER, $arFields1); } $result = \Bitrix\Sale\Compatible\OrderCompatibility::update($ID, array_merge($arFields, $arFields1), $bDateUpdate); if (!$result->isSuccess()) { foreach ($result->getErrorMessages() as $error) { $APPLICATION->ThrowException($error); } return false; } else { $arOrderOldFields = array(); $resultFields = $result->getData(); if (!empty($resultFields['OLD_FIELDS']) && is_array($resultFields['OLD_FIELDS'])) { $arOrderOldFields = $resultFields['OLD_FIELDS']; } $updated = true; } } else { $strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } //get old fields $arOrderOldFields = CSaleOrder::GetByID($ID); $strSql = "UPDATE b_sale_order SET " . "\t" . $strUpdate . " "; if ($bDateUpdate) { $strSql .= ",\tDATE_UPDATE = " . $DB->GetNowFunction() . " "; } $strSql .= "WHERE ID = " . $ID . " "; $updated = $DB->Query($strSql, true, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (!$updated) { return false; } } $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields); if ($updated) { CSaleOrderChange::AddRecordsByFields($ID, $arOrderOldFields, $arFields); } unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_" . $ID]); foreach (GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } if (isset($arFields["TRACKING_NUMBER"])) { foreach (GetModuleEvents("sale", "OnTrackingNumberChange", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields["TRACKING_NUMBER"])); } if (strlen($arFields["TRACKING_NUMBER"]) > 0 && $arOrderOldFields["TRACKING_NUMBER"] != $arFields["TRACKING_NUMBER"]) { $accountNumber = isset($arFields["ACCOUNT_NUMBER"]) ? $arFields["ACCOUNT_NUMBER"] : $arOrderOldFields["ACCOUNT_NUMBER"]; $userId = isset($arFields["USER_ID"]) ? $arFields["USER_ID"] : $arOrderOldFields["USER_ID"]; $payerName = ""; $payerEMail = ''; $dbUser = CUser::GetByID($userId); if ($arUser = $dbUser->Fetch()) { if (strlen($payerName) <= 0) { $payerName = $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"]; } if (strlen($payerEMail) <= 0) { $payerEMail = $arUser["EMAIL"]; } } $arEmailFields = array("ORDER_ID" => $accountNumber, "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $arOrderOldFields["LID"]))), "ORDER_USER" => $payerName, "ORDER_TRACKING_NUMBER" => $arFields["TRACKING_NUMBER"], "BCC" => COption::GetOptionString("sale", "order_email", "order@" . $_SERVER['SERVER_NAME']), "EMAIL" => $payerEMail, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $_SERVER['SERVER_NAME'])); $event = new CEvent(); $event->Send("SALE_ORDER_TRACKING_NUMBER", $arOrderOldFields["LID"], $arEmailFields, "N"); } } if (defined("CACHED_b_sale_order") && $bDateUpdate && $arFields["UPDATED_1C"] != "Y") { $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders"); $CACHE_MANAGER->SetImmediate("sale_orders", true); } return $ID; }