Merge branch 'master' of ssh://git.freeside.biz/home/git/freeside
[freeside.git] / httemplate / misc / cust-part_pkg.cgi
index 54973bc..8a46c1d 100644 (file)
@@ -23,7 +23,10 @@ if ( $classnum > 0 ) {
 } #else -1, all classes, so don't set classnum
 
 my @part_pkg = qsearch({
+  'select'    => 'part_pkg.*, setup_option.optionvalue AS _setup_fee,
+                              recur_option.optionvalue AS _recur_fee',
   'table'     => 'part_pkg',
+  'addl_from' => FS::part_pkg->join_options_sql,
   'hashref'   => \%hash,
   'extra_sql' =>
     ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql( 'null'=>1 ).
@@ -37,7 +40,16 @@ 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;
+                           : $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 = $_->delay_start_date
@@ -47,7 +59,10 @@ my @return = map  {
                     ( $_->pkgpart,
                       $_->pkg_comment,
                       $_->can_discount,
-                      $_->can_start_date,
+                      ($_->start_on_hold ? 1 : 0),
+                      $_->can_start_date(
+                        num_ncancelled_pkgs => $num_ncancelled_pkgs,
+                      ),
                       $start_date,
                     )
                   }