/**
  * writeDataOnOrderCreate via api
  * 
  * @param $ID - Order Id
  * @param array $arFields
  * @return boolean
  */
 function writeDataOnOrderCreate($ID, $arFields)
 {
     if (!CModule::IncludeModule('iblock')) {
         //handle err
         ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'iblock', 'module not found');
         return true;
     }
     if (!CModule::IncludeModule("sale")) {
         //handle err
         ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'sale', 'module not found');
         return true;
     }
     if (!CModule::IncludeModule("catalog")) {
         //handle err
         ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'catalog', 'module not found');
         return true;
     }
     $GLOBALS['INTARO_CRM_FROM_HISTORY'] = false;
     $api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
     $api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
     //saved cat params
     $optionsOrderTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_TYPES_ARR, 0));
     $optionsDelivTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_DELIVERY_TYPES_ARR, 0));
     $optionsPayTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_TYPES, 0));
     $optionsPayStatuses = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_STATUSES, 0));
     // --statuses
     $optionsPayment = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT, 0));
     $optionsSitesList = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_SITES_LIST, 0));
     $optionsOrderProps = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_PROPS, 0));
     $optionsLegalDetails = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_LEGAL_DETAILS, 0));
     $optionsContragentType = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_CONTRAGENT_TYPE, 0));
     $optionsCustomFields = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_CUSTOM_FIELDS, 0));
     $api = new RetailCrm\RestApi($api_host, $api_key);
     $arParams = ICrmOrderActions::clearArr(array('optionsOrderTypes' => $optionsOrderTypes, 'optionsDelivTypes' => $optionsDelivTypes, 'optionsPayTypes' => $optionsPayTypes, 'optionsPayStatuses' => $optionsPayStatuses, 'optionsPayment' => $optionsPayment, 'optionsOrderProps' => $optionsOrderProps, 'optionsLegalDetails' => $optionsLegalDetails, 'optionsContragentType' => $optionsContragentType, 'optionsSitesList' => $optionsSitesList, 'optionsCustomFields' => $optionsCustomFields));
     $arOrder = CSaleOrder::GetById($ID);
     if (is_array($arFields) && !empty($arFields)) {
         $arFieldsNew = array('USER_ID' => $arOrder['USER_ID'], 'ID' => $ID, 'PERSON_TYPE_ID' => $arOrder['PERSON_TYPE_ID'], 'CANCELED' => $arOrder['CANCELED'], 'STATUS_ID' => $arOrder['STATUS_ID'], 'DATE_INSERT' => $arOrder['DATE_INSERT'], 'LID' => $arOrder['LID']);
         $arFieldsNew = array_merge($arFieldsNew, $arFields);
         $arOrder = $arFieldsNew;
     }
     if (count($optionsSitesList) > 1) {
         $result = ICrmOrderActions::orderCreate($arOrder, $api, $arParams, true, $optionsSitesList[$arOrder['LID']]);
     } else {
         $result = ICrmOrderActions::orderCreate($arOrder, $api, $arParams, true);
     }
     if (!$result) {
         ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'ICrmOrderActions::orderCreate', 'error during creating order');
         return false;
     }
     return true;
 }