avoid generating spurious zero-amount bills on cancellation, #37229, from #16066
authorMark Wells <mark@freeside.biz>
Sat, 11 Jul 2015 01:14:40 +0000 (18:14 -0700)
committerMark Wells <mark@freeside.biz>
Sat, 11 Jul 2015 01:17:40 +0000 (18:17 -0700)
FS/FS/cust_main/Billing.pm
FS/FS/part_pkg/flat.pm

index f4c8045..87be4e6 100644 (file)
@@ -1107,6 +1107,14 @@ sub _make_lines {
     return "$@ running $method for $cust_pkg\n"
       if ( $@ );
 
+    if ($recur eq 'NOTHING') {
+      # then calc_cancel (or calc_recur but that's not used) has declined to
+      # generate a recurring lineitem at all. treat this as zero, but also 
+      # try not to generate a lineitem.
+      $recur = 0;
+      $lineitems--;
+    }
+
     #base_cancel???
     $unitrecur = $cust_pkg->base_recur( \$sdate ) || $recur; #XXX uuh, better
 
index 930966a..eb70253 100644 (file)
@@ -220,13 +220,13 @@ sub calc_cancel {
        and $self->option('bill_recur_on_cancel', 1) ) {
     # run another recurring cycle
     return $self->calc_recur(@_);
-  }
-  elsif ( $conf->exists('bill_usage_on_cancel') # should be a package option?
+  } elsif ( $conf->exists('bill_usage_on_cancel') # should be a package option?
           and $self->can('calc_usage') ) {
     # bill for outstanding usage
     return $self->calc_usage(@_);
+  } else {
+    return 'NOTHING'; # numerically zero, but has special meaning
   }
-  0;
 }
 
 sub calc_remain {