restore fallback to customer billing address for CC transactions, RT#77641, RT#71513
[freeside.git] / FS / FS / cust_main / Search.pm
index 2460250..26f6f03 100644 (file)
@@ -383,6 +383,7 @@ sub smart_search {
       if ( $conf->exists('address1-search') && length($value) >= $min_len ) {
 
         push @cust_main, qsearch( {
+          select    => 'cust_main.*',
           table     => 'cust_main',
           addl_from => 'JOIN cust_location USING (custnum)',
           extra_sql => 'WHERE '.
@@ -464,6 +465,7 @@ sub smart_search {
     my $mask_search = FS::payinfo_Mixin->mask_payinfo('CARD', $card_search);
 
     push @cust_main, qsearch({
+      'select'    => 'cust_main.*',
       'table'     => 'cust_main',
       'addl_from' => ' JOIN cust_payby USING (custnum)',
       'hashref'   => {},
@@ -1014,8 +1016,9 @@ sub search {
 
     if ( @tagnums ) {
       if ( $params->{'all_tags'} ) {
+        my $exists = $params->{'all_tags'} eq 'all' ? 'exists' : 'not exists';
         foreach ( @tagnums ) {
-          push @where, 'exists(select 1 from cust_tag where '.
+          push @where, $exists.'(select 1 from cust_tag where '.
                        'cust_tag.custnum = cust_main.custnum and tagnum = '.
                        $_ . ')';
         }
@@ -1083,8 +1086,6 @@ sub search {
   #   (maybe we should be using FS::UI::Web::join_cust_main instead?)
   $addl_from .= ' LEFT JOIN (select refnum, referral from part_referral) AS part_referral_x ON (cust_main.refnum = part_referral_x.refnum) ';
 
-  my $count_query = "SELECT COUNT(*) FROM cust_main $addl_from $extra_sql";
-
   my @select = (
                  'cust_main.custnum',
                  'cust_main.salesnum',
@@ -1137,6 +1138,8 @@ sub search {
 
   }
 
+  my $count_query = "SELECT COUNT(DISTINCT cust_main.custnum) FROM cust_main $addl_from $extra_sql";
+
   if ($params->{'flattened_pkgs'}) {
 
     #my $pkg_join = '';