- my @cust_main = ();
-
- #warn $p->{'search'};
- if ( $p->{'search'} =~ /^\s*(\d+)\s*$/ ) { # customer # search
- push @cust_main, qsearch('cust_main', { 'agentnum' => $agentnum,
- 'custnum' => $1 } );
- } elsif ( $p->{'search'} =~ /^\s*(\S.*\S)\s*$/ ) { #value search
- my $value = lc($1);
- my $q_value = dbh->quote($value);
-
- #exact
- my $sql = " AND ( LOWER(last) = $q_value OR LOWER(company) = $q_value";
- $sql .= " OR LOWER(ship_last) = $q_value OR LOWER(ship_company) = $q_value"
- if defined dbdef->table('cust_main')->column('ship_last');
- $sql .= ' )';
-
- push @cust_main, qsearch( 'cust_main',
- { 'agentnum' => $agentnum },
- '',
- $sql
- );
-
- unless ( @cust_main ) {
- warn "no exact match, trying substring/fuzzy\n";
-
- #still some false laziness w/ search/cust_main.cgi
-
- #substring
- push @cust_main, qsearch( 'cust_main',
- { 'agentnum' => $agentnum,
- 'last' => { 'op' => 'ILIKE',
- 'value' => "%$q_value%" } } );
-
- push @cust_main, qsearch( 'cust_main',
- { 'agentnum' => $agentnum,
- 'ship_last' => { 'op' => 'ILIKE',
- 'value' => "%$q_value%" } } )
- if defined dbdef->table('cust_main')->column('ship_last');
-
- push @cust_main, qsearch( 'cust_main',
- { 'agentnum' => $agentnum,
- 'company' => { 'op' => 'ILIKE',
- 'value' => "%$q_value%" } } );
-
- push @cust_main, qsearch( 'cust_main',
- { 'agentnum' => $agentnum,
- 'ship_company' => { 'op' => 'ILIKE',
- 'value' => "%$q_value%" } } )
- if defined dbdef->table('cust_main')->column('ship_last');
-
- #fuzzy
- push @cust_main, FS::cust_main->fuzzy_search(
- { 'last' => $value },
- { 'agentnum' => $agentnum }
- );
- push @cust_main, FS::cust_main->fuzzy_search(
- { 'company' => $value },
- { 'agentnum' => $agentnum }
- );
-
- }
- }