AutoUpdate Parents with TImeWorked

From Request Tracker Wiki
Jump to navigation Jump to search
#############################################################################
#
# Scrip name: WorkFlow MemberOf on Time
# Description: Automatically add "Time Worked" to all vertical and horizontal
# parent tickets
#
# Condition: User Defined
# Action: User Defined
# Template: Global template: Blank
# Stage: TransactionBatch
# Written: 12/10/2010 - Kenn Crocker
#
# Modified: MM/DD/YYYY - Name/comments
#
#############################################################################
#
#----------------------------------------------------------------------------
# Custom condition:
#----------------------------------------------------------------------------
# Set initial values

my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;

# Get out if not for "TimeWorked"

return 0 unless ($trans->Type eq 'Set' && $trans->Field eq 'TimeWorked');

return 1;

#----------------------------------------------------------------------------
# Custom action preparation code:
#----------------------------------------------------------------------------
# Set initial values

my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;
my $Time = (($trans->NewValue) - ($trans->OldValue));
my $MemberOf = $ticket->MemberOf;

# get out if current ticket is not a "MemeberOf" (child of some parent)

return 0 unless $MemberOf;

# Loop thru each parent and add the Child's "TimeWorked" to them
# You can skip a parent ticket if it is not in active state by uncommenting
# the next statement

while( my $l = $MemberOf->Next ) {
    # next unless( $l->TargetObj->Status =~ /^(?:new|open|stalled)$/ );
    my $ParentTime = $l->TargetObj->TimeWorked;
    my $NewTime = ($ParentTime + $Time);
    $l->TargetObj->SetTimeWorked($NewTime);
}

return 1;

#----------------------------------------------------------------------------
# Custom action cleanup code: None
#----------------------------------------------------------------------------
return 1;