summaryrefslogtreecommitdiff
path: root/httemplate/search/cdr.html
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/search/cdr.html')
-rw-r--r--httemplate/search/cdr.html50
1 files changed, 38 insertions, 12 deletions
diff --git a/httemplate/search/cdr.html b/httemplate/search/cdr.html
index a557596..5544ff5 100644
--- a/httemplate/search/cdr.html
+++ b/httemplate/search/cdr.html
@@ -55,6 +55,8 @@ die "access denied"
my $edit_data = $FS::CurrentUser::CurrentUser->access_right('Edit rating data');
+my $conf = new FS::Conf;
+
my $areboxes = 0;
my $title = 'Call Detail Records';
@@ -145,17 +147,24 @@ foreach my $param ( grep /^termpart\d+status$/, $cgi->param ) {
}
###
-# src/dest/charged_party
+# src/dest/charged_party/svcnum
###
-if ( $cgi->param('src') =~ /^\s*([\d\-\+\ ]+)\s*$/ ) {
- ( my $src = $1 ) =~ s/\D//g;
+my $phonenum = qr/^\s*([\d\-\+\ ]+)\s*$/;
+my $x = qr/\D/;
+if ( $conf->exists('svc_phone-allow_alpha_phonenum') ) {
+ $phonenum = qr/^\s*([\d\-\+\ A-Za-z]+)\s*$/;
+ $x = qr/[^\dA-Za-z]/;
+}
+
+if ( $cgi->param('src') =~ $phonenum ) {
+ ( my $src = $1 ) =~ s/$x//g;
$hashref->{'src'} = $src;
push @search, "src = '$src'";
}
-if ( $cgi->param('dst') =~ /^\s*([\d\-\+ ]+)\s*$/ ) {
- ( my $dst = $1 ) =~ s/\D//g;
+if ( $cgi->param('dst') =~ $phonenum ) {
+ ( my $dst = $1 ) =~ s/$x//g;
$hashref->{'dst'} = $dst;
push @search, "dst = '$dst'";
}
@@ -166,15 +175,32 @@ if ( $cgi->param('dcontext') =~ /^\s*(.+)\s*$/ ) {
push @search, "dcontext = '$dcontext'";
}
-if ( $cgi->param('charged_party') =~ /^\s*([\d\-\+\ ]+)\s*$/ ) {
- ( my $charged_party = $1 ) =~ s/\D//g;
- #$hashref->{'charged_party'} = $charged_party;
- #push @search, "charged_party = '$charged_party'";
- #XXX countrycode
+if ( $cgi->param('charged_party') ) {
+
+ my @cp = map { $_, "1$_" }
+ split(/\s*,\s*/, $cgi->param('charged_party') );
+
+ my $search = 'charged_party IN ('. join(',', map dbh->quote($_), @cp). ')';
+
+ push @search, $search;
+ push @qsearch, $search;
+}
+
+if ( $cgi->param('charged_party_or_src') ) {
+
+ my @cp = map { $_, "1$_" }
+ split(/\s*,\s*/, $cgi->param('charged_party_or_src') );
+ my $in = join(',', map dbh->quote($_), @cp);
+
+ my $search = "( charged_party IN ($in) OR src IN ($in) )";
- my $search = " ( charged_party = '$charged_party'
- OR charged_party = '1$charged_party' ) ";
+ push @search, $search;
+ push @qsearch, $search;
+}
+if ( $cgi->param('svcnum') =~ /^([\d, ]+)$/ ) {
+ my $svcnum = $1;
+ my $search = "svcnum IN ($svcnum)";
push @search, $search;
push @qsearch, $search;
}