summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-04-28 14:22:20 -0500
committerJonathan Prykop <jonathan@freeside.biz>2015-04-28 14:22:20 -0500
commit5894069e99fa3579a76e6ede96e5262de9ac32c4 (patch)
tree772d4d0c7fe7fea5695e4d6e9700ec7b625c54c0
parentc8cfa4829c828793e26082d0ce1dfb9733bbcef0 (diff)
RT#28526: Package tab takes a long time to load with lots of packages
-rw-r--r--FS/FS/cust_pkg.pm12
-rwxr-xr-xhttemplate/view/cust_main/packages/section.html1
-rw-r--r--httemplate/view/cust_main/packages/status.html2
3 files changed, 11 insertions, 4 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 6b9a8463f..07e02f92c 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -3495,6 +3495,9 @@ cust_pkg status is 'suspended' and expire is set
to cancel package within the next day (or however
many days are set in global config part_pkg-delay_cancel-days.
+Accepts option I<part_pkg-delay_cancel-days> which should be
+the value of the config setting, to avoid looking it up again.
+
This is not a real status, this only meant for hacking display
values, because otherwise treating the package as suspended is
really the whole point of the delay_cancel option.
@@ -3502,15 +3505,18 @@ really the whole point of the delay_cancel option.
=cut
sub is_status_delay_cancel {
- my ($self) = @_;
+ my ($self,%opt) = @_;
if ( $self->main_pkgnum and $self->pkglinknum ) {
return $self->main_pkg->is_status_delay_cancel;
}
return 0 unless $self->part_pkg->option('delay_cancel',1);
return 0 unless $self->status eq 'suspended';
return 0 unless $self->expire;
- my $conf = new FS::Conf;
- my $expdays = $conf->config('part_pkg-delay_cancel-days') || 1;
+ my $expdays = $opt{'part_pkg-delay_cancel-days'};
+ unless ($expdays) {
+ my $conf = new FS::Conf;
+ $expdays = $conf->config('part_pkg-delay_cancel-days') || 1;
+ }
my $expsecs = 60*60*24*$expdays;
return 0 unless $self->expire < time + $expsecs;
return 1;
diff --git a/httemplate/view/cust_main/packages/section.html b/httemplate/view/cust_main/packages/section.html
index ce965c56a..7a85d6b03 100755
--- a/httemplate/view/cust_main/packages/section.html
+++ b/httemplate/view/cust_main/packages/section.html
@@ -116,6 +116,7 @@ my %conf_opt = (
#for status.html
'cust_pkg-show_autosuspend' => $conf->exists('cust_pkg-show_autosuspend'),
'pkg_attached' => $pkg_attached,
+ 'part_pkg-delay_cancel-days' => $conf->config('part_pkg-delay_cancel-days') || 1,
#for status.html pkg-balances
'pkg-balances' => $conf->exists('pkg-balances'),
'money_char' => ( $conf->config('money_char') || '$' ),
diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html
index 5dbffb2f0..af2bb06fc 100644
--- a/httemplate/view/cust_main/packages/status.html
+++ b/httemplate/view/cust_main/packages/status.html
@@ -55,7 +55,7 @@
% } else { #status: suspended
% my ($cpr,$susplabel);
-% if ($cust_pkg->is_status_delay_cancel) {
+% if ($cust_pkg->is_status_delay_cancel(%opt)) {
% $cpr = $cust_pkg->last_cust_pkg_reason('expire');
% $susplabel = 'Suspended (Cancelled)';
% } else {