Skip to content

Instantly share code, notes, and snippets.

@reneeb
Last active December 4, 2019 13:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save reneeb/cb9b03645ccf28c49909ad671d3eb91e to your computer and use it in GitHub Desktop.
Save reneeb/cb9b03645ccf28c49909ad671d3eb91e to your computer and use it in GitHub Desktop.
* SetQV.pm nach /opt/otrs/Kernel/System/Ticket/Event/SetQV.pm kopieren
* SetQV.xml nach /opt/otrs/Kernel/Config/Files/XML/SetQV.xml kopieren
* Als OTRS-User auf der Kommandozeile `perl bin/otrs.Console.pl Maint::Config::Rebuild` ausführen
package Kernel::System::Ticket::Event::SetQV;
use strict;
use warnings;
use List::Util qw(first);
our @ObjectDependencies = qw(
Kernel::System::Log
Kernel::System::Ticket
Kernel::System::Group
Kernel::System::User
Kernel::System::DynamicField
Kernel::System::DynamicField::Backend
);
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
my $LogObject = $Kernel::OM->Get('Kernel::System::Log');
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
my $GroupObject = $Kernel::OM->Get('Kernel::System::Group');
my $UserObject = $Kernel::OM->Get('Kernel::System::User');
my $DynamicFieldObject = $Kernel::OM->Get('Kernel::System::DynamicField');
my $BackendObject = $Kernel::OM->Get('Kernel::System::DynamicField::Backend');
for my $Needed (qw(Data Event Config UserID)) {
if ( !$Param{$Needed} ) {
$LogObject->Log(
Priority => 'error',
Message => "Need $Needed!",
);
return;
}
}
for my $NeededData (qw(TicketID)) {
if ( !$Param{Data}->{$NeededData} ) {
$LogObject->Log(
Priority => 'error',
Message => "Need $NeededData in Data!",
);
return;
}
}
my %Ticket = $TicketObject->TicketGet(
TicketID => $Param{Data}->{TicketID},
UserID => $Param{UserID},
);
my $Queue = $Ticket{Queue};
my $Role = 'QV_' . $Queue;
my $RoleID = $GroupObject->RoleLookup( Role => $Role );
my $FieldName = 'QV';
my $Field = $DynamicFieldObject->DynamicFieldGet( Name => $FieldName );
if ( !$RoleID ) {
$BackendObject->ValueSet(
DynamicFieldConfig => $Field,
ObjectID => $Param{Data}->{TicketID},
Value => '',
UserID => $Param{UserID},
);
return 1;
}
my %RoleUser = $GroupObject->PermissionRoleUserGet(
RoleID => $RoleID,
);
if ( !%RoleUser ) {
$BackendObject->ValueSet(
DynamicFieldConfig => $Field,
ObjectID => $Param{Data}->{TicketID},
Value => '',
UserID => $Param{UserID},
);
return 1;
}
my %UserList = $UserObject->UserList(
Type => 'Long',
Valid => 1,
);
my $QV = join ', ', map{ $UserList{$_} // () }keys %RoleUser;
$BackendObject->ValueSet(
DynamicFieldConfig => $Field,
ObjectID => $Param{Data}->{TicketID},
Value => $QV,
UserID => $Param{UserID},
);
return 1;
}
1;
<?xml version="1.0" encoding="utf-8"?>
<otrs_config version="2.0" init="Application">
<Setting Name="Ticket::EventModulePost###1031-SetQV" Required="0" Valid="1">
<Description Translatable="1">Set queue responsible when ticket is moved.</Description>
<Navigation>Ticket::Events</Navigation>
<Value>
<Hash>
<Item Key="Module">Kernel::System::Ticket::Event::SetQV</Item>
<Item Key="Event">TicketQueueUpdate</Item>
</Hash>
</Value>
</Setting>
</otrs_config>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment