function Add($arFields) { global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER, $APPLICATION; $isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'N'); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!empty($arFields['TAX_LIST']) && is_array($arFields['TAX_LIST'])) { $arFields1['TAX_LIST'] = $arFields['TAX_LIST']; } if (!empty($arFields['ORDER_PROP']) && is_array($arFields['TAX_LIST'])) { $arFields1['ORDER_PROP'] = $arFields['ORDER_PROP']; } if (!empty($arFields['DELIVERY_PRICE']) && floatval($arFields['DELIVERY_PRICE']) > 0) { $arFields1['DELIVERY_PRICE'] = $arFields['DELIVERY_PRICE']; } if (array_key_exists('ONLY_FULL_PAY_FROM_ACCOUNT', $arFields)) { $arFields1['ONLY_FULL_PAY_FROM_ACCOUNT'] = $arFields['ONLY_FULL_PAY_FROM_ACCOUNT']; } unset($arFields['DELIVERY_PRICE']); unset($arFields['TAX_LIST']); if (!CSaleOrder::CheckFields("ADD", $arFields)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeOrderAdd", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array(&$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::add(array_merge($arFields, $arFields1)); if ($result->isSuccess(true)) { $ID = $result->getId(); } else { foreach ($result->getErrorMessages() as $error) { $APPLICATION->ThrowException($error); } return false; } } else { $arInsert = $DB->PrepareInsert("b_sale_order", $arFields); if (!array_key_exists("DATE_STATUS", $arFields)) { $arInsert[0] .= ", DATE_STATUS"; $arInsert[1] .= ", " . $DB->GetNowFunction(); } if (!array_key_exists("DATE_INSERT", $arFields)) { $arInsert[0] .= ", DATE_INSERT"; $arInsert[1] .= ", " . $DB->GetNowFunction(); } if (!array_key_exists("DATE_UPDATE", $arFields)) { $arInsert[0] .= ", DATE_UPDATE"; $arInsert[1] .= ", " . $DB->GetNowFunction(); } foreach ($arFields1 as $key => $value) { if (strlen($arInsert[0]) > 0) { $arInsert[0] .= ", "; $arInsert[1] .= ", "; } $arInsert[0] .= $key; $arInsert[1] .= $value; } $strSql = "INSERT INTO b_sale_order(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); CSaleOrder::SetAccountNumber($ID); } CSaleOrderChange::AddRecord($ID, "ORDER_ADDED"); $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields); if ($isOrderConverted != 'Y') { foreach (GetModuleEvents("sale", "OnOrderAdd", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } } if (defined("CACHED_b_sale_order")) { $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders"); $CACHE_MANAGER->SetImmediate("sale_orders", true); } return $ID; }