From 12a1fd3b75876dd3ec5449bc87fd8313da1b750b Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Thu, 12 May 2016 22:37:25 -0500 Subject: [PATCH] RT#41394: Add advertising source to customer fields selection [safer part_referral join] --- FS/FS/UI/Web.pm | 4 ++-- FS/FS/cust_main/Search.pm | 2 +- FS/FS/cust_payby.pm | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index f46090463..e07e682ba 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -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; diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm index 8e6d18571..11a106a68 100644 --- a/FS/FS/cust_main/Search.pm +++ b/FS/FS/cust_main/Search.pm @@ -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"; diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 50d9ee0f8..5bfb4af3f 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -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"; -- 2.11.0