From: Ivan Kohler <ivan@freeside.biz>
Date: Sat, 26 Aug 2017 22:00:59 +0000 (-0700)
Subject: referral status search, RT#75757
X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=ce7d68e984aab0075f87cf3fa5a55ee4083fadd2

referral status search, RT#75757
---

diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm
index 09558b84b..4eab474e1 100644
--- a/FS/FS/cust_main/Search.pm
+++ b/FS/FS/cust_main/Search.pm
@@ -872,10 +872,24 @@ sub search {
   ##
   # with referrals
   ##
-  if ( $params->{'with_referrals'} =~ /^\s*(\d+)\s*$/ ) {
+  if ( $params->{with_referrals} =~ /^\s*(\d+)\s*$/ ) {
+
+    my $n = $1;
+  
+    # referral status
+    my $and_status = '';
+    if ( grep { $params->{referral_status} eq $_ } FS::cust_main->statuses() ) {
+      my $method = $params->{referral_status}. '_sql';
+      $and_status = ' AND '. FS::cust_main->$method();
+      $and_status =~ s/ cust_main\./ referred_cust_main./g;
+    }
+
     push @where,
-      " $1 <= ( SELECT COUNT(*) FROM cust_main AS referred_cust_main
-                  WHERE cust_main.custnum = referred_cust_main.referral_custnum )";
+      " $n <= ( SELECT COUNT(*) FROM cust_main AS referred_cust_main
+                  WHERE cust_main.custnum = referred_cust_main.referral_custnum
+                    $and_status
+              )";
+
   }
 
   ##
diff --git a/httemplate/search/cust_main.html b/httemplate/search/cust_main.html
index 41309fdd1..c89787953 100755
--- a/httemplate/search/cust_main.html
+++ b/httemplate/search/cust_main.html
@@ -55,7 +55,7 @@ my @scalars = qw (
   all_tags
   all_pkg_classnums
   any_pkg_status
-  with_referrals
+  with_referrals referral_status
 );
 
 for my $param ( @scalars ) {
diff --git a/httemplate/search/report_cust_main.html b/httemplate/search/report_cust_main.html
index 2a313a13b..14e784454 100755
--- a/httemplate/search/report_cust_main.html
+++ b/httemplate/search/report_cust_main.html
@@ -107,13 +107,24 @@
         </TD>
       </TR>
 
+  </TABLE>
+  <BR>
+
+  <FONT CLASS="fsinnerbox-title"><% emt('Referral search options') %></FONT>
+  <TABLE CLASS="fsinnerbox">
+
       <& /elements/tr-input-text.html,
-           label     => emt('At least this many referrals'),
+           label     => emt('At least this many'),
            field     => 'with_referrals',
            size      => 4,
            maxlength => 4,
       &>
 
+      <& /elements/tr-select-cust_main-status.html,
+           label => emt('Referral status'),
+           field => 'referral_status',
+      &>
+
   </TABLE>
   <BR>