phone number search (Bug#422)
[freeside.git] / httemplate / search / cust_main.cgi
index b456560..1bd5fb6 100755 (executable)
@@ -159,7 +159,7 @@ if ( $cgi->param('browse')
   }
 
   my @just_cust_main;
-  if ( driver_name eq /mysql/ ) {
+  if ( driver_name eq 'mysql' ) {
     @just_cust_main = qsearch('cust_main', \%search, 'cust_main.*',
                               ",temp1_$$,temp2_$$ $ncancelled $orderby $limit");
   } else {
@@ -192,12 +192,16 @@ if ( $cgi->param('browse')
   @cust_main=();
   $sortby = \*last_sort;
 
+  push @cust_main, @{&custnumsearch}
+    if $cgi->param('custnum_on') && $cgi->param('custnum_text');
   push @cust_main, @{&cardsearch}
     if $cgi->param('card_on') && $cgi->param('card');
   push @cust_main, @{&lastsearch}
     if $cgi->param('last_on') && $cgi->param('last_text');
   push @cust_main, @{&companysearch}
     if $cgi->param('company_on') && $cgi->param('company_text');
+  push @cust_main, @{&phonesearch}
+    if $cgi->param('phone_on') && $cgi->param('phone_text');
   push @cust_main, @{&referralsearch}
     if $cgi->param('referral_custnum');
 
@@ -446,6 +450,16 @@ sub custnum_sort {
   $a->getfield('custnum') <=> $b->getfield('custnum');
 }
 
+sub custnumsearch {
+
+  my $custnum = $cgi->param('custnum_text');
+  $custnum =~ s/\D//g;
+  $custnum =~ /^(\d{1,23})$/ or eidiot "Illegal customer number\n";
+  my $custnum = $1;
+  
+  [ qsearchs('cust_main', { 'custnum' => $custnum } ) ];
+}
+
 sub cardsearch {
 
   my($card)=$cgi->param('card');
@@ -594,4 +608,30 @@ sub companysearch {
 
   \@cust_main;
 }
+
+sub phonesearch {
+  my @cust_main;
+
+  my $phone = $cgi->param('phone_text');
+
+  #false laziness with Record::ut_phonen, only works with US/CA numbers...
+  $phone =~ s/\D//g;
+  $phone =~ /^(\d{3})(\d{3})(\d{4})(\d*)$/
+    or eidiot gettext('illegal_phone'). ": $phone";
+  $phone = "$1-$2-$3";
+  $phone .= " x$4" if $4;
+
+  my @fields = qw(daytime night fax);
+  push @fields, qw(ship_daytime ship_night ship_fax)
+    if defined dbdef->table('cust_main')->column('ship_last');
+
+  for my $field ( @fields ) {
+    push @cust_main, qsearch ( 'cust_main', 
+                               { $field => { 'op'    => 'LIKE',
+                                             'value' => "$phone%" } } );
+  }
+
+  \@cust_main;
+}
+
 %>