X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_svc.pm;h=b8b64df6b878e1114f528cde0e31de6c6ae10581;hb=27096fe50f0427789579dbf28fe574ebcc39d69d;hp=f168567798f44589d2eb2a6c39935ef6d03bea5b;hpb=a8d483fa8f540586674300da75f2b5c5b4bb7b15;p=freeside.git diff --git a/FS/FS/cust_svc.pm b/FS/FS/cust_svc.pm index f16856779..b8b64df6b 100644 --- a/FS/FS/cust_svc.pm +++ b/FS/FS/cust_svc.pm @@ -642,44 +642,29 @@ CDRs are associated with svc_phone services via svc_phone.phonenum sub get_cdrs_for_update { my($self, %options) = @_; - my @cdrs = $self->get_cdrs_fromfield('charged_party', %options); - - push @cdrs, $self->get_cdrs_fromfield('src', %options) - unless $options{'disable_src'}; - - @cdrs; -} - -sub get_cdrs_fromfield { - my($self, $field, %options) = @_; - - my $default_prefix = $options{'default_prefix'}; + my @fields = ( 'charged_party' ); + push @fields, 'src' unless $options{'disable_src'}; #CDRs are now associated with svc_phone services via svc_phone.phonenum #return () unless $self->svc_x->isa('FS::svc_phone'); return () unless $self->part_svc->svcdb eq 'svc_phone'; my $number = $self->svc_x->phonenum; - my @cdrs = + my $prefix = $options{'default_prefix'}; + + my @where = map " $_ = '$number' ", @fields; + push @where, map " $_ = '$prefix$number' ", @fields + if length($prefix); + + my $extra_sql = ' AND ( '. join(' OR ', @where ). ' ) '; + + my @cdrs = qsearch( { 'table' => 'cdr', - 'hashref' => { 'freesidestatus' => '', - $field => $number - }, - 'extra_sql' => 'FOR UPDATE', + 'hashref' => { 'freesidestatus' => '', }, + 'extra_sql' => "$extra_sql FOR UPDATE", } ); - if ( length($default_prefix) ) { - push @cdrs, - qsearch( { - 'table' => 'cdr', - 'hashref' => { 'freesidestatus' => '', - $field => "$default_prefix$number", - }, - 'extra_sql' => 'FOR UPDATE', - } ); - } - @cdrs; }