<%
-#<!-- $Id: cust_main.cgi,v 1.17 2001-12-03 10:59:25 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;
#) 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 $total = 0;
+my(@cust_main, $sortby, $orderby);
if ( $cgi->param('browse') ) {
my $query = $cgi->param('browse');
if ( $query eq 'custnum' ) {
or die dbh->errstr. " doing $statement";
$sth->execute or die "Error executing \"$statement\": ". $sth->errstr;
- $total = @{$sth->fetchrow_arrayref}[0];
+ $total = $sth->fetchrow_arrayref->[0];
my @just_cust_main = qsearch('cust_main',{}, '',
"$ncancelled $orderby $limit"
} 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
|| ( $conf->exists('hidecancelledcustomers')
&& ! $cgi->param('showcancelledcustomers') );
+
+ my %saw = ();
+ @cust_main = grep { !$saw{$_->custnum}++ } @cust_main;
}
+my %all_pkgs;
if ( $conf->exists('hidecancelledpackages' ) ) {
%all_pkgs = map { $_->custnum => [ $_->ncancelled_pkgs ] } @cust_main;
} else {
#%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(
}
#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>
$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 {
} 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{$_}++;
}
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;
}
}
- $sortby=\*last_sort;
+ \@cust_main;
}
sub companysearch {
my(%company_type);
+ my @cust_main;
foreach ( $cgi->param('company_type') ) {
$company_type{$_}++
};
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;
}
}
- $sortby=\*company_sort;
+ \@cust_main;
}
%>