fix select and unselect all buttons on CDR bulk actions, RT#4766
[freeside.git] / httemplate / search / cdr.html
index 0facc7f..852eeba 100644 (file)
@@ -1,15 +1,50 @@
 <% include( 'elements/search.html',
                'title' => $title,
                'name'  => 'call detail records',
+
                'query' => { 'table'     => 'cdr',
                             'hashref'   => $hashref,
                            'extra_sql' => $qsearch,
                            'order_by'  => 'ORDER BY calldate',
                           },
                'count_query' => $count_query,
-               'header' => [ fields('cdr') ], #XXX fill in some nice names
-               'fields' => [ fields('cdr') ], #XXX fill in some pretty-print
-                                              # processing, etc.
+               'header' => [
+                             '', # checkbox column
+                             fields('cdr'), #XXX fill in some nice names
+                           ],
+               'fields' => [
+                             sub {
+                               return '' unless $edit_data;
+                               $areboxes = 1;
+                               my $cdr = shift;
+                               my $acctid = $cdr->acctid;
+                               qq!<INPUT NAME="acctid$acctid" TYPE="checkbox" VALUE="1">!;
+                             },
+                             fields('cdr'), #XXX fill in some pretty-print
+                                            #processing, etc.
+                           ],
+
+               'html_form'   => qq!<FORM NAME="cdrForm" ACTION="$p/misc/cdr.cgi" METHOD="POST">!,
+               #false laziness w/queue.html
+               'html_foot' => sub {
+                                if ( $areboxes ) {
+                                  '<BR><INPUT TYPE="button" VALUE="select all" onClick="setAll(true)">'.
+                                  '<INPUT TYPE="button" VALUE="unselect all" onClick="setAll(false)">'.
+                                  qq!<BR><INPUT TYPE="submit" NAME="action" VALUE="reprocess selected" onClick="return confirm('Are you sure you want to reprocess the selected CDRs?')">!.
+                                  qq!<INPUT TYPE="submit" NAME="action" VALUE="delete selected" onClick="return confirm('Are you sure you want to delete the selected CDRs?')"><BR>!.
+                                  '<SCRIPT TYPE="text/javascript">'.
+                                  '  function setAll(setTo) { '.
+                                  '    theForm = document.cdrForm;'.
+                                  '    for (i=0,n=theForm.elements.length;i<n;i++)'.
+                                  '      if (theForm.elements[i].name.indexOf("acctid") != -1)'.
+                                  '        theForm.elements[i].checked = setTo;'.
+                                  '  }'.
+                                  '</SCRIPT>';
+                                } else {
+                                  '';
+                                }
+                              },
+
              )
 %>
 <%init>
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('List rating data');
 
+my $edit_data = $FS::CurrentUser::CurrentUser->access_right('Edit rating data');
+
+my $areboxes = 0;
+
 my $title = 'Call Detail Records';
 my $hashref = {};
 
@@ -24,7 +63,6 @@ my $hashref = {};
 # and fixup $count_query
 
 my @search = ();
-my @qsearch = ();
 
 ###
 # freesidestatus
@@ -51,18 +89,22 @@ if ( $cgi->param('freesidestatus') eq 'NULL' ) {
 my $str2time_sql = str2time_sql;
 
 my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi);
-push @search,
-my @dsearch = ( "$str2time_sql calldate) >= $beginning ",
-                "$str2time_sql calldate) <= $ending"
-             );
-push @search, @dsearch;
-push @qsearch, @search;
+push @search, "$str2time_sql calldate) >= $beginning ",
+              "$str2time_sql calldate) <= $ending";
 
+###
+# duration / billsec
+###
+
+push @search, FS::UI::Web::parse_lt_gt($cgi, 'duration');
+push @search, FS::UI::Web::parse_lt_gt($cgi, 'billsec');
 
 ###
-# src/dest
+# src/dest/charged_party
 ###
 
+my @qsearch = @search;
+
 if ( $cgi->param('src') =~ /^\s*([\d\-\+\ ]+)\s*$/ ) {
   ( my $src = $1 ) =~ s/\D//g;
   $hashref->{'src'} = $src;
@@ -75,6 +117,32 @@ if ( $cgi->param('dst') =~ /^\s*([\d\-\+ ]+)\s*$/ ) {
   push @search, "dst = '$dst'";
 }
 
+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
+  push @search,  " (    charged_party = '$charged_party'
+                     OR charged_party = '1$charged_party' ) ";
+  push @qsearch, " (    charged_party = '$charged_party'
+                    OR charged_party = '1$charged_party' ) ";
+}
+
+###
+# cdrbatch
+###
+
+if ( $cgi->param('cdrbatch') ne '__ALL__' ) {
+  if ( $cgi->param('cdrbatch') eq '' ) {
+    my $search = "( cdrbatch IS NULL OR cdrbatch = '' )";
+    push @qsearch, $search;
+    push @search,  $search;
+  } else {
+    $hashref->{cdrbatch} = $cgi->param('cdrbatch');
+    push @search, 'cdrbatch = '. dbh->quote($cgi->param('cdrbatch'));
+  }
+}
+
 ###
 # finish it up
 ###