diff options
author | Mark Wells <mark@freeside.biz> | 2012-12-28 18:16:37 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2012-12-28 18:16:37 -0800 |
commit | f7fc1e6f602745565c89b82cfc08e8ee3316182d (patch) | |
tree | a41c00cde5853ed42901418c9c0336d05337f658 /rt/lib | |
parent | b1c72635274b244a99e64c11a8fd32e4dc337625 (diff) |
record support time on ticket create transactions, #20743
Diffstat (limited to 'rt/lib')
-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 14675b8..03ac8e4 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; } |