Задача:
Решение:
Создаем обработчик события в init.php
Комментарии:
Таск создается при переводе тикета в статус in process
Ответственный за таск будет тот, кто установлен ответственным за тикет.
У клиента, создавшего тикет должно быть пользовательское поле 'UF_CLIENT_PROJECT' с номером проекта(рабочей группы) к которой прикрепляется таск.
Код:
- Автоматическое создание задачи, при переводе обращения ТП в определенный статус.
- Прикрепить к задаче все файлы.
- Добавить в название номер обращения.
- Прикрепить задачу к определенной группе.
Решение:
Создаем обработчик события в init.php
Комментарии:
Таск создается при переводе тикета в статус in process
Ответственный за таск будет тот, кто установлен ответственным за тикет.
У клиента, создавшего тикет должно быть пользовательское поле 'UF_CLIENT_PROJECT' с номером проекта(рабочей группы) к которой прикрепляется таск.
Код:
<? // Create handler for ticket update AddEventHandler("support", "OnAfterTicketUpdate", array("CreateTask", "OnBeforeTicketUpdateHandler")); class CreateTask { // Create task function function OnBeforeTicketUpdateHandler($arFields) { $TICKETID = $arFields["ID"]; // Get ticket $ticket = CTicket::GetByID($arFields["ID"],"en","N","Y")->GetNext(); // Ticket status checked if ($ticket["STATUS_ID"] == "6") { // Init get ticket messages $by = "s_id"; $order = "asc"; $CHECK_RIGHTS = "N"; $names = "Y"; $msg = ""; // Get ticket messages $mess = CTicket::GetMessageList ($by, $order, array("TICKET_ID" => $arFields["ID"]), $c, $CHECK_RIGHTS,$names); while ($messages = $mess->GetNext()) { // Get main message if ($messages["C_NUMBER"] == 1) { $ticketmessage = $messages; $ticketid = $messages["TICKET_ID"]; // Take project field fron ticket creator $client = $messages["OWNER_USER_ID"]; $rsUser = CUser::GetByID($client); $arUser = $rsUser->Fetch(); $project = $arUser['UF_CLIENT_PROJECT']; if ($project<1) { // Parsing project id to $project; if ($messages["~MESSAGE"]) { $projecttemplate = "/\[.*?(\d+)\]/mi"; preg_match ( $projecttemplate, $messages["~MESSAGE"], $project ); } $project = $project['1']; } } // check created task message and exit if find this string if (strpos($messages["~MESSAGE"], "Created task [TID#") !== false) return; // init data to task creation $rsUser = CUser::GetByID($messages["CREATED_USER_ID"]); $arUser = $rsUser->Fetch(); $me = "From: " . $arUser["NAME"]." - ".$arUser["LOGIN"]."<br>"; $me .= "Created: " . $messages["DATE_CREATE"]."<br>"; $me .="-----------------------------------------------"; $me .= "<pre>"; $me .= $messages["~MESSAGE"]; $me .= "</pre>"; $me .= "-----------------------------------------------<br><br>"; //if(CModule::IncludeModule("calendar")){ //$msg = CCalendar::ParseHTMLToBB($me); // } $msg .= $me; $lastmsg = $messages; } // get ticket files $rsFiles = CTicket::GetFileList ( $v1="s_id", $v2="asc", array("TICKET_ID" => $arFields["ID"]) ); while ($arFile = $rsFiles->Fetch()) { $files[] = ($arFile["ID"]); } $responsible = $lastmsg["CURRENT_RESPONSIBLE_USER_ID"]; $title = "Support ticket #".$ticketid." - ".$ticket["TITLE"]; $ownerlogin = $ticket["OWNER_LOGIN"]; $ownername = $ticket["OWNER_NAME"]; /* $comment = "Ticket created by ".$ownerlogin." (".$ownername.")<br>";*/ $comment .= $msg; $comment .= "<b>Support comment</b><br>".$ticket["SUPPORT_COMMENTS"]; // Task creation if (CModule::IncludeModule("tasks")) { $arFields = Array ( "TITLE" => $title, "DESCRIPTION" => $comment, "RESPONSIBLE_ID" => $responsible, "TASK_CONTROL" => "Y" ); if ($project) $arFields["GROUP_ID"] = $project; $obTask = new CTasks; $TID = $obTask->Add($arFields); $success = ($TID>0); // Task creation check if(!$success) { echo "Error. Task not created"; if (!$responsible) echo "<br>You not set responsible user"; die (); } // add task files CTasks::AddFiles ($TID, $files); // add task tags if ($message) { $projecttemplate = "/\<i.*\>\[.*\](.*)\<\/i\>/mi"; preg_match ( $projecttemplate, $message, $tag ); $tags[] = trim($tag["1"]); } CTasks::AddTags($ID, $responsible, $tags); } // add comment with task number to ticket $ticketmessage["MESSAGE"] = 'Created task [TID#'.$TID.']'; $ticketmessage["HIDDEN"] = "Y"; CTicket::Set( $ticketmessage, $MESSAGE_ID, $TICKETID, "N" ); } } } ?> |