From efb2486d14bb726c53a6f06e6b877352c648c2fc Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 10 Sep 2013 22:20:06 -0700 Subject: [PATCH] improve performance of package ordering, RT#24955, fallout from future start dates, RT#20686 --- FS/FS/part_pkg.pm | 23 +++++------------------ httemplate/misc/cust-part_pkg.cgi | 11 +++++++++-- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 8db0e9902..332bb62be 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -875,28 +875,15 @@ sub can_discount { 0; } # whether the plan allows changing the start date sub can_start_date { 1; } -# the default start date; takes an FS::cust_main as an argument -sub default_start_date { +# the delay start date if present +sub delay_start_date { my $self = shift; - my $cust_main = shift; - my $conf = FS::Conf->new; - if ( $self->delay_start ) { - my $delay = $self->delay_start; + my $delay = $self->delay_start or return ''; - my ($mday,$mon,$year) = (localtime(time))[3,4,5]; - my $start_date = timelocal(0,0,0,$mday,$mon,$year) + 86400 * $delay; - return $start_date; + my ($mday,$mon,$year) = (localtime(time))[3,4,5]; + timelocal(0,0,0,$mday,$mon,$year) + 86400 * $delay; - } elsif ( $conf->exists('order_pkg-no_start_date') ) { - - return '' - - } else { - - return $cust_main->next_bill_date; - - } } sub freqs_href { diff --git a/httemplate/misc/cust-part_pkg.cgi b/httemplate/misc/cust-part_pkg.cgi index 4662be15e..178d12e04 100644 --- a/httemplate/misc/cust-part_pkg.cgi +++ b/httemplate/misc/cust-part_pkg.cgi @@ -23,10 +23,17 @@ my @part_pkg = qsearch({ 'order_by' => 'ORDER BY pkg', }); -my $date_format = FS::Conf->new->config('date_format') || '%m/%d/%Y'; +my $conf = new FS::Conf; + +my $date_format = $conf->config('date_format') || '%m/%d/%Y'; + +my $default_start_date = $conf->exists('order_pkg-no_start-date') + ? '' + : $cust_main->next_bill_date; my @return = map { - my $start_date = $_->default_start_date($cust_main); + my $start_date = $_->delay_start_date + || $default_start_date; $start_date = time2str($date_format, $start_date) if $start_date; ( $_->pkgpart, -- 2.11.0