summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-12-09 14:43:43 -0800
committerIvan Kohler <ivan@freeside.biz>2013-12-09 14:43:43 -0800
commit8baa8e46e67f00f297d7e10dad02c131d286f40e (patch)
tree6deb093d1f803a0b0491f15c68ed09285e673b4d /FS
parenta3bc8ae55eb80d4517c64eaeb4b08df3ddf867f6 (diff)
parent701888cb344e68274df2f95494a5c48b0773d908 (diff)
Merge branch 'master' of git.freeside.biz:/home/git/freeside
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