summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-07-08 14:08:43 -0700
committerIvan Kohler <ivan@freeside.biz>2013-07-08 14:08:43 -0700
commit0e0109e17e7601dfcc655ff9b18a9846c0d93297 (patch)
treeb3d9e7610c687d7b5d99e485201171aa6e4828ef
parentd4a404f4eda27d51301012cfb8bd5efd89213ce1 (diff)
performance improvement for packages with many services, patch from jeff finucane, RT#23900
-rw-r--r--FS/FS/cust_pkg.pm6
1 files changed, 4 insertions, 2 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 824221fba..f97cf9126 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -2456,11 +2456,13 @@ sub _sort_cust_svc {
my $sort =
sub ($$) { my ($a, $b) = @_; $b->[1] cmp $a->[1] or $a->[2] <=> $b->[2] };
+ my %pkg_svc = map { $_->svcpart => $_ }
+ qsearch( 'pkg_svc', { 'pkgpart' => $self->pkgpart } );
+
map { $_->[0] }
sort $sort
map {
- my $pkg_svc = qsearchs( 'pkg_svc', { 'pkgpart' => $self->pkgpart,
- 'svcpart' => $_->svcpart } );
+ my $pkg_svc = $pkg_svc{ $_->svcpart } || '';
[ $_,
$pkg_svc ? $pkg_svc->primary_svc : '',
$pkg_svc ? $pkg_svc->quantity : 0,