From 65d0561c4d456c2d600acb03a675549d098f5776 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 10 Sep 2013 22:19:29 -0700 Subject: [PATCH] improve performance of package ordering, RT#24955, fallout from future start dates, RT#20686 --- FS/FS/part_pkg.pm | 27 +++++---------------------- httemplate/misc/cust-part_pkg.cgi | 12 +++++++++--- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 15c29c4bc..e1874259e 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -1089,32 +1089,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 ''; - - } elsif ( $cust_main ) { - - return $cust_main->next_bill_date; - - } else { - - return ''; - - } } sub can_currency_exchange { 0; } diff --git a/httemplate/misc/cust-part_pkg.cgi b/httemplate/misc/cust-part_pkg.cgi index 7aebda40c..6c4524cb7 100644 --- a/httemplate/misc/cust-part_pkg.cgi +++ b/httemplate/misc/cust-part_pkg.cgi @@ -3,7 +3,6 @@ my( $custnum, $prospectnum, $classnum ) = $cgi->param('arg'); - my $agent; my $cust_main; if ( $custnum ) { @@ -32,10 +31,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