quiet warnings about CGI::param in list context
[freeside.git] / httemplate / search / cust_event.html
index 241a026..56bf767 100644 (file)
@@ -1,6 +1,6 @@
 <& elements/search.html,
                  'title'       => $title,
-                 'html_init'   => $html_init,
+                 'html_init'   => include('.init'),
                  'menubar'     => $menubar,
                  'name'        => 'billing events',
                  'query'       => $sql_query,
@@ -134,12 +134,23 @@ my $trigger_link = sub {
     my $pkgnum = $cust_event->tablenum;
     my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
     [ "${p}view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#cust_pkg", 'tablenum' ];
+  } elsif ( $eventtable eq 'cust_pay' ) {
+    [ "${p}view/$eventtable.html?paynum=", 'tablenum' ];
+  } elsif ( $eventtable eq 'cust_statement' ) {
+    [ "${p}view/$eventtable.html?", 'tablenum' ];
+  } elsif ( $eventtable eq 'cust_pay_batch' ) {
+    [ "${p}search/cust_pay_batch.cgi?batchnum=", 'cust_pay_batch_batchnum' ];
   } else {
     [ "${p}view/$eventtable.cgi?", 'tablenum' ];
   }
 };
 
 </%once>
+<%shared>
+my @scalars = qw( agentnum status custnum invnum pkgnum failed );
+my @lists = qw( eventpart event_status );
+my %search;
+</%shared>
 <%init>
 
 my $curuser = $FS::CurrentUser::CurrentUser;
@@ -159,17 +170,12 @@ if ( $statuses[0] eq 'failed' and !defined($statuses[1]) ) {
   $title = 'Failed billing events';
 }
 
-my %search = ();
-
-my @scalars = qw( agentnum status custnum invnum pkgnum failed );
 for my $param (@scalars) {
   $search{$param} = scalar( $cgi->param($param) )
     if $cgi->param($param);
 }
-$search{event_status} = \@statuses;
 
 #lists
-my @lists = qw( eventpart );
 foreach my $param (@lists) {
   $search{$param} = [ $cgi->param($param) ];
 }
@@ -181,12 +187,16 @@ $search{'ending'}    = $ending;
 my $where = ' WHERE '. FS::cust_event->search_sql_where( \%search );
 
 my $join = FS::cust_event->join_sql() .
+  # warning: does not show the true service address for package events.
+  # the query to do that would be painfully slow.
   'LEFT JOIN cust_location bill_location '.
   'ON (cust_main.bill_locationnum = bill_location.locationnum) '.
   'LEFT JOIN cust_location ship_location '.
-  'ON (cust_main.ship_locationnum = ship_location.locationnum)';
-  # warning: does not show the true service address for package events.
-  # the query to do that would be painfully slow.
+  'ON (cust_main.ship_locationnum = ship_location.locationnum)'.
+  # include link to referral in case it's in cust-fields
+  #   (maybe we should be using FS::UI::Web::join_cust_main instead?)
+  'LEFT JOIN (select refnum, referral from part_referral) AS part_referral_x '.
+  'ON (cust_main.refnum = part_referral_x.refnum) ';
 
 my $sql_query = {
   'table'     => 'cust_event',
@@ -195,6 +205,7 @@ my $sql_query = {
                     'part_event.*',
                     #'cust_bill.custnum',
                     #'cust_bill._date AS cust_bill_date',
+                    'cust_pay_batch.batchnum AS cust_pay_batch_batchnum',
                     'cust_main.custnum AS cust_main_custnum',
                     FS::UI::Web::cust_sql_fields(),
                   ),
@@ -202,62 +213,12 @@ my $sql_query = {
   'extra_sql' => $where,
   'order_by'  => 'ORDER BY _date ASC',
   'addl_from' => $join,
-  'debug' => 2,
 };
 
 my $count_sql = "SELECT COUNT(*) FROM cust_event $join $where";
 
 my $conf = new FS::Conf;
 
-my @params = ( @scalars, qw( beginning ending ) );
-
-my $html_init = join("\n", map {
-  ( my $action = $_ ) =~ s/_$//;
-  include('/elements/progress-init.html',
-            $_.'form',
-            [ 'action', @params ],
-            "../misc/${_}events.cgi",
-            { 'message' => "Invoices re-${action}ed" }, #would be nice to show the number of them, but...
-            $_, #key
-         ),
-  qq!<FORM NAME="${_}form">!,
-  qq!<INPUT TYPE="hidden" NAME="action" VALUE="$_">!, #not used though
-  ( map { my $value = encode_entities( $search{$_} );
-          qq(<INPUT TYPE="hidden" NAME="$_" VALUE="$value">);
-        }
-        @params #keys %search
-  ),
-  ( map { my $value = encode_entities( join(',', @{ $search{$_} } ) );
-          qq(<INPUT TYPE="hidden" NAME="$_" VALUE="$value">);
-        }
-        @lists
-  ),
-  qq!</FORM>!
-} qw( print_ email_ fax_ ) ).
-
-'<SCRIPT TYPE="text/javascript">
-
-function confirm_print_process() {
-  if ( ! confirm("Are you sure you want to reprint these invoices?") ) {
-    return;
-  }
-  print_process();
-}
-function confirm_email_process() {
-  if ( ! confirm("Are you sure you want to re-email these invoices?") ) {
-    return;
-  }
-  email_process();
-}
-function confirm_fax_process() {
-  if ( ! confirm("Are you sure you want to re-fax these invoices?") ) {
-    return;
-  }
-  fax_process();
-}
-
-</SCRIPT>';
-
 my $menubar = [];
 
 if ( $curuser->access_right('Resend invoices') ) {
@@ -282,3 +243,46 @@ my $link_cust = sub {
 };
 
 </%init>
+<%def .init>
+% # action is part of the target URL, don't need to pass it as a param
+% foreach my $action (qw(print email fax)) {
+<& /elements/progress-init.html,
+  $action.'_form',
+  [ @scalars, @lists, 'beginning', 'ending' ],
+  "../misc/${action}_events.cgi",
+  { 'message' => "Invoices re-${action}ed" }, #would be nice to show the number of them, but...
+  $action.'_', #key
+&>
+<FORM NAME="<% $action %>_form">
+%   foreach my $param (@scalars, 'beginning', 'ending') {
+  <INPUT TYPE="hidden" NAME="<% $param %>" VALUE="<% $search{$param} |h %>">
+%   }
+%   foreach my $param (@lists) {
+%     foreach my $value (@{ $search{$param} }) {
+  <INPUT TYPE="hidden" NAME="<% $param %>" VALUE="<% $value |h %>">
+%     }
+%   }
+</FORM>
+% } # foreach $action
+<SCRIPT TYPE="text/javascript">
+
+function confirm_print_process() {
+  if ( ! confirm("Are you sure you want to reprint these invoices?") ) {
+    return;
+  }
+  print_process();
+}
+function confirm_email_process() {
+  if ( ! confirm("Are you sure you want to re-email these invoices?") ) {
+    return;
+  }
+  email_process();
+}
+function confirm_fax_process() {
+  if ( ! confirm("Are you sure you want to re-fax these invoices?") ) {
+    return;
+  }
+  fax_process();
+}
+</SCRIPT>
+</%def>