OnQueueChangeResetPriorityAndDueDate

From Request Tracker Wiki
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;