OpenTicketOnAllMemberResolve

From Request Tracker Wiki
Jump to navigation Jump to search

Another ScripAction from RuslanZakirov:

Description: open tickets which has link on resolved ticket as member if all members resoved

Condition: On Status Change

Custom Condition:

Template: Global template: Blank

Action: User defined

Custom action preparation code: return 1;

Custom action cleanup code:

  return 1 if ($self->TransactionObj->NewValue !~ /^(?:resolved|deleted|rejected)$/);
  # current ticket is memeber of(child of some parents)
  my $MemberOf = $self->TicketObj->MemberOf;
  while( my $l = $MemberOf->Next ) {
    # we can't check non local objects
    next unless( $l->TargetURI->IsLocal );
    # if parent ticket is not in active state then scrip can skip it
    next unless( $l->TargetObj->Status =~ /^(?:new|open|stalled)$/ );
 
    # the parent ticket has members(current ticket is one of them)
    my $ms = $l->TargetObj->Members();
 
    my $flag = 0;
    while( my $m = $ms->Next ) {
      next unless( $m->BaseURI->IsLocal );
      next unless( $m->BaseObj->Status =~ /^(?:new|open|stalled)$/ );
      $flag = 1;
      last;
    }
    # shouldn't open parent if some children is active
    next if( $flag );
 
 # Uncomment this string if you want open ticket
 # and comment next code down to END word
 #  $l->TargetObj->SetStatus('open');
 
 # This code adds comment to the ticket
    my $id = $self->TicketObj->id;
    my $status = $self->TicketObj->Status;
    $l->TargetObj->Comment(Content => <<END);
 
 Last member(\#$id) of this ticket was $status.
 END
 # end of code that adds comment
 
  }
  return 1;

705617733494428679213672_test_num_