diff options
author | Ivan Kohler <ivan@freeside.biz> | 2017-08-26 15:01:21 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2017-08-26 15:01:21 -0700 |
commit | c742a74ec444c4606006a14e814d06e0b1795ea4 (patch) | |
tree | d1d7427586aa45c74b7e56b3b93d6b881491d683 | |
parent | 6145063b291a18aa9699295d373ccefad627f12e (diff) |
referral status search, RT#75757
-rw-r--r-- | FS/FS/cust_main/Search.pm | 20 | ||||
-rwxr-xr-x | httemplate/search/cust_main.html | 2 | ||||
-rwxr-xr-x | httemplate/search/report_cust_main.html | 26 |
3 files changed, 37 insertions, 11 deletions
diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm index 6d7a9b218..7d0e43d64 100644 --- a/FS/FS/cust_main/Search.pm +++ b/FS/FS/cust_main/Search.pm @@ -884,10 +884,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 0743829cb..7729da419 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 54e1bb6e3..e1ce26dcb 100755 --- a/httemplate/search/report_cust_main.html +++ b/httemplate/search/report_cust_main.html @@ -113,6 +113,25 @@ <TH CLASS="background" COLSPAN=2> </TH> </TR> <TR> + <TH CLASS="background" COLSPAN=2 ALIGN="left"><FONT SIZE="+1"><% mt('Referral search options') |h %></FONT></TH> + </TR> + + <& /elements/tr-input-text.html, + 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', + &> + + <TR> + <TH CLASS="background" COLSPAN=2> </TH> + </TR> + <TR> <TH CLASS="background" COLSPAN=2 ALIGN="left"><FONT SIZE="+1"><% mt('Package search options') |h %></FONT></TH> </TR> @@ -344,13 +363,6 @@ <TH ALIGN="right" VALIGN="center"><% mt('Search historical addresses') %></TH> <TD><INPUT TYPE="checkbox" NAME="location_history" VALUE="1"></TD> - <& /elements/tr-input-text.html, - label => emt('At least this many referrals'), - field => 'with_referrals', - size => 4, - maxlength => 4, - &> - </TABLE> <BR> |