summaryrefslogtreecommitdiff
path: root/rt/lib
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-12-28 18:16:37 -0800
committerMark Wells <mark@freeside.biz>2012-12-28 18:16:37 -0800
commitf7fc1e6f602745565c89b82cfc08e8ee3316182d (patch)
treea41c00cde5853ed42901418c9c0336d05337f658 /rt/lib
parentb1c72635274b244a99e64c11a8fd32e4dc337625 (diff)
record support time on ticket create transactions, #20743
Diffstat (limited to 'rt/lib')
-rw-r--r--rt/lib/RT/Action/Accumulate.pm34
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;
}