summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2013-12-06 14:41:55 -0800
committerMark Wells <mark@freeside.biz>2013-12-06 14:41:55 -0800
commit701888cb344e68274df2f95494a5c48b0773d908 (patch)
treec33e5359719d033820290a1f922961d279e69169 /FS
parentec02246ea0218838def2b12b0b987f71662d1761 (diff)
advanced customer report: search by package class, #25531
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/cust_main/Search.pm25
1 files changed, 25 insertions, 0 deletions
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