fix UI for package editing w/recur_show_zero, add setup_show_zero, RT#9777
[freeside.git] / FS / FS / cust_main / Billing.pm
index 70d2e7f..e78f314 100644 (file)
@@ -593,15 +593,18 @@ sub _omit_zero_value_bundles {
                                && scalar(@{$cust_bill_pkg->get('discounts')})
                                && $conf->exists('discount-show-always'));
 
-    warn "  pkgnum ". $cust_bill_pkg->pkgnum.
-         " sum $sum, recur_show_zero ". $cust_bill_pkg->recur_show_zero. "\n"
+    warn "  pkgnum ". $cust_bill_pkg->pkgnum. " sum $sum, ".
+         "setup_show_zero ". $cust_bill_pkg->setup_show_zero.
+         "recur_show_zero ". $cust_bill_pkg->recur_show_zero. "\n"
       if $DEBUG > 0;
 
     if (scalar(@cust_bill_pkg_bundle) && !$cust_bill_pkg->pkgpart_override) {
       push @cust_bill_pkg, @cust_bill_pkg_bundle 
         if $sum > 0
         || ($sum == 0 && (    $discount_show_always
-                           || grep $_->recur_show_zero, @cust_bill_pkg_bundle )
+                           || grep {$_->recur_show_zero || $_->setup_show_zero}
+                                   @cust_bill_pkg_bundle
+                         )
            );
       @cust_bill_pkg_bundle = ();
       $sum = 0;
@@ -615,7 +618,9 @@ sub _omit_zero_value_bundles {
   push @cust_bill_pkg, @cust_bill_pkg_bundle
     if $sum > 0
     || ($sum == 0 && (    $discount_show_always
-                       || grep $_->recur_show_zero, @cust_bill_pkg_bundle )
+                       || grep {$_->recur_show_zero || $_->setup_show_zero}
+                               @cust_bill_pkg_bundle
+                     )
        );
 
   warn "  _omit_zero_value_bundles: ". scalar(@in).
@@ -1011,7 +1016,8 @@ sub _make_lines {
          || $recur != 0
          || (!$part_pkg->hidden && $options{has_hidden}) #include some $0 lines
          || $discount_show_always
-         || ($recur == 0 && $part_pkg->recur_show_zero)
+         || ($setup == 0 && $cust_pkg->_X_show_zero('setup'))
+         || ($recur == 0 && $cust_pkg->_X_show_zero('recur'))
        ) 
     {
 
@@ -2110,11 +2116,14 @@ sub apply_payments {
 
     my $amount = min( $payment->unapplied, $owed );
 
-    my $cust_bill_pay = new FS::cust_bill_pay ( {
+    my $cbp = {
       'paynum' => $payment->paynum,
       'invnum' => $cust_bill->invnum,
       'amount' => $amount,
-    } );
+    };
+    $cbp->{_date} = $payment->_date 
+        if $options{'manual'} && $options{'backdate_application'};
+    my $cust_bill_pay = new FS::cust_bill_pay($cbp);
     $cust_bill_pay->pkgnum( $payment->pkgnum )
       if $conf->exists('pkg-balances') && $payment->pkgnum;
     my $error = $cust_bill_pay->insert(%options);