From ce7d68e984aab0075f87cf3fa5a55ee4083fadd2 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Sat, 26 Aug 2017 15:00:59 -0700 Subject: [PATCH] referral status search, RT#75757 --- FS/FS/cust_main/Search.pm | 20 +++++++++++++++++--- httemplate/search/cust_main.html | 2 +- httemplate/search/report_cust_main.html | 13 ++++++++++++- 3 files changed, 30 insertions(+), 5 deletions(-) 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 @@ + +
+ + <% emt('Referral search options') %> + + <& /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', + &> +

-- 2.11.0