From 3c54c844c665ed108c7892a154fd3972fab1f3e5 Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 16 Nov 2011 01:38:32 +0000 Subject: [PATCH] make sure not to pull up anything per-service / finish optimizing bulk service view (cust_pkg-large_pkg_size), RT#15154 --- FS/FS/cust_pkg.pm | 17 ++++++++++++----- httemplate/view/cust_main/packages/services.html | 5 ++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index b1a4d0303..4631504fc 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -1882,7 +1882,7 @@ sub available_part_svc { $self->part_pkg->pkg_svc; } -=item part_svc +=item part_svc [ OPTION => VALUE ... ] Returns a list of FS::part_svc objects representing provisioned and available services included in this package. Each FS::part_svc object also has the @@ -1896,15 +1896,20 @@ following extra fields: =item cust_pkg_svc (services) - array reference containing the provisioned services, as cust_svc objects -svcnum -label -> ($cust_svc->label)[1] - =back +Accepts one option: summarize_size. If specified and non-zero, will omit the +extra cust_pkg_svc option for objects where num_cust_svc is this size or +greater. + =cut +#svcnum +#label -> ($cust_svc->label)[1] + sub part_svc { my $self = shift; + my %opt = @_; #XXX some sort of sort order besides numeric by svcpart... my @part_svc = sort { $a->svcpart <=> $b->svcpart } map { @@ -1915,7 +1920,9 @@ sub part_svc { $part_svc->{'Hash'}{'num_avail'} = max( 0, $pkg_svc->quantity - $num_cust_svc ); $part_svc->{'Hash'}{'cust_pkg_svc'} = - $num_cust_svc ? [ $self->cust_svc($part_svc->svcpart) ] : []; + $num_cust_svc ? [ $self->cust_svc($part_svc->svcpart) ] : [] + unless exists($opt{summarize_size}) && $opt{summarize_size} + && $num_cust_svc >= $opt{summarize_size}; $part_svc->{'Hash'}{'hidden'} = $pkg_svc->hidden; $part_svc; } $self->part_pkg->pkg_svc; diff --git a/httemplate/view/cust_main/packages/services.html b/httemplate/view/cust_main/packages/services.html index 20b321483..5f458e635 100644 --- a/httemplate/view/cust_main/packages/services.html +++ b/httemplate/view/cust_main/packages/services.html @@ -10,7 +10,10 @@ function clearhint_search_cust_svc(obj, str) { } -% foreach my $part_svc ( $cust_pkg->part_svc ) { +% foreach my $part_svc ( $cust_pkg->part_svc( +% 'summarize_size' => $opt{'cust_pkg-large_pkg_size'} +% ) ) +% { % my $num_cust_svc = $cust_pkg->num_cust_svc( $part_svc->svcpart ); -- 2.11.0