diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2013-01-05 14:49:44 -0800 | 
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2013-01-05 14:49:44 -0800 | 
| commit | 7a618d4493ab7a87f6eabfd1ce3630a6b3436c2f (patch) | |
| tree | ecb446f0297fe53227fc9d6b0be8ee1f4b3208d3 /rt/lib/RT/Action/Accumulate.pm | |
| parent | 170085d3536733f303e242503f0e034c65016b73 (diff) | |
| parent | 949114e0f65232b405e084bcfcff37b1fd9a2926 (diff) | |
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'rt/lib/RT/Action/Accumulate.pm')
| -rw-r--r-- | rt/lib/RT/Action/Accumulate.pm | 34 | 
1 files changed, 26 insertions, 8 deletions
| diff --git a/rt/lib/RT/Action/Accumulate.pm b/rt/lib/RT/Action/Accumulate.pm index 14675b894..0da7d2ef5 100644 --- a/rt/lib/RT/Action/Accumulate.pm +++ b/rt/lib/RT/Action/Accumulate.pm @@ -23,20 +23,38 @@ the same name, and should be single-valued fields.  sub Prepare {      my $self = shift;      my $cfname = $self->Argument or return 0; -    $self->{'inc_by'} = $self->TransactionObj->FirstCustomFieldValue($cfname)  -                        || ''; -    return ( $self->{'inc_by'} =~ /^(\d+)$/ ); +    #RT::Logger->info('Accumulate::Prepare called on transaction '. +    #                   $self->TransactionObj->Id." field $cfname"); +    my $TransObj = $self->TransactionObj; +    my $TicketObj = $self->TicketObj; +    if ( $TransObj->Type eq 'Create' and +         !defined($TransObj->FirstCustomFieldValue($cfname)) ) { +        # special case: we're creating a new ticket, and the initial value +        # may have been set on the ticket instead of the transaction, so +        # update the transaction to match +        $self->{'obj'} = $TransObj; +        $self->{'inc_by'} = $TicketObj->FirstCustomFieldValue($cfname); +    } else { +        # the usual case when updating an existing ticket +        $self->{'obj'} = $TicketObj; +        $self->{'inc_by'} = $TransObj->FirstCustomFieldValue($cfname)  +                            || ''; +    } +    return ( $self->{'inc_by'} =~ /^(\d+)$/ ); # else it's empty  }  sub Commit {      my $self = shift;      my $cfname = $self->Argument; +    my $obj = $self->{'obj'};      my $newval = $self->{'inc_by'} +  -      ($self->TicketObj->FirstCustomFieldValue($cfname) || 0); -    my ($val) = $self->TicketObj->AddCustomFieldValue( -      Field => 'Support time', -      Value => $newval, -      RecordTransaction => 0, +      ($obj->FirstCustomFieldValue($cfname) || 0); +      #RT::Logger->info('Accumulate::Commit called on '.ref($obj).' '. +      #                 $obj->Id." field $cfname"); +    my ($val) = $obj->AddCustomFieldValue( +        Field => $cfname, +        Value => $newval, +        RecordTransaction => 0,      );      return $val;  } | 
