ReplyToResolved

From Request Tracker Wiki
Revision as of 17:57, 13 August 2016 by Tharn (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

HomePage > Contributions > ReplyToResolved

ReplyToResolved

Introduction

this is a simple scrip to catch correspondence/reply to ticket marked 'resolved'

the scrip condition

Save this file as e.g. /usr/local/share/request-tracker3.6/lib/RT/Condition/ReplyToResolvedTicket.pm

package RT::Condition::ReplyToResolvedTicket;
use strict;
use base qw(RT::Condition::Generic); # thanks Ruslan for the suggestion
sub IsApplicable {
   my $self = shift;
   my $ticket = $self->TicketObj;
   my $transaction = $self->TransactionObj;
   if ((($transaction->Type eq 'Correspond') || ($transaction->Type eq 'Comment'))  &&
       $ticket->Status eq 'resolved' &&
       $transaction->Creator != 1)  { # prevent loop
       return(1);
   }
   else {
       return(undef);
   }
}
eval "require RT::Condition::ReplyToResolvedTicket_Vendor";
die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/ReplyToResolved_Vendor.pm});
eval "require RT::Condition::ReplyToResolved_Local";
die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/ReplyToResolved_Local.pm});
1;

installation

The following Perl script is used to register i.e. active the above code in RT and is no longer necessary afterwards:

 #!/home/rt/perl/bin/perl
 use strict;
 use Unicode::String qw(utf8 latin1);
 # Replace this with your RT_LIB_PATH
 use lib "/home/rt/rt/lib";
 # Replace this with your RT_ETC_PATH
 use lib "/home/rt/rt/etc";
 use RT;
 use RT::Interface::CLI qw( CleanEnv GetCurrentUser );
 use RT::ScripCondition;
 CleanEnv();
 RT::LoadConfig();
 RT::Init();
 ##Drop setgid permissions
 RT::DropSetGIDPermissions();
 ##Get the current user all loaded
 our $CurrentUser = GetCurrentUser();
 unless( $CurrentUser->Id )
 {
   print "No RT user found. Please consult your RT administrator.\n";
   exit 1;
 }
 my $sc = new RT::ScripCondition($CurrentUser);
 
 $sc->Create(
            Name                 => 'On Reply to Resolved Ticket',
            Description          => "Lors d'une r�ponse � un ticket r�solu",
            ExecModule           => 'ReplyToResolvedTicket',
            ApplicableTransTypes => 'Any'
            );

problems

If you face problems with this scrip take a look at the NotResolved condition scrip as is it very similar, and I have detailled it more.

conclusion

I personally use it with the ForkIntoNewTicket scrip action in order to open a new ticket on reply to resolved ticket. I also have disabled the global scrip On Reply Open by setting "Stage:" to "disabled". For the new script use the following values:

Description: 	Replies to resolved tickets create a new ticket.
Condition: 	On Reply To Resolved Ticket
Action: 	Force Correspondence into new Ticket
Template: 	Global Template: Correspondence
Stage: 	TransactionCreate