Дипломная работа: Автоматизация учета и обработки заявок пользователей на техническую поддержку (Help Desk) в ООО "Сфера ИТ"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
86
if ( !$Param{Tn} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => 'Need TN!'
);
return;
}
# get database object
my $DBObject = $Kernel::OM->Get('Kernel::System::DB');
# db query
return if !$DBObject->Prepare(
SQL => 'SELECT id FROM ticket WHERE tn = ?',
Bind => [ \$Param{Tn} ],
Limit => 1,
);
my $TicketID;
while ( my @Row = $DBObject->FetchrowArray() ) {
$TicketID = $Row[0];
}
# get main ticket id if ticket has been merged
return if !$TicketID;
# do not check deeper than 10 merges
my $Limit = 10;
my $Count = 1;
MERGELOOP:
87
for ( 1 .. $Limit ) {
my %Ticket = $Self->TicketGet(
TicketID => $TicketID,
DynamicFields => 0,
);
return $TicketID if $Ticket{StateType} ne 'merged';
# get ticket history
my @Lines = $Self->HistoryGet(
TicketID => $TicketID,
UserID => 1,
);
HISTORYLINE:
for my $Data ( reverse @Lines ) {
next HISTORYLINE if $Data->{HistoryType} ne 'Merged';
if ( $Data->{Name} =~ /^.*%%\d+?%%(\d+?)$/ ) {
$TicketID = $1;
$Count++;
next MERGELOOP if ( $Count <= $Limit );
# returns no found Ticket after 10 deep-merges, so it should create a new
one
return;
}
}
return $TicketID;
}
88
return;
}
=head2 TicketCreate()
creates a new ticket
my $TicketID = $TicketObject->TicketCreate(
Title => 'Some Ticket Title',
Queue => 'Raw', # or QueueID => 123,
Lock => 'unlock',
Priority => '3 normal', # or PriorityID => 2,
State => 'new', # or StateID => 5,
CustomerID => '123465',
CustomerUser => 'customer@example.com',
OwnerID => 123,
UserID => 123,
);
or
my $TicketID = $TicketObject->TicketCreate(
TN => $TicketObject->TicketCreateNumber(), # optional
Title => 'Some Ticket Title',
Queue => 'Raw', # or QueueID => 123,
Lock => 'unlock',
Priority => '3 normal', # or PriorityID => 2,
State => 'new', # or StateID => 5,
Type => 'Incident', # or TypeID = 1 or Ticket type default
(Ticket::Type::Default), not required
89
Service => 'Service A', # or ServiceID => 1, not required
SLA => 'SLA A', # or SLAID => 1, not required
CustomerID => '123465',
CustomerUser => 'customer@example.com',
OwnerID => 123,
ResponsibleID => 123, # not required
ArchiveFlag => 'y', # (y|n) not required
UserID => 123,
);
Events:
TicketCreate
=cut
sub TicketCreate {
my ( $Self, %Param ) = @_;
# check needed stuff
for my $Needed (qw(OwnerID UserID)) {
if ( !$Param{$Needed} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => "Need $Needed!"
);
return;
}
}
my $ArchiveFlag = 0;
90
if ( $Param{ArchiveFlag} && $Param{ArchiveFlag} eq 'y' ) {
$ArchiveFlag = 1;
}
$Param{ResponsibleID} ||= 1;
# get type object
my $TypeObject = $Kernel::OM->Get('Kernel::System::Type');
if ( !$Param{TypeID} && !$Param{Type} ) {
# get default ticket type
my $DefaultTicketType = $Kernel::OM->Get('Kernel::Config')-
>Get('Ticket::Type::Default');
# check if default ticket type exists
my %AllTicketTypes = reverse $TypeObject->TypeList();
if ( $AllTicketTypes{$DefaultTicketType} ) {
$Param{Type} = $DefaultTicketType;
}
else {
$Param{TypeID} = 1;
}
}
# TypeID/Type lookup!
if ( !$Param{TypeID} && $Param{Type} ) {
$Param{TypeID} = $TypeObject->TypeLookup( Type => $Param{Type} );
}
Источник: https://baza.diplomsite.ru/previewfile/2374