feat: Получение cf_2624 из MySQL при загрузке черновика
- Добавлен сервис CrmMySQLService для подключения к MySQL БД vtiger CRM - Обновлён get_draft() для прямого SQL запроса к MySQL вместо webservice API - Получение cf_2624 и всех данных контакта из MySQL - Обновлена документация и SQL файлы для n8n - Добавлено логирование для отладки Преимущества: - Проще: один SQL запрос вместо цепочки HTTP запросов - Быстрее: прямой запрос к БД - Надёжнее: не зависит от webservice API - Актуальнее: всегда свежие данные из БД
This commit is contained in:
@@ -22,7 +22,7 @@ vimport ('includes.runtime.LanguageHandler');
|
||||
* @param string $firstname - имя (опционально)
|
||||
* @param string $lastname - фамилия (опционально)
|
||||
* @param string $email - email (опционально)
|
||||
* @return int - ID контакта
|
||||
* @return string - JSON строка с contact_id, is_new и cf_2624 (Данные подтверждены)
|
||||
*/
|
||||
function vtws_createwebcontact($mobile, $firstname = '', $lastname = '', $email = '', $user = false) {
|
||||
|
||||
@@ -56,18 +56,29 @@ function vtws_createwebcontact($mobile, $firstname = '', $lastname = '', $email
|
||||
$isNew = false; // Флаг: создан ли контакт сейчас
|
||||
|
||||
// Проверяем существование контакта по номеру телефона
|
||||
$query = "select c.contactid
|
||||
// ✅ Добавляем выборку поля cf_2624 (Данные подтверждены)
|
||||
$query = "select c.contactid, cf.cf_2624
|
||||
from vtiger_contactdetails c
|
||||
left join vtiger_crmentity e on e.crmid = c.contactid
|
||||
left join vtiger_crmentity e on e.crmid = c.contactid
|
||||
left join vtiger_contactscf cf on cf.contactid = c.contactid
|
||||
where e.deleted = 0 and c.mobile = ?
|
||||
limit 1";
|
||||
$result = $adb->pquery($query, array($mobile));
|
||||
|
||||
$cf_2624_value = "0"; // По умолчанию "Нет" (данные не подтверждены)
|
||||
|
||||
if ($adb->num_rows($result) > 0) {
|
||||
// Контакт существует - ПРОСТО ВОЗВРАЩАЕМ ID (НЕ обновляем!)
|
||||
$output = $adb->query_result($result, 0, 'contactid');
|
||||
$isNew = false;
|
||||
$logstring = date('Y-m-d H:i:s').' ✅ Контакт найден с id '.$output.' (БЕЗ обновления)'.PHP_EOL;
|
||||
|
||||
// ✅ Получаем значение поля cf_2624 (Данные подтверждены)
|
||||
$cf_2624_value = $adb->query_result($result, 0, 'cf_2624');
|
||||
if (empty($cf_2624_value)) {
|
||||
$cf_2624_value = "0"; // По умолчанию "Нет"
|
||||
}
|
||||
|
||||
$logstring = date('Y-m-d H:i:s').' ✅ Контакт найден с id '.$output.', cf_2624='.$cf_2624_value.' (БЕЗ обновления)'.PHP_EOL;
|
||||
file_put_contents('logs/CreateWebContact.log', $logstring, FILE_APPEND);
|
||||
} else {
|
||||
// Контакт НЕ существует - создаём новый
|
||||
@@ -92,6 +103,7 @@ function vtws_createwebcontact($mobile, $firstname = '', $lastname = '', $email
|
||||
'mailingstreet' => '', // Адрес пустой
|
||||
'cf_1849' => '', // Реквизиты пустые
|
||||
'cf_1580' => '', // Код пустой
|
||||
'cf_2624' => '0', // ✅ Данные подтверждены = "Нет" (по умолчанию для новых контактов)
|
||||
'assigned_user_id' => vtws_getWebserviceEntityId('Users', $current_user->id)
|
||||
);
|
||||
|
||||
@@ -102,7 +114,8 @@ function vtws_createwebcontact($mobile, $firstname = '', $lastname = '', $email
|
||||
$contact = vtws_create('Contacts', $params, $current_user);
|
||||
$output = substr($contact['id'], 3);
|
||||
$isNew = true; // Контакт только что создан!
|
||||
$logstring = date('Y-m-d H:i:s').' ✅ Создан новый Web Контакт с id '.$output.PHP_EOL;
|
||||
$cf_2624_value = "0"; // Новый контакт - данные не подтверждены
|
||||
$logstring = date('Y-m-d H:i:s').' ✅ Создан новый Web Контакт с id '.$output.', cf_2624=0'.PHP_EOL;
|
||||
file_put_contents('logs/CreateWebContact.log', $logstring, FILE_APPEND);
|
||||
} catch (WebServiceException $ex) {
|
||||
$logstring = date('Y-m-d H:i:s').' ❌ Ошибка создания: '.$ex->getMessage().PHP_EOL;
|
||||
@@ -111,10 +124,11 @@ function vtws_createwebcontact($mobile, $firstname = '', $lastname = '', $email
|
||||
}
|
||||
}
|
||||
|
||||
// Возвращаем JSON с флагом is_new
|
||||
// Возвращаем JSON с флагом is_new и значением cf_2624
|
||||
$result = array(
|
||||
'contact_id' => $output,
|
||||
'is_new' => $isNew
|
||||
'is_new' => $isNew,
|
||||
'cf_2624' => $cf_2624_value // ✅ "1" = данные подтверждены, "0" = не подтверждены
|
||||
);
|
||||
|
||||
$logstring = date('Y-m-d H:i:s').' Return: '.json_encode($result).PHP_EOL;
|
||||
|
||||
Reference in New Issue
Block a user