OnQueueChangeResetPriorityAndDueDate

From Request Tracker Wiki
Revision as of 16:15, 6 April 2016 by Admin (talk | contribs) (1 revision imported)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

On Queue Change Set Priority And DueDate

This Scrip will reset the priority and due dates to the default queue values on a ticket when the queue is change.

  • Description: On Queue Change Set Priority and DueDate
  • Condition: On Queue Change
  • Action: User Defined
  • Template: Global template: Blank
  • Stage: TransactionBatch

Custom Condition:

# blank

Custom action preparation code:

return 1;

Custom action cleanup code:

my $queue_id = $self->TransactionObj->NewValue;
my $queue = RT::Queue->new( $RT::SystemUser );
$queue->Load( $queue_id );

# Reset Priority
unless ( $self->TicketObj->Priority == $queue->InitialPriority ) {
  $RT::Logger->info("On Queue Change set ticket #". $self->TicketObj->id ." priority to ". $queue->InitialPriority );
  my ( $status, $msg ) = $self->TicketObj->SetPriority( $queue->InitialPriority );
  unless ( $status ) {
    $RT::Logger->error( "Unable to assign priority to ". $queue->InitialPriority );
    $RT::Logger->error( "Message: $msg" );
  }
}
# Reset Final Priority
unless ( $self->TicketObj->FinalPriority == $queue->FinalPriority ) {
  $RT::Logger->info("On Queue Change set ticket #". $self->TicketObj->id ." final priority to ". $queue->FinalPriority );
  my ( $status, $msg ) = $self->TicketObj->SetFinalPriority( $queue->FinalPriority );
  unless ( $status ) {
    $RT::Logger->error( "Unable to assign final priority to ". $queue->FinalPriority );
    $RT::Logger->error( "Message: $msg" );
  }
}  

# Reset Due Date
my $due_date = RT::Date->new( $RT::SystemUser );
$due_date->Set( Format => 'ISO', Value => $self->TicketObj->Due );

# If queue doesn't specify due date, then clear this tickets due date.
# Otherwise, add that many days.
if ( $queue->DefaultDueIn == 0 ) {
  $due_date->Set( Format => 'ISO', Value => 0 );
} else {
  $due_date->SetToNow;
  $due_date->AddDays( $queue->DefaultDueIn );
}

$RT::Logger->info("On Queue Change set ticket #". $self->TicketObj->id ." due date to ". $due_date->ISO );
my ( $status, $msg ) = $self->TicketObj->SetDue( $due_date->ISO );
unless ( $status ) {
  $RT::Logger->error( "Unable to assign due date to ". $due_date->ISO );
}
return 1;