fix adding packages to quotations, RT#26667, fallout from 65d0561c4d456c2d600acb03a67...
[freeside.git] / httemplate / misc / cust-part_pkg.cgi
index 7aebda4..e129347 100644 (file)
@@ -3,7 +3,6 @@
 
 my( $custnum, $prospectnum, $classnum ) = $cgi->param('arg');
 
-
 my $agent;
 my $cust_main;
 if ( $custnum ) {
@@ -32,16 +31,34 @@ 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 ? $cust_main->next_bill_date
+                                        : '';
+
+#num_billing_pkgs may be slightly better (will allow you to fill in a start
+# date in the weird edge case where you're using sync_next_bill and
+# prorate_defer_bill in flat.pm and there's one-time charges hanging around
+# for this customer but no active ones)
+#but we don't have an easy method for that, and definitely don't want to pull
+# all package objects
+my $num_ncancelled_pkgs = $cust_main ? $cust_main->num_ncancelled_pkgs : 0;
 
 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,
                       $_->pkg_comment,
                       $_->can_discount,
-                      $_->can_start_date,
+                      $_->can_start_date(
+                        num_ncancelled_pkgs => $num_ncancelled_pkgs,
+                      ),
                       $start_date,
                     )
                   }