OnQueueChangeResetPriorityAndDueDate

From Request Tracker Wiki
Revision as of 18:16, 13 August 2016 by Tharn (talk | contribs) (→‎Custom action cleanup code:)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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;