summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-05-09 17:50:27 -0500
committerJonathan Prykop <jonathan@freeside.biz>2016-05-09 18:02:48 -0500
commit8d56875d788f0bc4e1dd3338e7cc7fd26d63c52f (patch)
tree13ae2cf26db21e207bc39fa99ffda62917d9e5ae
parent0e1145ddaed12275fca87cd352ee5ce85aa62344 (diff)
RT#41124: Backend Unti Search
-rwxr-xr-xhttemplate/edit/process/cust_main.cgi4
-rwxr-xr-xhttemplate/search/cust_main.cgi20
2 files changed, 16 insertions, 8 deletions
diff --git a/httemplate/edit/process/cust_main.cgi b/httemplate/edit/process/cust_main.cgi
index 82ec50c36..6961d18c0 100755
--- a/httemplate/edit/process/cust_main.cgi
+++ b/httemplate/edit/process/cust_main.cgi
@@ -97,8 +97,8 @@ if ( ($cgi->param('same') || '') eq 'Y' ) {
# but explicitly avoid setting ship_ fields
my $new = new FS::cust_main ( {
- map { ( $_, scalar($cgi->param($_)) ) } (fields('cust_main')),
- map { ( "ship_$_", '' ) } (FS::cust_main->location_fields)
+ (map { ( $_, scalar($cgi->param($_)) ) } (fields('cust_main'))),
+ (map { ( "ship_$_", '' ) } (FS::cust_main->location_fields))
} );
$new->invoice_noemail( ($cgi->param('invoice_email') eq 'Y') ? '' : 'Y' );
diff --git a/httemplate/search/cust_main.cgi b/httemplate/search/cust_main.cgi
index 4e624eb51..aa8c079e1 100755
--- a/httemplate/search/cust_main.cgi
+++ b/httemplate/search/cust_main.cgi
@@ -704,12 +704,20 @@ sub address2search {
or errorpage(emt("Illegal address2"));
my $address2 = $1;
- push @cust_main, qsearch( 'cust_main',
- { 'address2' => { 'op' => 'ILIKE',
- 'value' => $address2 } } );
- push @cust_main, qsearch( 'cust_main',
- { 'ship_address2' => { 'op' => 'ILIKE',
- 'value' => $address2 } } );
+ # matching at the start or end of an address, but not in the middle
+ my @where;
+ foreach my $toggle (0,1) {
+ push @where, 'LOWER(cust_location.address2) LIKE LOWER('
+ . dbh->quote($toggle ? $address2 . '%' : '%' . $address2)
+ . ')';
+ }
+
+ push @cust_main, qsearch({
+ 'debug' => 1,
+ 'table' => 'cust_main',
+ 'addl_from' => 'JOIN cust_location ON (cust_location.locationnum IN (cust_main.bill_locationnum, cust_main.ship_locationnum))',
+ 'extra_sql' => 'WHERE ' . join(' OR ',@where),
+ });
\@cust_main;
}