summaryrefslogtreecommitdiff
path: root/httemplate/search/cust_main.cgi
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2016-03-04 16:56:33 -0800
committerIvan Kohler <ivan@freeside.biz>2016-03-04 16:56:33 -0800
commite4364530d5de0f2dc115d7a9441960e989bca757 (patch)
tree5f8e32228111f99e9dbecb32df9dcb558442ddad /httemplate/search/cust_main.cgi
parent900d4d72315d52f8838f397522e0cae238f38811 (diff)
improve search for one large customer, RT#39822
Diffstat (limited to 'httemplate/search/cust_main.cgi')
-rwxr-xr-xhttemplate/search/cust_main.cgi59
1 files changed, 29 insertions, 30 deletions
diff --git a/httemplate/search/cust_main.cgi b/httemplate/search/cust_main.cgi
index 11cd3a3..96f5af9 100755
--- a/httemplate/search/cust_main.cgi
+++ b/httemplate/search/cust_main.cgi
@@ -4,6 +4,7 @@
% } else {
<% $cgi->redirect(popurl(2). "view/cust_main.cgi?". $cust_main[0]->custnum) %>
% }
+% $m->abort;
%} elsif ( scalar(@cust_main) == 0 ) {
% errorpage(emt("No matching customers found!"));
% } # errorpage quits, so we don't need an 'else' below
@@ -496,36 +497,34 @@ if ( $cgi->param('browse')
@cust_main = grep { !$saw{$_->custnum}++ } @cust_main;
}
-my $pkgs_method = $conf->exists('hidecancelledpackages')
- ? 'ncancelled_pkgs'
- : 'all_pkgs';
-
-#false laziness w/httemplate/view/cust_main/packages.html
-my $select = join(',',
- 'cust_pkg.*',
- 'part_pkg.*',
- 'setup_option.optionvalue AS _opt_setup_fee',
- 'recur_option.optionvalue AS _opt_recur_fee',
- );
-
-my $addl_from = qq{
- LEFT JOIN part_pkg USING ( pkgpart )
- LEFT JOIN part_pkg_option AS setup_option
- ON ( cust_pkg.pkgpart = setup_option.pkgpart
- AND setup_option.optionname = 'setup_fee' )
- LEFT JOIN part_pkg_option AS recur_option
- ON ( cust_pkg.pkgpart = recur_option.pkgpart
- AND recur_option.optionname = 'recur_fee' )
-};
-
-local($FS::cust_pkg::cache_enabled) = 1; #for $cust_pkg->part_pkg
-my %all_pkgs = map { $_->custnum =>
- [ $_->$pkgs_method({ select => $select,
- addl_from => $addl_from,
- })
- ];
- }
- @cust_main;
+my %all_pkgs = ();
+if ( scalar(@cust_main) > 1 || $cgi->param('referral_custnum') ) {
+
+ my $pkgs_method = $conf->exists('hidecancelledpackages')
+ ? 'ncancelled_pkgs'
+ : 'all_pkgs';
+
+ #false laziness w/httemplate/view/cust_main/packages.html
+ my $select = join(',',
+ 'cust_pkg.*',
+ 'part_pkg.*',
+ 'setup_option.optionvalue AS _opt_setup_fee',
+ 'recur_option.optionvalue AS _opt_recur_fee',
+ );
+
+ my $addl_from = ' LEFT JOIN part_pkg USING ( pkgpart ) '.
+ FS::part_pkg->join_options_sql;
+
+ local($FS::cust_pkg::cache_enabled) = 1; #for $cust_pkg->part_pkg
+ %all_pkgs = map { $_->custnum =>
+ [ $_->$pkgs_method({ select => $select,
+ addl_from => $addl_from,
+ })
+ ];
+ }
+ @cust_main;
+
+}
sub last_sort {
lc($a->getfield('last')) cmp lc($b->getfield('last'))