[rt-users] "On Due Date Changed" action?

Lars Kellogg-Stedman lars at oddbit.com
Tue Nov 4 15:52:41 EST 2008


> I'd like to set up a mechanism that ensures that when the due date on
> a ticket is updated, the due date on any tickets that depend on it
> will also changes.

Well, it took a little research, but this seems to work (inspired by
http://wiki.bestpractical.com/view/OpenDependantsOnResolve):

Custom condition:
if ( ( $self->TransactionObj->Field || '' ) eq 'Due' &&
$self->TicketObj->DueObj->Unix > 0) {
  return(1);
}

return undef;

Custom action preparation code:
1;

Custom action cleanup code:
use RT::Date;

my $parents = $self->TicketObj->DependedOnBy;
my $id = $self->TicketObj->id;

my $dueDate = $self->TicketObj->DueObj;

while( my $l = $parents->Next ) {
  next unless( $l->BaseURI->IsLocal );
  next unless( $l->BaseObj->Status =~ /^(?:new|open|stalled)$/ );

  # Only update the parent due date if it's already set.
  next unless defined $l->BaseObj->DueObj->Unix > 0;

  my $parentDueDate = $l->BaseObj->DueObj;
  next unless $parentDueDate->Diff($dueDate) < 0;

  $l->BaseObj->Comment(Content => <<END);

This ticket depends on ticket \#$id which has a new due
date of ${\$dueDate->AsString}.  The due date on this
ticket has been updated accordingly.
END

  $l->BaseObj->SetDue($dueDate->ISO);

}

1;



-- 
Lars Kellogg-Stedman <lars at oddbit.com>



More information about the rt-users mailing list