RT#41394: Add advertising source to customer fields selection [safer part_referral...
authorJonathan Prykop <jonathan@freeside.biz>
Fri, 13 May 2016 03:37:25 +0000 (22:37 -0500)
committerJonathan Prykop <jonathan@freeside.biz>
Fri, 13 May 2016 03:37:25 +0000 (22:37 -0500)
FS/FS/UI/Web.pm
FS/FS/cust_main/Search.pm
FS/FS/cust_payby.pm

index f460904..e07e682 100644 (file)
@@ -456,7 +456,7 @@ sub cust_sql_fields {
     push @extra_fields, FS::cust_main->balance_sql . " AS current_balance";
   }
 
-  push @extra_fields, 'part_referral.referral AS referral'
+  push @extra_fields, 'part_referral_x.referral AS referral'
     if grep { $_ eq 'referral' } @cust_fields;
 
   map("cust_main.$_", @fields), @location_fields, @extra_fields;
@@ -524,7 +524,7 @@ sub join_cust_main {
   }
 
   if ( !@cust_fields or grep { $_ eq 'referral' } @cust_fields ) {
-    $sql .= ' LEFT JOIN part_referral ON (cust_main.refnum = part_referral.refnum) ';
+    $sql .= ' LEFT JOIN (select refnum, referral from part_referral) AS part_referral_x ON (cust_main.refnum = part_referral_x.refnum) ';
   }
 
   $sql;
index 8e6d185..11a106a 100644 (file)
@@ -1015,7 +1015,7 @@ sub search {
 
   # always make referral available in results
   #   (maybe we should be using FS::UI::Web::join_cust_main instead?)
-  $addl_from .= ' LEFT JOIN part_referral ON (cust_main.refnum = part_referral.refnum) ';
+  $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";
 
index 50d9ee0..5bfb4af 100644 (file)
@@ -831,6 +831,9 @@ sub search_sql {
       ' LEFT JOIN cust_location AS '.$pre.'location '.
       'ON (cust_main.'.$pre.'locationnum = '.$pre.'location.locationnum) ';
   }
+  # always make referral available in results
+  #   (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_payby $addl_from $extra_sql";