}
}
+ # 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
cancelled_pkgs
cust_fields flattened_pkgs
all_tags
+ all_pkg_classnums
);
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) ];
}
</TD>
</TR>
+ <TR>
+ <TD ALIGN="right">With package of class</TD>
+ <TD>
+ <& /elements/select-pkg_class.html,
+ 'field' => 'pkg_classnum',
+ 'multiple' => 1,
+ &>
+ <DIV STYLE="display:inline-block; vertical-align:baseline">
+ <INPUT TYPE="radio" NAME="all_pkg_classnums" VALUE="0" CHECKED>
+ Any of these
+ <BR>
+ <INPUT TYPE="radio" NAME="all_pkg_classnums" VALUE="1">
+ All of these
+ </DIV>
+ </TD>
+ </TR>
+
<& /elements/tr-select-payby.html,
'payby_type' => 'cust',
'multiple' => 1,