include elements/search.html the right way to avoid problems with XLS download, ...
[freeside.git] / httemplate / search / cust_bill_pkg_referral.html
index f17cea3..1289ff7 100644 (file)
@@ -135,8 +135,30 @@ my @where = ( $agentnums_sql,
               "cust_bill._date <= $ending",
             );
 
-if ( $cgi->param('status') =~ /^([a-z]+)$/ ) {
-  push @where, FS::cust_pkg->cust_status_sql . " = '$1'";
+my @status_where;
+foreach my $status ($cgi->param('status')) {
+  if ( $status =~ /^([- a-z]+)$/ ) { #"one-time charge"
+    push @status_where, "'$status'";
+  }
+}
+if ( @status_where ) {
+  push @where, '('. FS::cust_pkg->status_sql.
+    ') IN (' . join(',', @status_where) .')';
+}
+
+my @refnum;
+foreach my $refnum ($cgi->param('refnum')) {
+  if ( $refnum =~ /^\d+$/ ) {
+    push @refnum, $refnum;
+  }
+}
+if ( @refnum ) {
+  push @where, 'cust_main.refnum IN ('.join(',', @refnum).')';
+}
+
+my @cust_classnums = grep /^\d+$/, $cgi->param('cust_classnum');
+if ( @cust_classnums ) {
+  push @where, 'cust_main.classnum IN ('.join(',', @cust_classnums).')';
 }
 
 if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) {
@@ -190,7 +212,7 @@ my @orwhere;
 push @orwhere, "(cust_bill_pkg.setup > 0)" if $setup;
 push @orwhere, "($recur_sql > 0)"          if $recur;
 push @orwhere, "($usage_sql > 0)"          if $usage;
-push @where, join(' OR ', @orwhere);
+push @where, '('.join(' OR ', @orwhere).')' if @orwhere;
 
 $join_cust =  '        JOIN cust_bill     USING ( invnum )
                   LEFT JOIN cust_main     USING ( custnum )