#substring
- my @hashrefs = (
+ my @company_hashrefs = (
{ 'company' => { op=>'ILIKE', value=>"%$value%" }, },
{ 'ship_company' => { op=>'ILIKE', value=>"%$value%" }, },
);
+ my @hashrefs = ();
+
if ( $first && $last ) {
- push @hashrefs,
+ @hashrefs = (
{ 'first' => { op=>'ILIKE', value=>"%$first%" },
'last' => { op=>'ILIKE', value=>"%$last%" },
},
- ;
+ );
} else {
- push @hashrefs,
+ @hashrefs = (
{ 'first' => { op=>'ILIKE', value=>"%$value%" }, },
{ 'last' => { op=>'ILIKE', value=>"%$value%" }, },
- ;
+ );
}
- foreach my $hashref ( @hashrefs ) {
+ foreach my $hashref ( @company_hashrefs, @hashrefs ) {
push @cust_main, qsearch( {
'table' => 'cust_main',
#contact substring
- shift @hashrefs; #no company column in contact table
-
foreach my $hashref ( @hashrefs ) {
push @cust_main,
}
}
+ # pkg_classnum
+ # all_pkg_classnums
+ # any_pkg_status
+ 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) {
+ my $select_pkg =
+ "SELECT 1 FROM cust_pkg JOIN part_pkg USING (pkgpart) WHERE ".
+ "cust_pkg.custnum = cust_main.custnum AND $_ ";
+ if ( not $params->{'any_pkg_status'} ) {
+ $select_pkg .= 'AND '.FS::cust_pkg->active_sql;
+ }
+ push @where, "EXISTS($select_pkg)";
+ }
+ }
+ }
##
# setup queries, subs, etc. for the search