[freeside-commits] branch master updated. 31807e3e9acddff34011e919728c113e69ad9a26

Jonathan Prykop jonathan at 420.am
Tue Apr 12 03:37:46 PDT 2016


The branch, master has been updated
       via  31807e3e9acddff34011e919728c113e69ad9a26 (commit)
      from  b8fa095812b8ad74263a2d4a25caa97871d7d34b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 31807e3e9acddff34011e919728c113e69ad9a26
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Tue Apr 12 05:36:58 2016 -0500

    RT#28648: Unsuspend when past due balance is paid [new option, Charges not past due]

diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index d0b1180..87fd252 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1972,7 +1972,7 @@ and customer address. Include units.',
     'description' => 'Enables the automatic unsuspension of suspended packages when a customer\'s balance due is at or below the specified amount after a payment or credit',
     'type'        => 'select',
     'select_enum' => [ 
-      '', 'Zero', 'Latest invoice charges'
+      '', 'Zero', 'Latest invoice charges', 'Charges not past due'
     ],
   },
 
diff --git a/FS/FS/cust_main_Mixin.pm b/FS/FS/cust_main_Mixin.pm
index 9a2a9d7..bbba8c5 100644
--- a/FS/FS/cust_main_Mixin.pm
+++ b/FS/FS/cust_main_Mixin.pm
@@ -669,11 +669,25 @@ sub unsuspend_balance {
   my $maxbalance;
   if ($setting eq 'Zero') {
     $maxbalance = 0;
+
+  # kind of a pain to load/check all cust_bill instead of just open ones,
+  # but if for some reason payment gets applied to later bills before
+  # earlier ones, we still want to consider the later ones as allowable balance
   } elsif ($setting eq 'Latest invoice charges') {
     my @cust_bill = $cust_main->cust_bill();
     my $cust_bill = $cust_bill[-1]; #always want the most recent one
-    return unless $cust_bill;
-    $maxbalance = $cust_bill->charged || 0;
+    if ($cust_bill) {
+      $maxbalance = $cust_bill->charged || 0;
+    } else {
+      $maxbalance = 0;
+    }
+  } elsif ($setting eq 'Charges not past due') {
+    my $now = time;
+    $maxbalance = 0;
+    foreach my $cust_bill ($cust_main->cust_bill()) {
+      next unless $now <= ($cust_bill->due_date || $cust_bill->_date);
+      $maxbalance += $cust_bill->charged || 0;
+    }
   } elsif (length($setting)) {
     warn "Unrecognized unsuspend_balance setting $setting";
     return;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Conf.pm            |    2 +-
 FS/FS/cust_main_Mixin.pm |   18 ++++++++++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)




More information about the freeside-commits mailing list