Задача:

Решение:
Создаем обработчик события в 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"
);
}
}
}
?>
|