/** * 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; }