service refactor!
[freeside.git] / httemplate / search / cust_bill_event.cgi
index a21fb19..7c31c25 100644 (file)
@@ -1,44 +1,56 @@
-<%
+<%init>
 
-my $title = $cgi->param('failed') ? 'Failed invoice events' : 'Invoice events';
+my $title = $cgi->param('failed')
+              ? 'Failed invoice events'
+              : 'Invoice events';
+
+my @search = ();
+
+if ( $cgi->param('agentnum') && $cgi->param('agentnum') =~ /^(\d+)$/ ) {
+  push @search, "agentnum = $1";
+  #my $agent = qsearchs('agent', { 'agentnum' => $1 } );
+  #die "unknown agentnum $1" unless $agent;
+}
 
 my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi);
+push @search, "cust_bill_event._date >= $beginning",
+              "cust_bill_event._date <= $ending";
+
+if ( $cgi->param('failed') ) {
+  push @search, "statustext != ''",
+                "statustext IS NOT NULL",
+                "statustext != 'N/A'";
+}
+
+if ( $cgi->param('part_bill_event.payby') =~ /^(\w+)$/ ) {
+  push @search, "part_bill_event.payby = '$1'";
+}
 
-##tie my %hash, 'Tie::DxHash', 
-#my %hash = (
-#      _date => { op=> '>=', value=>$beginning },
-## i wish...
-##      _date => { op=> '<=', value=>$ending },
-#);
-#$hash{'statustext'} = { op=> '!=', value=>'' }
-#  if $cgi->param('failed');
-
-my $where = " WHERE cust_bill_event._date >= $beginning".
-            "   AND cust_bill_event._date <= $ending";
-$where .= " AND statustext != '' ".
-          " AND statustext IS NOT NULL ".
-          " AND statustext != 'N/A' "
-  if $cgi->param('failed');
+#here is the agent virtualization
+push @search, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
+my $where = 'WHERE '. join(' AND ', @search );
+
+my $join = 'LEFT JOIN part_bill_event USING ( eventpart ) '.
+           'LEFT JOIN cust_bill       USING ( invnum    ) '.
+           'LEFT JOIN cust_main       USING ( custnum   ) ';
 
 my $sql_query = {
   'table'     => 'cust_bill_event',
-  #'hashref'   => \%hash,
-  'hashref'   => {}, 
   'select'    => join(', ',
-                   'cust_bill_event.*',
-                   'part_bill_event.event',
-                   'cust_bill.custnum',
-                   'cust_bill._date AS cust_bill_date',
-                   'cust_main.custnum AS cust_main_custnum',
-                   FS::UI::Web::cust_sql_fields(),
-                 ),
+                    'cust_bill_event.*',
+                    'part_bill_event.event',
+                    'cust_bill.custnum',
+                    'cust_bill._date AS cust_bill_date',
+                    'cust_main.custnum AS cust_main_custnum',
+                    FS::UI::Web::cust_sql_fields(),
+                  ),
+  'hashref'   => {}, 
   'extra_sql' => "$where ORDER BY _date ASC",
-  'addl_from' => 'LEFT JOIN part_bill_event USING ( eventpart ) '.
-                 'LEFT JOIN cust_bill       USING ( invnum    ) '.
-                 'LEFT JOIN cust_main       USING ( custnum   ) ',
+  'addl_from' => $join,
 };
 
-my $count_sql = "select count(*) from cust_bill_event $where";
+my $count_sql = "SELECT COUNT(*) FROM cust_bill_event $join $where";
 
 my $conf = new FS::Conf;
 
@@ -62,7 +74,6 @@ my $html_init = join("\n", map {
 } qw( print_ email_ fax_ ) );
 
 my $menubar =  [
-                 'Main menu' => $p,
                  'Re-print these events' =>
                    "javascript:print_process()",
                  'Re-email these events' =>
@@ -80,7 +91,8 @@ my $link_cust = sub {
     : '';
 };
 
-%><%= include( 'elements/search.html',
+</%init>
+<% include( 'elements/search.html',
                  'title'       => $title,
                  'html_init'   => $html_init,
                  'menubar'     => $menubar,