...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_deal.php
- Класс: \CAllCrmDeal
- Вызов: CAllCrmDeal::SynchronizeCustomerData
protected function SynchronizeCustomerData($sourceID, array $fields, array $options = null) { if(!is_array($options)) { $options = array(); } $companyID = isset($fields['COMPANY_ID']) ? (int)$fields['COMPANY_ID'] : 0; $contactID = isset($fields['CONTACT_ID']) ? (int)$fields['CONTACT_ID'] : 0; $enableSource = !isset($options['ENABLE_SOURCE']) || $options['ENABLE_SOURCE'] === true; $connection = \Bitrix\Main\Application::getInstance()->getConnection(); //region REPEATED APPROACH if($enableSource) { $isRepeatedApproach = false; if(isset($fields['LEAD_ID']) && $fields['LEAD_ID'] > 0 && \CCrmLead::GetCustomerType($fields['LEAD_ID']) === CustomerType::RETURNING && ($companyID > 0 || $contactID > 0) ) { if($companyID > 0) { $dbResult = $connection->query("SELECT MIN(ID) AS ID FROM b_crm_deal WHERE COMPANY_ID = {$companyID} AND STAGE_SEMANTIC_ID = 'S'"); } else//if($contactID > 0) { $dbResult = $connection->query("SELECT MIN(ID) AS ID FROM b_crm_deal WHERE CONTACT_ID = {$contactID} AND COMPANY_ID <= 0 AND STAGE_SEMANTIC_ID = 'S'"); } $resultData = $dbResult->fetch(); $primaryID = is_array($resultData) && isset($resultData['ID']) ? (int)$resultData['ID'] : 0; $isRepeatedApproach = ($primaryID === 0); } $flag = $isRepeatedApproach ? 'Y' : 'N'; $connection->queryExecute("UPDATE b_crm_deal SET IS_REPEATED_APPROACH = '{$flag}' WHERE ID = {$sourceID}"); } //endregion //region RETURN CUSTOMER if($companyID > 0 || $contactID > 0) { if($companyID > 0) { $dbResult = $connection->query("SELECT MIN(ID) AS ID FROM b_crm_deal WHERE COMPANY_ID = {$companyID} AND STAGE_SEMANTIC_ID = 'S'"); } else//if($contactID > 0) { $dbResult = $connection->query("SELECT MIN(ID) AS ID FROM b_crm_deal WHERE CONTACT_ID = {$contactID} AND COMPANY_ID <= 0 AND STAGE_SEMANTIC_ID = 'S'"); } $resultData = $dbResult->fetch(); $primaryID = is_array($resultData) && isset($resultData['ID']) ? (int)$resultData['ID'] : 0; if($primaryID > 0) { if($companyID > 0) { $connection->queryExecute( "UPDATE b_crm_deal SET IS_RETURN_CUSTOMER = 'Y', IS_REPEATED_APPROACH = 'N' WHERE IS_RETURN_CUSTOMER = 'N' AND COMPANY_ID = {$companyID}" ); } elseif($contactID > 0) { $connection->queryExecute( "UPDATE b_crm_deal SET IS_RETURN_CUSTOMER = 'Y', IS_REPEATED_APPROACH = 'N' WHERE IS_RETURN_CUSTOMER = 'N' AND CONTACT_ID = {$contactID} AND IFNULL(COMPANY_ID, 0) = 0" ); } $connection->queryExecute("UPDATE b_crm_deal SET IS_RETURN_CUSTOMER = 'N' WHERE ID = {$primaryID}"); } } elseif($enableSource) { $connection->queryExecute("UPDATE b_crm_deal SET IS_RETURN_CUSTOMER = 'N' WHERE ID = {$sourceID}"); } //endregion }