From 701888cb344e68274df2f95494a5c48b0773d908 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Fri, 6 Dec 2013 14:41:55 -0800 Subject: [PATCH] advanced customer report: search by package class, #25531 --- FS/FS/cust_main/Search.pm | 25 +++++++++++++++++++++++++ httemplate/search/cust_main.html | 3 ++- httemplate/search/report_cust_main.html | 17 +++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm index b1438619b..b52b3596a 100644 --- a/FS/FS/cust_main/Search.pm +++ b/FS/FS/cust_main/Search.pm @@ -949,6 +949,31 @@ sub search { } } + # pkg_classnum + if ( $params->{'pkg_classnum'} ) { + my @pkg_classnums = ref( $params->{'pkg_classnum'} ) ? + @{ $params->{'pkg_classnum'} } : + $params->{'pkg_classnum'}; + @pkg_classnums = grep /^(\d+)$/, @pkg_classnums; + + if ( @pkg_classnums ) { + + my @pkg_where; + if ( $params->{'all_pkg_classnums'} ) { + push @pkg_where, "part_pkg.classnum = $_" foreach @pkg_classnums; + } else { + push @pkg_where, + 'part_pkg.classnum IN('. join(',', @pkg_classnums).')'; + } + foreach (@pkg_where) { + push @where, "EXISTS(". + "SELECT 1 FROM cust_pkg JOIN part_pkg USING (pkgpart) WHERE ". + "cust_pkg.custnum = cust_main.custnum AND ". + $_ . ' AND ' . FS::cust_pkg->active_sql . + ')'; + } + } + } ## # setup queries, subs, etc. for the search diff --git a/httemplate/search/cust_main.html b/httemplate/search/cust_main.html index 66a3a9825..b97a4ef60 100755 --- a/httemplate/search/cust_main.html +++ b/httemplate/search/cust_main.html @@ -47,6 +47,7 @@ my @scalars = qw ( cancelled_pkgs cust_fields flattened_pkgs all_tags + all_pkg_classnums ); for my $param ( @scalars ) { @@ -55,7 +56,7 @@ for my $param ( @scalars ) { } #lists -for my $param (qw( classnum refnum payby tagnum )) { +for my $param (qw( classnum refnum payby tagnum pkg_classnum )) { $search_hash{$param} = [ $cgi->param($param) ]; } diff --git a/httemplate/search/report_cust_main.html b/httemplate/search/report_cust_main.html index 1ceb48e1e..4309fbb7f 100755 --- a/httemplate/search/report_cust_main.html +++ b/httemplate/search/report_cust_main.html @@ -119,6 +119,23 @@ + + With package of class + + <& /elements/select-pkg_class.html, + 'field' => 'pkg_classnum', + 'multiple' => 1, + &> +
+ + Any of these +
+ + All of these +
+ + + <& /elements/tr-select-payby.html, 'payby_type' => 'cust', 'multiple' => 1, -- 2.11.0