( my $card_search = $nospace_search ) =~ s/\-//g;
$card_search =~ s/[x\*\.\_]/x/gi;
- if ( $nospace_search =~ /^[\dx]{15,16}$/i ) { #credit card search
+ if ( $card_search =~ /^[\dx]{15,16}$/i ) { #credit card search
( my $like_search = $card_search ) =~ s/x/_/g;
my $mask_search = FS::payinfo_Mixin->mask_payinfo('CARD', $card_search);
}
##
- # do the same for user
+ # parse sales person
+ ##
+
+ if ( $params->{'salesnum'} =~ /^(\d+)$/ ) {
+ push @where, ($1 > 0 ) ? "cust_main.salesnum = $1"
+ : 'cust_main.salesnum IS NULL';
+ }
+
+ ##
+ # parse usernum
##
if ( $params->{'usernum'} =~ /^(\d+)$/ and $1 ) {
##
# address
##
- if ( $params->{'address'} =~ /\S/ ) {
- my $address = dbh->quote('%'. lc($params->{'address'}). '%');
- push @where, "EXISTS(
- SELECT 1 FROM cust_location
- WHERE cust_location.custnum = cust_main.custnum
- AND (LOWER(cust_location.address1) LIKE $address OR
- LOWER(cust_location.address2) LIKE $address)
- )";
+ if ( $params->{'address'} ) {
+ # allow this to be an arrayref
+ my @values = ($params->{'address'});
+ @values = @{$values[0]} if ref($values[0]);
+ my @orwhere;
+ foreach (grep /\S/, @values) {
+ my $address = dbh->quote('%'. lc($_). '%');
+ push @orwhere,
+ "LOWER(cust_location.address1) LIKE $address",
+ "LOWER(cust_location.address2) LIKE $address";
+ }
+ if (@orwhere) {
+ push @where, "EXISTS(
+ SELECT 1 FROM cust_location
+ WHERE cust_location.custnum = cust_main.custnum
+ AND (".join(' OR ',@orwhere).")
+ )";
+ }
}
##
unless $params->{'cancelled_pkgs'};
##
- # parse without census tract checkbox
- ##
-
- push @where, "(ship_location.censustract = '' or ship_location.censustract is null)"
- if $params->{'no_censustract'};
-
- ##
- # parse with hardcoded tax location checkbox
- ##
-
- push @where, "ship_location.geocode is not null"
- if $params->{'with_geocode'};
-
- ##
# "with email address(es)" checkbox
##
}
- if ( $params->{'with_geocode'} ) {
-
- unshift @extra_headers, 'Tax location override', 'Calculated tax location';
- unshift @extra_fields, sub { my $c = shift; $c->get('geocode'); },
- sub { my $c = shift;
- $c->set('geocode', '');
- $c->geocode('cch'); #XXX only cch right now
- };
- push @select, 'geocode';
- push @select, 'zip' unless grep { $_ eq 'zip' } @select;
- push @select, 'ship_zip' unless grep { $_ eq 'ship_zip' } @select;
- }
-
my $select = join(', ', @select);
my $sql_query = {
'extra_headers' => \@extra_headers,
'extra_fields' => \@extra_fields,
};
- warn Data::Dumper::Dumper($sql_query);
+ #warn Data::Dumper::Dumper($sql_query);
$sql_query;
}