[freeside-commits] branch master updated. 349bfb3f80c3af6be2b6c2af9e9d2e7a71b1ffe6

Mark Wells mark at 420.am
Mon Jan 26 18:31:45 PST 2015


The branch, master has been updated
       via  349bfb3f80c3af6be2b6c2af9e9d2e7a71b1ffe6 (commit)
      from  cf985eedaeb4b23a2050ebc0bb0cb304554e2a6d (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 349bfb3f80c3af6be2b6c2af9e9d2e7a71b1ffe6
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Jan 26 18:31:31 2015 -0800

    avoid adjusting bill date for suspended time if the package was credited on suspension, #31651

diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index b51c955..5c82ad2 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -1617,19 +1617,41 @@ sub unsuspend {
   my $conf = new FS::Conf;
 
   #adjust the next bill date forward
-  $hash{'bill'} = ( $hash{'bill'} || $hash{'setup'} ) + $inactive
-    if $inactive > 0
+  # increment next bill date if certain conditions are met:
+  # - it was due to be billed at some point
+  # - either the global or local config says to do this
+  my $adjust_bill = 0;
+  if (
+       $inactive > 0
     && ( $hash{'bill'} || $hash{'setup'} )
     && (    $opt{'adjust_next_bill'}
          || $conf->exists('unsuspend-always_adjust_next_bill_date')
          || $self->part_pkg->option('unsuspend_adjust_bill', 1)
        )
-    && ! $self->option('suspend_bill',1)
-    && (    ! $self->part_pkg->option('suspend_bill',1)
-         || $self->option('no_suspend_bill',1)
-       )
-    && $hash{'order_date'} != $hash{'susp'}
-  ;
+  ) {
+    $adjust_bill = 1;
+  }
+
+  # but not if:
+  # - the package billed during suspension
+  # - or it was ordered on hold
+  # - or the customer was credited for the unused time
+
+  if ( $self->option('suspend_bill',1)
+      or ( $self->part_pkg->option('suspend_bill',1)
+           and ! $self->option('no_suspend_bill',1)
+         )
+      or $hash{'order_date'} == $hash{'susp'}
+      or $self->part_pkg->option('unused_credit_suspend')
+      or ( defined($reason) and $reason->unused_credit )
+  ) {
+    $adjust_bill = 0;
+  }
+
+  # then add the length of time suspended to the bill date
+  if ( $adjust_bill ) {
+    $hash{'bill'} = ( $hash{'bill'} || $hash{'setup'} ) + $inactive
+  }
 
   $hash{'susp'} = '';
   $hash{'adjourn'} = '' if $hash{'adjourn'} and $hash{'adjourn'} < time;


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

Summary of changes:
 FS/FS/cust_pkg.pm |   38 ++++++++++++++++++++++++++++++--------
 1 file changed, 30 insertions(+), 8 deletions(-)




More information about the freeside-commits mailing list