#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,
sub email_search {
my %options = @_;
- local($DEBUG) = 1;
-
my $email = delete $options{'email'};
- #we're only being used by RT at the moment... no agent virtualization yet
+ #no agent virtualization yet
#my $agentnums_sql = $FS::CurrentUser::CurrentUser->agentnums_sql;
my @cust_main = ();
}
}
+ ##
+ # city
+ ##
+ if ( $params->{'city'} =~ /\S/ ) {
+ my $city = dbh->quote($params->{'city'});
+ push @where, "EXISTS(
+ SELECT 1 FROM cust_location
+ WHERE cust_location.custnum = cust_main.custnum
+ AND cust_location.city = $city
+ )";
+ }
+
+ ##
+ # county
+ ##
+ if ( $params->{'county'} =~ /\S/ ) {
+ my $county = dbh->quote($params->{'county'});
+ push @where, "EXISTS(
+ SELECT 1 FROM cust_location
+ WHERE cust_location.custnum = cust_main.custnum
+ AND cust_location.county = $county
+ )";
+ }
+
+ ##
+ # state
+ ##
+ if ( $params->{'state'} =~ /\S/ ) {
+ my $state = dbh->quote($params->{'state'});
+ push @where, "EXISTS(
+ SELECT 1 FROM cust_location
+ WHERE cust_location.custnum = cust_main.custnum
+ AND cust_location.state = $state
+ )";
+ }
+
##
# zipcode
##
)";
}
+ ##
+ # country
+ ##
+ if ( $params->{'country'} =~ /^(\w\w)$/ ) {
+ my $country = uc($1);
+ push @where, "EXISTS(
+ SELECT 1 FROM cust_location
+ WHERE cust_location.custnum = cust_main.custnum
+ AND cust_location.country = '$country'
+ )";
+ }
+
###
# refnum
###
AND dest = 'POST' )"
if $params->{'no_POST'};
+ ##
+ # "tax exempt" checkbox
+ ##
+ push @where, "cust_main.tax = 'Y'"
+ if $params->{'tax'};
+
+ ##
+ # "not tax exempt" checkbox
+ ##
+ push @where, "(cust_main.tax = '' OR cust_main.tax IS NULL )"
+ if $params->{'no_tax'};
+
##
# dates
##
}
}
+ # 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
'ON (cust_main.'.$pre.'locationnum = '.$pre.'location.locationnum) ';
}
+ # always make referral available in results
+ # (maybe we should be using FS::UI::Web::join_cust_main instead?)
+ $addl_from .= ' LEFT JOIN (select refnum, referral from part_referral) AS part_referral_x ON (cust_main.refnum = part_referral_x.refnum) ';
+
my $count_query = "SELECT COUNT(*) FROM cust_main $addl_from $extra_sql";
my @select = (
'cust_main.custnum',
+ 'cust_main.salesnum',
# there's a good chance that we'll need these
'cust_main.bill_locationnum',
'cust_main.ship_locationnum',