[freeside-commits] branch master updated. 12560fb5a69ddace43dc267b44894acb5352c98c

Mark Wells mark at 420.am
Sun Jan 31 21:18:25 PST 2016


The branch, master has been updated
       via  12560fb5a69ddace43dc267b44894acb5352c98c (commit)
       via  7643e364c22eeca302f09a87ea968175ce01985b (commit)
      from  c5dd9bdf09dff2b5cc6d9a9681894664fe5147ef (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 12560fb5a69ddace43dc267b44894acb5352c98c
Author: Mark Wells <mark at freeside.biz>
Date:   Sun Jan 31 21:07:08 2016 -0800

    unused_credit flag for cancellation reasons, #27911

diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 6dcd740..0b60ed7 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -969,13 +969,28 @@ sub cancel {
     }
   }
 
+  # if a reasonnum was passed, get the actual reason object so we can check
+  # unused_credit
+
+  my $reason;
+  if ($options{'reason'} =~ /^\d+$/) {
+    $reason = FS::reason->by_key($options{'reason'});
+  }
+
   unless ($date) {
-    # credit remaining time if appropriate
+    # credit remaining time if any of these are true:
+    # - unused_credit => 1 was passed (this happens when canceling a package
+    #   for a package change when unused_credit_change is set)
+    # - no unused_credit option, and there is a cancel reason, and the cancel
+    #   reason says to credit the package
+    # - no unused_credit option, and the package definition says to credit the
+    #   package on cancellation
     my $do_credit;
     if ( exists($options{'unused_credit'}) ) {
       $do_credit = $options{'unused_credit'};
-    }
-    else {
+    } elsif ( defined($reason) && $reason->unused_credit ) {
+      $do_credit = 1;
+    } else {
       $do_credit = $self->part_pkg->option('unused_credit_cancel', 1);
     }
     if ( $do_credit ) {
diff --git a/FS/FS/reason.pm b/FS/FS/reason.pm
index e62bf34..d87911e 100644
--- a/FS/FS/reason.pm
+++ b/FS/FS/reason.pm
@@ -56,7 +56,7 @@ suspensions but not others. DEPRECATED.
 whether to bill the unsuspend package immediately ('') or to wait until 
 the customer's next invoice ('Y').
 
-=item unused_credit - 'Y' or ''. For suspension reasons only (for now).
+=item unused_credit - 'Y' or ''. For suspension or cancellation reasons.
 If enabled, the customer will be credited for their remaining time on 
 suspension.
 
@@ -125,23 +125,30 @@ sub check {
   ;
   return $error if $error;
 
-  if ( $self->reasontype->class eq 'S' ) {
+  my $class = $self->reasontype->class;
+
+  if ( $class eq 'S' ) {
     $error = $self->ut_numbern('unsuspend_pkgpart')
           || $self->ut_foreign_keyn('unsuspend_pkgpart', 'part_pkg', 'pkgpart')
           || $self->ut_flag('unsuspend_hold')
-          || $self->ut_flag('unused_credit')
           || $self->ut_foreign_keyn('feepart', 'part_fee', 'feepart')
           || $self->ut_flag('fee_on_unsuspend')
           || $self->ut_flag('fee_hold')
     ;
     return $error if $error;
   } else {
-    foreach (qw(unsuspend_pkgpart unsuspend_hold unused_credit feepart
+    foreach (qw(unsuspend_pkgpart unsuspend_hold feepart
                 fee_on_unsuspend fee_hold)) {
       $self->set($_ => '');
     }
   }
 
+  if ( $class eq 'S' or $class eq 'C' ) {
+    $error = $self->ut_flag('unused_credit');
+  } else {
+    $self->set('unused_credit', '');
+  }
+
   $self->SUPER::check;
 }
 
diff --git a/httemplate/elements/tr-select-reason.html b/httemplate/elements/tr-select-reason.html
index 93949ba..97466f1 100755
--- a/httemplate/elements/tr-select-reason.html
+++ b/httemplate/elements/tr-select-reason.html
@@ -120,6 +120,13 @@ Example:
       &>
 %   } # scalar(@types)
 
+%   if ( $class eq 'C' ) {
+      <& tr-checkbox.html,
+        label => 'Credit the unused portion of service when canceling',
+        field => $id.'_new_unused_credit',
+        value => 'Y'
+      &>
+%   }
 %   if ( $class eq 'S' ) {
       <& tr-checkbox.html,
         label => 'Credit the unused portion of service when suspending',

commit 7643e364c22eeca302f09a87ea968175ce01985b
Author: Mark Wells <mark at freeside.biz>
Date:   Sun Jan 31 16:48:33 2016 -0800

    continue removing pay* fields from cust_main

diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 4a885d2..f1c4e08 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -1652,7 +1652,6 @@ sub tables_hashref {
                           ['agentnum'], ['refnum'], ['classnum'], ['usernum'],
                           [ 'custbatch' ],
                           [ 'referral_custnum' ],
-                          [ 'payby' ], [ 'paydate' ],
                           [ 'archived' ],
                           [ 'ship_locationnum' ],
                           [ 'bill_locationnum' ],
diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm
index bffda56..395c6d0 100644
--- a/FS/FS/Upgrade.pm
+++ b/FS/FS/Upgrade.pm
@@ -297,7 +297,7 @@ sub upgrade {
   # decrypt inadvertantly-encrypted payinfo where payby != CARD,DCRD,CHEK,DCHK
   # kind of a weird spot for this, but it's better than duplicating
   # all this code in each class...
-  my @decrypt_tables = qw( cust_main cust_pay_void cust_pay cust_refund cust_pay_pending );
+  my @decrypt_tables = qw( cust_payby cust_pay_void cust_pay cust_refund cust_pay_pending );
   foreach my $table ( @decrypt_tables ) {
       my @objects = qsearch({
         'table'     => $table,

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

Summary of changes:
 FS/FS/Schema.pm                           |    1 -
 FS/FS/Upgrade.pm                          |    2 +-
 FS/FS/cust_pkg.pm                         |   21 ++++++++++++++++++---
 FS/FS/reason.pm                           |   15 +++++++++++----
 httemplate/elements/tr-select-reason.html |    7 +++++++
 5 files changed, 37 insertions(+), 9 deletions(-)




More information about the freeside-commits mailing list