X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FRecord.pm;h=7adfc267832aa7cf1f9406f35592cf33ccbcfb58;hb=008524b8e963831999983769f7fec11f55a72f16;hp=59867aae8216b6b304b70971f455e57cc12d721a;hpb=d10fe3d48da3f3bdb423efe42d624e9d1013c958;p=freeside.git diff --git a/rt/lib/RT/Record.pm b/rt/lib/RT/Record.pm index 59867aae8..7adfc2678 100755 --- a/rt/lib/RT/Record.pm +++ b/rt/lib/RT/Record.pm @@ -1796,8 +1796,8 @@ sub _AddCustomFieldValue { $i++; if ( $i < $cf_values ) { my ( $val, $msg ) = $cf->DeleteValueForObject( - Object => $self, - Content => $value->Content + Object => $self, + Id => $value->id, ); unless ($val) { return ( 0, $msg ); @@ -1813,31 +1813,14 @@ sub _AddCustomFieldValue { $values->RedoSearch if $i; # redo search if have deleted at least one value } - my ( $old_value, $old_content ); - if ( $old_value = $values->First ) { - $old_content = $old_value->Content; - $old_content = undef if defined $old_content && !length $old_content; - - my $is_the_same = 1; - if ( defined $args{'Value'} ) { - $is_the_same = 0 unless defined $old_content - && $old_content eq $args{'Value'}; - } else { - $is_the_same = 0 if defined $old_content; - } - if ( $is_the_same ) { - my $old_content = $old_value->LargeContent; - if ( defined $args{'LargeContent'} ) { - $is_the_same = 0 unless defined $old_content - && $old_content eq $args{'LargeContent'}; - } else { - $is_the_same = 0 if defined $old_content; - } - } - - return $old_value->id if $is_the_same; + if ( my $entry = $values->HasEntry($args{'Value'}, $args{'LargeContent'}) ) { + return $entry->id; } + my $old_value = $values->First; + my $old_content; + $old_content = $old_value->Content if $old_value; + my ( $new_value_id, $value_msg ) = $cf->AddValueForObject( Object => $self, Content => $args{'Value'}, @@ -1904,6 +1887,13 @@ sub _AddCustomFieldValue { # otherwise, just add a new value and record "new value added" else { + if ( !$cf->Repeated ) { + my $values = $cf->ValuesForObject($self); + if ( my $entry = $values->HasEntry($args{'Value'}, $args{'LargeContent'}) ) { + return $entry->id; + } + } + my ($new_value_id, $msg) = $cf->AddValueForObject( Object => $self, Content => $args{'Value'},