fix unit setup fee on prorate-deferred packages, #31276
authorMark Wells <mark@freeside.biz>
Fri, 2 Oct 2015 23:05:41 +0000 (16:05 -0700)
committerMark Wells <mark@freeside.biz>
Fri, 2 Oct 2015 23:07:53 +0000 (16:07 -0700)
FS/FS/cust_main/Billing.pm

index 014d715..b7837c5 100644 (file)
@@ -1230,7 +1230,14 @@ sub _make_lines {
         return "$@ running calc_setup for $cust_pkg\n"
           if $@;
 
-        $unitsetup = $cust_pkg->part_pkg->unit_setup || $setup; #XXX uuh
+        # Only increment unitsetup here if there IS a setup fee.
+        # prorate_defer_bill may cause calc_setup on a setup-stage package
+        # to return zero, and the setup fee to be charged later. (This happens
+        # when it's first billed on the prorate cutoff day. RT#31276.)
+        if ( $setup ) {
+          $unitsetup = $cust_pkg->base_setup()
+                         || $setup; #XXX uuh
+        }
     }
 
     $cust_pkg->setfield('setup', $time)
@@ -1369,7 +1376,7 @@ sub _make_lines {
       # Add an additional setup fee at the billing stage.
       # Used for prorate_defer_bill.
       $setup += $param{'setup_fee'};
-      $unitsetup += $param{'setup_fee'};
+      $unitsetup = $cust_pkg->base_setup();
       $lineitems++;
     }