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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
76
Приложение № 1
Листинг модуля «Новая телефонная заявка»
package Kernel::System::Ticket;
use strict;
use warnings;
use File::Path;
use utf8;
use Encode ();
use parent qw(
Kernel::System::EventHandler
Kernel::System::Ticket::TicketSearch
Kernel::System::Ticket::TicketACL
);
use Kernel::Language qw(Translatable);
use Kernel::System::VariableCheck qw(:all);
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::System::Cache',
'Kernel::System::Calendar',
'Kernel::System::CustomerUser',
'Kernel::System::DB',
'Kernel::System::DynamicField',
'Kernel::System::DynamicField::Backend',
'Kernel::System::DynamicFieldValue',
'Kernel::System::Email',
77
'Kernel::System::Group',
'Kernel::System::HTMLUtils',
'Kernel::System::LinkObject',
'Kernel::System::Lock',
'Kernel::System::Log',
'Kernel::System::Main',
'Kernel::System::PostMaster::LoopProtection',
'Kernel::System::Priority',
'Kernel::System::Queue',
'Kernel::System::Service',
'Kernel::System::SLA',
'Kernel::System::State',
'Kernel::System::TemplateGenerator',
'Kernel::System::DateTime',
'Kernel::System::Ticket::Article',
'Kernel::System::Type',
'Kernel::System::User',
'Kernel::System::Valid',
'Kernel::Language',
);
=head1 NAME
Kernel::System::Ticket - Functions to create, modify and delete tickets as well as re-
lated helper functions
=head1 SYNOPSIS
Create ticket object
78
use Kernel::System::ObjectManager;
local $Kernel::OM = Kernel::System::ObjectManager->new();
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
Create a new ticket
my $TicketID = $TicketObject->TicketCreate(
Title => 'Some Ticket Title',
Queue => 'Raw',
Lock => 'unlock',
Priority => '3 normal',
State => 'new',
CustomerID => '12345',
CustomerUser => 'customer@example.com',
OwnerID => 1,
UserID => 1,
);
Lock the ticket
my $Success = $TicketObject->TicketLockSet(
Lock => 'lock',
TicketID => $TicketID,
UserID => 1,
);
Update the title
my $Success = $TicketObject->TicketTitleUpdate(
79
Title => 'Some Title',
TicketID => $TicketID,
UserID => 1,
);
Move ticket to another queue
my $Success = $TicketObject->TicketQueueSet(
Queue => 'Some Queue Name',
TicketID => $TicketID,
UserID => 1,
);
Set a ticket type
my $Success = $TicketObject->TicketTypeSet(
Type => 'Incident',
TicketID => $TicketID,
UserID => 1,
);
Assign another customer
my $Success = $TicketObject->TicketCustomerSet(
No => '12345',
User => 'customer@company.org',
TicketID => $TicketID,
UserID => 1,
);
80
Update the state
my $Success = $TicketObject->TicketStateSet(
State => 'pending reminder',
TicketID => $TicketID,
UserID => 1,
);
Update pending time (only for pending states)
my $Success = $TicketObject->TicketPendingTimeSet(
String => '2019-08-14 22:05:00',
TicketID => $TicketID,
UserID => 1,
);
Set a new priority
my $Success = $TicketObject->TicketPrioritySet(
TicketID => $TicketID,
Priority => 'low',
UserID => 1,
);
Assign to another agent
my $Success = $TicketObject->TicketOwnerSet(
TicketID => $TicketID,
NewUserID => 2,
UserID => 1,
81
);
Set a responsible
my $Success = $TicketObject->TicketResponsibleSet(
TicketID => $TicketID,
NewUserID => 3,
UserID => 1,
);
Add something to the history
my $Success = $TicketObject->HistoryAdd(
Name => 'Some Comment',
HistoryType => 'Move',
TicketID => $TicketID,
CreateUserID => 1,
);
Get the complete ticket history
my @HistoryLines = $TicketObject->HistoryGet(
TicketID => $TicketID,
UserID => 1,
);
Get current ticket attributes
my %Ticket = $TicketObject->TicketGet(
TicketID => $TicketID,
82
UserID => 1,
);
Delete the ticket
my $Success = $TicketObject->TicketDelete(
TicketID => $TicketID,
UserID => 1,
);
=head1 PUBLIC INTERFACE
=head2 new()
Don't use the constructor directly, use the ObjectManager instead:
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
=cut
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# 0=off; 1=on;
$Self->{Debug} = $Param{Debug} || 0;
83
$Self->{CacheType} = 'Ticket';
$Self->{CacheTTL} = 60 * 60 * 24 * 20;
# init of event handler
$Self->EventHandlerInit(
Config => 'Ticket::EventModulePost',
);
# get needed objects
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
my $MainObject = $Kernel::OM->Get('Kernel::System::Main');
# load ticket extension modules
my $CustomModule = $ConfigObject->Get('Ticket::CustomModule');
if ($CustomModule) {
my %ModuleList;
if ( ref $CustomModule eq 'HASH' ) {
%ModuleList = %{$CustomModule};
}
else {
$ModuleList{Init} = $CustomModule;
}
MODULEKEY:
for my $ModuleKey ( sort keys %ModuleList ) {
my $Module = $ModuleList{$ModuleKey};
next MODULEKEY if !$Module;
84
next MODULEKEY if !$MainObject->RequireBaseClass($Module);
}
}
return $Self;
}
=head2 TicketCreateNumber()
creates a new ticket number
my $TicketNumber = $TicketObject->TicketCreateNumber();
=cut
sub TicketCreateNumber {
my ( $Self, %Param ) = @_;
my $GeneratorModule = $Kernel::OM->Get('Kernel::Config')->Get('Ticket::Num-
berGenerator')
|| 'Kernel::System::Ticket::Number::AutoIncrement';
return $Kernel::OM->Get($GeneratorModule)->TicketCreateNumber(%Param);
}
=head2 GetTNByString()
creates a new ticket number
my $TicketNumber = $TicketObject->GetTNByString($Subject);
85
=cut
sub GetTNByString {
my ( $Self, $String ) = @_;
my $GeneratorModule = $Kernel::OM->Get('Kernel::Config')->Get('Ticket::Num-
berGenerator')
|| 'Kernel::System::Ticket::Number::AutoIncrement';
return $Kernel::OM->Get($GeneratorModule)->GetTNByString($String);
}
=head2 TicketCheckNumber()
checks if ticket number exists, returns ticket id if number exists.
returns the merged ticket id if ticket was merged.
only into a depth of maximum 10 merges
my $TicketID = $TicketObject->TicketCheckNumber(
Tn => '200404051004575',
);
=cut
sub TicketCheckNumber {
my ( $Self, %Param ) = @_;
# check needed stuff

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)