2.3.9 Release
[freeside.git] / httemplate / search / cust_bill_pkg.cgi
index c421711..5c8fac2 100644 (file)
@@ -234,13 +234,16 @@ if ( $cgi->param('refnum') =~ /^(\d+)$/ ) {
   push @where, "cust_main.refnum = $1";
 }
 
-# cust_classnum
-if ( $cgi->param('cust_classnum') ) {
-  my @classnums = grep /^\d+$/, $cgi->param('cust_classnum');
-  push @where, 'cust_main.classnum IN('.join(',',@classnums).')'
+# cust_classnum (false laziness w/ elements/cust_main_dayranges.html, elements/cust_pay_or_refund.html, prepaid_income.html, cust_bill_pay.html, cust_bill_pkg_referral.html, unearned_detail.html, cust_credit.html, cust_credit_refund.html, cust_main::Search::search_sql)
+if ( grep { $_ eq 'cust_classnum' } $cgi->param ) {
+  my @classnums = grep /^\d*$/, $cgi->param('cust_classnum');
+  push @where, 'COALESCE( cust_main.classnum, 0) IN ( '.
+                   join(',', map { $_ || '0' } @classnums ).
+               ' )'
     if @classnums;
 }
 
+
 # custnum
 if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
   push @where, "cust_main.custnum = $1";
@@ -684,12 +687,12 @@ my $pay_sub = "SELECT SUM(cust_bill_pay_pkg.amount)
 push @select, "($pay_sub) AS pay_amount";
 
 #total credits
-my $credit_sub = "SELECT SUM(cust_credit_bill_pkg.amount) AS credit_amount,
-    billpkgnum
-  FROM cust_credit_bill_pkg
-  GROUP BY billpkgnum";
-$join_pkg .= " LEFT JOIN ($credit_sub) AS item_credit USING (billpkgnum)";
-push @select,   'item_credit.credit_amount';
+my $credit_sub = "
+  SELECT SUM(cust_credit_bill_pkg.amount)
+    FROM cust_credit_bill_pkg
+      WHERE cust_bill_pkg.billpkgnum = cust_credit_bill_pkg.billpkgnum
+";
+push @select, "($credit_sub) AS credit_amount";
 
 my $where = ' WHERE '. join(' AND ', @where);