[freeside-commits] branch master updated. 5a6c2cf5ca5f1a80cad9310ec239a64dc8a280c1

Jonathan Prykop jonathan at 420.am
Wed Jun 15 20:20:17 PDT 2016


The branch, master has been updated
       via  5a6c2cf5ca5f1a80cad9310ec239a64dc8a280c1 (commit)
      from  919943a3c5af718afa2eb47e9b4d9d3405f0bb73 (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 5a6c2cf5ca5f1a80cad9310ec239a64dc8a280c1
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Wed Jun 15 22:19:13 2016 -0500

    RT#71298: Suspend Option for billing to continue

diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm
index 89e50aa..dac349e 100644
--- a/FS/FS/AccessRight.pm
+++ b/FS/FS/AccessRight.pm
@@ -143,6 +143,7 @@ tie my %rights, 'Tie::IxHash',
     'Cancel customer package later',
     'Un-cancel customer package',
     'Delay suspension events',
+    'Customize billing during suspension',
     'Add on-the-fly cancel reason', #NEW
     'Add on-the-fly suspend reason', #NEW
     'Edit customer package invoice details', #NEW
diff --git a/FS/FS/access_right.pm b/FS/FS/access_right.pm
index 59defb7..0ee0aa0 100644
--- a/FS/FS/access_right.pm
+++ b/FS/FS/access_right.pm
@@ -292,6 +292,33 @@ sub _upgrade_data { # class method
 
   }
 
+  # some false laziness with @onetime above,
+  # but for use when multiple old acls trigger a single new acl
+  # (keys/values reversed from @onetime, expects arrayref value)
+  my @onetime_bynew = (
+    'Customize billing during suspension' => [ 'Suspend customer package', 'Suspend customer package later' ],
+  );
+  while ( @onetime_bynew ) {
+    my( $new_acl, $old_acl ) = splice(@onetime_bynew, 0, 2);
+    ( my $journal = 'ACL_'.lc($new_acl) ) =~ s/\W/_/g;
+    next if FS::upgrade_journal->is_done($journal);
+    # grant $new_acl to all groups who have one of @old_acl
+    for my $group (@all_groups) {
+      next unless grep { $group->access_right($_) } @$old_acl;
+      next if     $group->access_right($new_acl);
+      my $access_right = FS::access_right->new( {
+          'righttype'   => 'FS::access_group',
+          'rightobjnum' => $group->groupnum,
+          'rightname'   => $new_acl,
+      } );
+      my $error = $access_right->insert;
+      die $error if $error;
+    }
+    
+    FS::upgrade_journal->set_done($journal);
+
+  }
+
   ### ACL_download_report_data
   if ( !FS::upgrade_journal->is_done('ACL_download_report_data') ) {
 
diff --git a/httemplate/misc/cancel_pkg.html b/httemplate/misc/cancel_pkg.html
index c80b2b2..81c5c48 100755
--- a/httemplate/misc/cancel_pkg.html
+++ b/httemplate/misc/cancel_pkg.html
@@ -62,7 +62,7 @@
   &>
 % }
 
-% if ( $method eq 'adjourn' || $method eq 'suspend' ) {
+% if (( $method eq 'adjourn' || $method eq 'suspend' ) && $curuser->access_right('Customize billing during suspension')) {
     <TR><TD COLSPAN=2>
 %   if ( $part_pkg->option('suspend_bill', 1) ) {
       <& /elements/checkbox.html, name=>'no_suspend_bill', value=>'Y' &>
diff --git a/httemplate/misc/process/cancel_pkg.html b/httemplate/misc/process/cancel_pkg.html
index c7a4397..6972a49 100755
--- a/httemplate/misc/process/cancel_pkg.html
+++ b/httemplate/misc/process/cancel_pkg.html
@@ -33,8 +33,10 @@ $method =~ /^(cancel|expire|suspend|adjourn|resume|uncancel)$/
 $method = $1;
 my $past_method = $past{$method};
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right($right{$method});
+  unless $curuser->access_right($right{$method});
 
 #untaint pkgnum
 my $pkgnum = $cgi->param('pkgnum');
@@ -60,7 +62,8 @@ if ( $method eq 'suspend' ) { #or 'adjourn'
 
   $options = { map { $_ => scalar($cgi->param($_)) }
                  qw( suspend_bill no_suspend_bill )
-             };
+             }
+    if $curuser->access_right('Customize billing during suspension');
 }
 
 my $cust_pkg = qsearchs( 'cust_pkg', {'pkgnum'=>$pkgnum} );

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

Summary of changes:
 FS/FS/AccessRight.pm                    |    1 +
 FS/FS/access_right.pm                   |   27 +++++++++++++++++++++++++++
 httemplate/misc/cancel_pkg.html         |    2 +-
 httemplate/misc/process/cancel_pkg.html |    7 +++++--
 4 files changed, 34 insertions(+), 3 deletions(-)




More information about the freeside-commits mailing list