X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fsearch%2Fcdr.html;h=00aee9e473bf20a7945b84d2a70bf7b3cd4ac764;hb=9b05a3660eabd3215bdebf9429eb490b41570436;hp=126c4fd43725740424199140f6b4db44b9cb3be8;hpb=0ce1ba66efbd074aca5182bb3e42bd99ff55472a;p=freeside.git diff --git a/httemplate/search/cdr.html b/httemplate/search/cdr.html index 126c4fd43..00aee9e47 100644 --- a/httemplate/search/cdr.html +++ b/httemplate/search/cdr.html @@ -23,6 +23,7 @@ @fields, #XXX fill in some pretty-print #processing, etc. ], + 'links' => \@links, 'html_form' => qq!
!, #false laziness w/queue.html @@ -69,10 +70,11 @@ my @search = (); ### my $str2time_sql = str2time_sql; +my $closing = str2time_sql_closing; my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); -push @search, "$str2time_sql calldate) >= $beginning ", - "$str2time_sql calldate) <= $ending"; +push @search, "$str2time_sql calldate $closing >= $beginning ", + "$str2time_sql calldate $closing <= $ending"; ### # duration / billsec @@ -124,7 +126,7 @@ foreach my $param ( grep /^termpart\d+status$/, $cgi->param ) { $search = "NOT EXISTS ( SELECT 1 FROM cdr_termination WHERE $where_term )"; - } elsif ( $cgi->param('freesidestatus') =~ /^([\w ]+)$/ ) { + } elsif ( $status =~ /^([\w ]+)$/ ) { #false lazienss w/cdr_termination.pm (i should be a part_termination method) my $where_term = @@ -170,25 +172,68 @@ if ( $cgi->param('charged_party') =~ /^\s*([\d\-\+\ ]+)\s*$/ ) { #push @search, "charged_party = '$charged_party'"; #XXX countrycode - my $search = " ( charged_party = '$charged_party' - OR charged_party = '1$charged_party' ) "; + my $search = " ( charged_party IN ('$charged_party', '1$charged_party') )"; push @search, $search; push @qsearch, $search; } +if ( $cgi->param('charged_party_or_src') =~ /^\s*([\d\-\+\ ]+)\s*$/ ) { + ( my $charged_party = $1 ) =~ s/\D//g; + #$hashref->{'charged_party'} = $charged_party; + #push @search, "charged_party = '$charged_party'"; + #XXX countrycode + + my $search = " ( charged_party IN ('$charged_party', '1$charged_party') + OR src IN ('$charged_party', '1$charged_party') )"; + + push @search, $search; + push @qsearch, $search; +} + + ### -# cdrbatch +# cdrbatchnum (or legacy cdrbatch) ### -if ( $cgi->param('cdrbatch') ne '__ALL__' ) { - if ( $cgi->param('cdrbatch') eq '' ) { - my $search = "( cdrbatch IS NULL OR cdrbatch = '' )"; +if ( $cgi->param('cdrbatch') ) { + + my $cdr_batch = + qsearchs('cdr_batch', { 'cdrbatch' => scalar($cgi->param('cdrbatch')) } ); + if ( $cdr_batch ) { + $hashref->{cdrbatchnum} = $cdr_batch->cdrbatchnum; + push @search, 'cdrbatchnum = '. $cdr_batch->cdrbatchnum; + } else { + die "unknown cdrbatch ". $cgi->param('cdrbatch'); + } + +} elsif ( $cgi->param('cdrbatchnum') ne '__ALL__' ) { + + if ( $cgi->param('cdrbatchnum') eq '' ) { + my $search = "( cdrbatchnum IS NULL )"; + push @qsearch, $search; + push @search, $search; + } elsif ( $cgi->param('cdrbatchnum') =~ /^(\d+)$/ ) { + $hashref->{cdrbatchnum} = $1; + push @search, "cdrbatchnum = $1"; + } + +} + +### +# acctid +### + +if ( $cgi->param('acctid') =~ /\d/ ) { + my $acctid = $cgi->param('acctid'); + $acctid =~ s/\r\n/\n/g; #browsers? + my @acctid = map { /^\s*(\d+)\s*$/ or die "guru meditation #4"; $1; } + grep { /^\s*(\d+)\s*$/ } + split(/\n/, $acctid); + if ( @acctid ) { + my $search = 'acctid IN ( '. join(',', @acctid). ' )'; push @qsearch, $search; push @search, $search; - } else { - $hashref->{cdrbatch} = $cgi->param('cdrbatch'); - push @search, 'cdrbatch = '. dbh->quote($cgi->param('cdrbatch')); } } @@ -225,9 +270,33 @@ my @header = map { $header{$_}; } else { my $header = $_; - $header =~ s/\_/ /g; + $header =~ s/\_/ /g; #//wtf ucfirst($header); } } @fields; +my $date_sub_factory = sub { + my $column = shift; + sub { + #my $cdr = shift; + my $date = shift->$column(); + $date ? time2str( '%Y-%m-%d %T', $date ) : ''; #config time2str format? + }; +}; + +my %fields = ( + #any other formatters? + map { $_ => &{ $date_sub_factory }($_) } qw( startdate answerdate enddate ) +); + +my %links = ( + 'svcnum' => + sub { $_[0]->svcnum ? [ $p.'view/svc_phone.cgi?', 'svcnum' ] : ''; }, +); + +@fields = map { exists($fields{$_}) ? $fields{$_} : $_ } @fields; + + #checkbox column +my @links = ( '', map { exists($links{$_}) ? $links{$_} : '' } @fields ); +