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

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;