*finally* seems to be working under Mason. sheesh.
[freeside.git] / httemplate / search / cust_main.cgi
index b9b1d1f..b962c7c 100755 (executable)
@@ -1,27 +1,7 @@
 <%
-#<!-- $Id: cust_main.cgi,v 1.18 2001-12-03 11:33:19 ivan Exp $ -->
-
-use strict;
-#use vars qw( $conf %ncancelled_pkgs %all_pkgs $cgi @cust_main $sortby );
-#use vars qw( $conf %all_pkgs $cgi @cust_main $sortby );
-use vars qw( $conf %all_pkgs $cgi @cust_main $sortby
-             $orderby $maxrecords $limit $offset );
-use CGI;
-use CGI::Carp qw(fatalsToBrowser);
-use IO::Handle;
-use String::Approx qw(amatch);
-use FS::UID qw(dbh cgisuidsetup);
-use FS::Conf;
-use FS::Record qw(qsearch qsearchs dbdef jsearch);
-use FS::CGI qw(header menubar eidiot popurl table);
-use FS::cust_main;
-use FS::cust_svc;
-
-$cgi = new CGI;
-cgisuidsetup($cgi);
-
-$conf = new FS::Conf;
-$maxrecords = $conf->config('maxsearchrecordsperpage');
+
+my $conf = new FS::Conf;
+my $maxrecords = $conf->config('maxsearchrecordsperpage');
 
 #my $cache;
 
@@ -59,16 +39,15 @@ $maxrecords = $conf->config('maxsearchrecordsperpage');
 #) using (custnum)
 #END
 
-$orderby = ''; #removeme
-
-$limit = '';
+my $limit = '';
 $limit .= "LIMIT $maxrecords" if $maxrecords;
 
-$offset = $cgi->param('offset') || 0;
+my $offset = $cgi->param('offset') || 0;
 $limit .= " OFFSET $offset" if $offset;
 
 my $total;
 
+my(@cust_main, $sortby, $orderby);
 if ( $cgi->param('browse') ) {
   my $query = $cgi->param('browse');
   if ( $query eq 'custnum' ) {
@@ -135,10 +114,21 @@ if ( $cgi->param('browse') ) {
 
 } else {
   @cust_main=();
-  &cardsearch if $cgi->param('card_on') && $cgi->param('card');
-  &lastsearch if $cgi->param('last_on') && $cgi->param('last_text');
-  &companysearch if $cgi->param('company_on') && $cgi->param('company_text');
-  &referralsearch if $cgi->param('referral_custnum');
+  $sortby = \*last_sort;
+
+  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, @{&referralsearch}
+    if $cgi->param('referral_custnum');
+
+  if ( $cgi->param('company_on') && $cgi->param('company_text') ) {
+    $sortby = \*company_sort;
+    push @cust_main, @{&companysearch};
+  }
 
   @cust_main = grep { $_->ncancelled_pkgs || ! $_->all_pkgs } @cust_main
     if $cgi->param('showcancelledcustomers') eq '0' #see if it was set by me
@@ -146,6 +136,7 @@ if ( $cgi->param('browse') ) {
              && ! $cgi->param('showcancelledcustomers') );
 }
 
+my %all_pkgs;
 if ( $conf->exists('hidecancelledpackages' ) ) {
   %all_pkgs = map { $_->custnum => [ $_->ncancelled_pkgs ] } @cust_main;
 } else {
@@ -154,11 +145,21 @@ if ( $conf->exists('hidecancelledpackages' ) ) {
 #%all_pkgs = ();
 
 if ( scalar(@cust_main) == 1 && ! $cgi->param('referral_custnum') ) {
-  print $cgi->redirect(popurl(2). "view/cust_main.cgi?". $cust_main[0]->custnum);
-  exit;
+  if ( $cgi->param('quickpay') eq 'yes' ) {
+    print $cgi->redirect(popurl(2). "edit/cust_pay.cgi?quickpay=yes;custnum=". $cust_main[0]->custnum);
+  } else {
+    print $cgi->redirect(popurl(2). "view/cust_main.cgi?". $cust_main[0]->custnum);
+  }
+  #exit;
 } elsif ( scalar(@cust_main) == 0 ) {
+%>
+<!-- mason kludge -->
+<%
   eidiot "No matching customers found!\n";
 } else { 
+%>
+<!-- mason kludge -->
+<%
 
   $total ||= scalar(@cust_main);
   print header("Customer Search Results",menubar(
@@ -282,7 +283,12 @@ END
     }
 
     #my($rowspan) = scalar(@{$all_pkgs{$custnum}});
-    my $view = $p. 'view/cust_main.cgi?'. $custnum;
+    my $view;
+    if ( defined $cgi->param('quickpay') && $cgi->param('quickpay') eq 'yes' ) {
+      $view = $p. 'edit/cust_pay.cgi?quickpay=yes;custnum='. $custnum;
+    } else {
+      $view = $p. 'view/cust_main.cgi?'. $custnum;
+    }
     print <<END;
     <TR>
       <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$custnum</FONT></A></TD>
@@ -359,8 +365,7 @@ sub cardsearch {
   $card =~ /^(\d{13,16})$/ or eidiot "Illegal card number\n";
   my($payinfo)=$1;
 
-  push @cust_main, qsearch('cust_main',{'payinfo'=>$payinfo, 'payby'=>'CARD'});
-  $sortby=\*last_sort;
+  [ qsearch('cust_main',{'payinfo'=>$payinfo, 'payby'=>'CARD'}) ];
 }
 
 sub referralsearch {
@@ -376,12 +381,12 @@ sub referralsearch {
   } else {
     $depth = 1;
   }
-  push @cust_main, $cust_main->referral_cust_main($depth);
-  $sortby=\*last_sort;
+  [ $cust_main->referral_cust_main($depth) ];
 }
 
 sub lastsearch {
   my(%last_type);
+  my @cust_main;
   foreach ( $cgi->param('last_type') ) {
     $last_type{$_}++;
   }
@@ -390,17 +395,18 @@ sub lastsearch {
     or eidiot "Illegal last name";
   my($last)=$1;
 
-  if ( $last_type{'Exact'}
-       && ! $last_type{'Fuzzy'} 
-     #  && ! $last_type{'Sound-alike'}
-  ) {
+#  if ( $last_type{'Exact'}
+#       && ! $last_type{'Fuzzy'} 
+#     #  && ! $last_type{'Sound-alike'}
+#  ) {
 
     push @cust_main, qsearch('cust_main',{'last'=>$last});
 
     push @cust_main, qsearch('cust_main',{'ship_last'=>$last})
       if defined dbdef->table('cust_main')->column('ship_last');
 
-  } else {
+#  } else {
+  if ( $last_type{'Fuzzy'} ) {
 
     &FS::cust_main::check_and_rebuild_fuzzyfiles;
     my $all_last = &FS::cust_main::all_last;
@@ -422,12 +428,13 @@ sub lastsearch {
     }
 
   }
-  $sortby=\*last_sort;
+  \@cust_main;
 }
 
 sub companysearch {
 
   my(%company_type);
+  my @cust_main;
   foreach ( $cgi->param('company_type') ) {
     $company_type{$_}++ 
   };
@@ -436,17 +443,18 @@ sub companysearch {
     or eidiot "Illegal company";
   my($company)=$1;
 
-  if ( $company_type{'Exact'}
-       && ! $company_type{'Fuzzy'} 
-     #  && ! $company_type{'Sound-alike'}
-  ) {
+#  if ( $company_type{'Exact'}
+#       && ! $company_type{'Fuzzy'} 
+#     #  && ! $company_type{'Sound-alike'}
+#  ) {
 
     push @cust_main, qsearch('cust_main',{'company'=>$company});
 
     push @cust_main, qsearch('cust_main',{'ship_company'=>$company})
       if defined dbdef->table('cust_main')->column('ship_last');
 
-  } else {
+#  } else {
+  if ( $company_type{'Fuzzy'} ) {
 
     &FS::cust_main::check_and_rebuild_fuzzyfiles;
     my $all_company = &FS::cust_main::all_company;
@@ -468,7 +476,7 @@ sub companysearch {
     }
 
   }
-  $sortby=\*company_sort;
 
+  \@cust_main;
 }
 %>