getMessage() . PHP_EOL, FILE_APPEND); } } $isNew = false; $output = null; file_put_contents('logs/CreateClientProject.log', $logPrefix . "🔎 Ищем проект по claim_id={$claim_id}" . PHP_EOL, FILE_APPEND); // Ищем проект по claim_id (cf_2620) $query = "SELECT p.projectid FROM vtiger_project p INNER JOIN vtiger_projectcf pcf ON p.projectid = pcf.projectid INNER JOIN vtiger_crmentity e ON e.crmid = p.projectid WHERE e.deleted = 0 AND pcf.cf_2620 = ? LIMIT 1"; $result = $adb->pquery($query, array($claim_id)); if (!$result) { throw new Exception("SQL error while searching project"); } $projectName = ''; if ($adb->num_rows($result) > 0) { $output = $adb->query_result($result, 0, 'projectid'); $isNew = false; file_put_contents('logs/CreateClientProject.log', $logPrefix . "✅ Проект найден по claim_id {$claim_id}: {$output}" . PHP_EOL, FILE_APPEND); } else { // Генерируем имя проекта $lastname = trim($lastname); if (!empty($lastname)) { $projectName = $lastname . '_КлиентПрав'; } elseif (!empty($phone)) { $projectName = $phone . '_КлиентПрав'; } else { $projectName = 'КлиентПрав_' . $claim_id; } $params = array( 'projectname' => $projectName, 'projectstatus' => 'Черновик', 'projecttype' => 'претензионно-исковая работа', 'linktoaccountscontacts' => $contactIdWithPrefix, 'cf_1994' => '11x62345', // Заявитель (МОО КлиентПрав) 'cf_2620' => $claim_id, 'assigned_user_id' => vtws_getWebserviceEntityId('Users', $current_user->id) ); if (!empty($session_id)) { $params['cf_2618'] = $session_id; } if (!empty($description)) { $params['description'] = $description; } if (!empty($ai_response)) { $params['cf_2622'] = $ai_response; } file_put_contents('logs/CreateClientProject.log', $logPrefix . 'Массив для создания: ' . json_encode($params) . PHP_EOL, FILE_APPEND); try { $project = vtws_create('Project', $params, $current_user); $output = substr($project['id'], 3); $isNew = true; file_put_contents('logs/CreateClientProject.log', $logPrefix . "✅ Создан новый проект: {$output}" . PHP_EOL, FILE_APPEND); } catch (WebServiceException $ex) { file_put_contents('logs/CreateClientProject.log', $logPrefix . '❌ Ошибка создания: ' . $ex->getMessage() . PHP_EOL, FILE_APPEND); throw $ex; } } // Получаем название проекта (если проект был найден, а не создан) if (empty($projectName) && !empty($output)) { try { $query = "SELECT projectname FROM vtiger_project WHERE projectid = ? LIMIT 1"; $result = $adb->pquery($query, array($output)); if ($adb->num_rows($result) > 0) { $projectName = $adb->query_result($result, 0, 'projectname'); file_put_contents('logs/CreateClientProject.log', $logPrefix . "📝 Получено название проекта: {$projectName}" . PHP_EOL, FILE_APPEND); } } catch (Exception $e) { file_put_contents('logs/CreateClientProject.log', $logPrefix . '⚠️ Не удалось получить название проекта: ' . $e->getMessage() . PHP_EOL, FILE_APPEND); } } $result = array( 'project_id' => $output, 'project_name' => $projectName, 'is_new' => $isNew ); file_put_contents('logs/CreateClientProject.log', $logPrefix . 'Return: ' . json_encode($result) . PHP_EOL, FILE_APPEND); ob_end_clean(); return $result; } catch (Exception $ex) { file_put_contents('logs/CreateClientProject.log', $logPrefix . '❌ Exception: ' . $ex->getMessage() . PHP_EOL, FILE_APPEND); ob_end_clean(); throw $ex; } }