Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / httemplate / search / cust_event.html
index f8cf6b2..241a026 100644 (file)
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
                  'title'       => $title,
                  'html_init'   => $html_init,
                  'menubar'     => $menubar,
                               #'',
                               FS::UI::Web::cust_styles(),
                             ],
-             )
-%>
+&>
 <%once>
 
 my $status_sub = sub { 
   my $cust_event = shift;
 
   my $status = $cust_event->status;
-  $status .= ': '.$cust_event->statustext
+  $status .= ': '. encode_entities($cust_event->statustext)
     if $cust_event->statustext;
 
   my $part_event = $cust_event->part_event;
@@ -153,23 +152,41 @@ die "access denied"
               || $cgi->param('pkgnum')  =~ /^(\d+)$/
             );
 
-my $title = $cgi->param('failed') ? 'Failed billing events' : 'Billing events';
+my @statuses = $cgi->multi_param('event_status');
+my $title = 'Billing events';
+if ( $statuses[0] eq 'failed' and !defined($statuses[1]) ) {
+  # tweak the title if we're showing only failed events
+  $title = 'Failed billing events';
+}
 
 my %search = ();
 
-my @scalars = qw ( agentnum custnum invnum pkgnum failed );
-for my $param ( @scalars ) {
+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) ];
+}
 
 my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi);
 $search{'beginning'} = $beginning;
 $search{'ending'}    = $ending;
 
-my $where = ' WHERE '. FS::cust_event->search_sql( \%search );
+my $where = ' WHERE '. FS::cust_event->search_sql_where( \%search );
 
-my $join = FS::cust_event->join_sql();
+my $join = FS::cust_event->join_sql() .
+  '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.
 
 my $sql_query = {
   'table'     => 'cust_event',
@@ -182,8 +199,10 @@ my $sql_query = {
                     FS::UI::Web::cust_sql_fields(),
                   ),
   'hashref'   => {}, 
-  'extra_sql' => "$where ORDER BY _date ASC",
+  'extra_sql' => $where,
+  'order_by'  => 'ORDER BY _date ASC',
   'addl_from' => $join,
+  'debug' => 2,
 };
 
 my $count_sql = "SELECT COUNT(*) FROM cust_event $join $where";
@@ -208,6 +227,11 @@ my $html_init = join("\n", map {
         }
         @params #keys %search
   ),
+  ( map { my $value = encode_entities( join(',', @{ $search{$_} } ) );
+          qq(<INPUT TYPE="hidden" NAME="$_" VALUE="$value">);
+        }
+        @lists
+  ),
   qq!</FORM>!
 } qw( print_ email_ fax_ ) ).