Добавлен field_label в результат переименования файлов, исправлена загрузка черновиков, обновлен формат пути S3 с project_name
This commit is contained in:
@@ -65,6 +65,16 @@ function vtws_createwebclaim($title, $contact_id, $project_id, $event_type, $des
|
||||
|
||||
global $adb, $current_user;
|
||||
|
||||
// Нормализуем ID контакта и проекта (можно передавать как "12x123" или "123")
|
||||
$contactIdNumeric = preg_replace('/[^0-9]/', '', $contact_id);
|
||||
$projectIdNumeric = preg_replace('/[^0-9]/', '', $project_id);
|
||||
|
||||
$contactWsId = '12x' . $contactIdNumeric;
|
||||
$projectWsId = '33x' . $projectIdNumeric;
|
||||
|
||||
$logstring = date('Y-m-d H:i:s').' Нормализовали ID: contact='.$contactIdNumeric.' (raw='.$contact_id.'), project='.$projectIdNumeric.' (raw='.$project_id.')'.PHP_EOL;
|
||||
file_put_contents('logs/CreateWebClaim.log', $logstring, FILE_APPEND);
|
||||
|
||||
// Маппинг типов событий на русские названия для категории
|
||||
$eventTypeMap = array(
|
||||
'delay_flight' => 'Задержка рейса',
|
||||
@@ -108,8 +118,8 @@ function vtws_createwebclaim($title, $contact_id, $project_id, $event_type, $des
|
||||
'parent_id' => '11x67458', // Заявитель - контрагент
|
||||
'ticketcategories' => $ticketCategory,
|
||||
'ticketstatus' => 'рассмотрение',
|
||||
'contact_id' => '12x'.$contact_id,
|
||||
'cf_2066' => '33x'.$project_id, // Связь с проектом
|
||||
'contact_id' => $contactWsId,
|
||||
'cf_2066' => $projectWsId, // Связь с проектом
|
||||
'ticketpriorities' => 'High',
|
||||
'assigned_user_id' => vtws_getWebserviceEntityId('Users', $current_user->id),
|
||||
'description' => $fullDescription
|
||||
@@ -126,6 +136,32 @@ function vtws_createwebclaim($title, $contact_id, $project_id, $event_type, $des
|
||||
$logstring = date('Y-m-d H:i:s').' ✅ Создана Заявка id='.$ticketId.' ticket_no='.$ticketNumber.PHP_EOL;
|
||||
file_put_contents('logs/CreateWebClaim.log', $logstring, FILE_APPEND);
|
||||
|
||||
// 🚧 Создаём двустороннюю связь между Проектом и Заявкой
|
||||
try {
|
||||
$relationCheck = $adb->pquery(
|
||||
"SELECT 1 FROM vtiger_crmentityrel
|
||||
WHERE (crmid = ? AND relcrmid = ?)
|
||||
OR (crmid = ? AND relcrmid = ?)
|
||||
LIMIT 1",
|
||||
array($projectIdNumeric, $ticketId, $ticketId, $projectIdNumeric)
|
||||
);
|
||||
|
||||
if (!$relationCheck || $adb->num_rows($relationCheck) === 0) {
|
||||
$adb->pquery(
|
||||
"INSERT INTO vtiger_crmentityrel (crmid, module, relcrmid, relmodule) VALUES (?, ?, ?, ?)",
|
||||
array($projectIdNumeric, 'Project', $ticketId, 'HelpDesk')
|
||||
);
|
||||
$logstring = date('Y-m-d H:i:s').' 🔗 Добавлена связь Project('.$projectIdNumeric.') ⇄ HelpDesk('.$ticketId.')'.PHP_EOL;
|
||||
file_put_contents('logs/CreateWebClaim.log', $logstring, FILE_APPEND);
|
||||
} else {
|
||||
$logstring = date('Y-m-d H:i:s').' 🔗 Связь Project('.$projectIdNumeric.') ⇄ HelpDesk('.$ticketId.') уже существует'.PHP_EOL;
|
||||
file_put_contents('logs/CreateWebClaim.log', $logstring, FILE_APPEND);
|
||||
}
|
||||
} catch (Exception $relEx) {
|
||||
$logstring = date('Y-m-d H:i:s').' ⚠️ Ошибка связывания Project('.$projectIdNumeric.') ⇄ HelpDesk('.$ticketId.'): '.$relEx->getMessage().PHP_EOL;
|
||||
file_put_contents('logs/CreateWebClaim.log', $logstring, FILE_APPEND);
|
||||
}
|
||||
|
||||
// Возвращаем массив (vTiger сам сделает json_encode)
|
||||
$output = array(
|
||||
'ticket_id' => $ticketId,
|
||||
|
||||
Reference in New Issue
Block a user