prohibit self-service changing of suspended packages, RT#26140
authorIvan Kohler <ivan@freeside.biz>
Wed, 20 Nov 2013 05:56:06 +0000 (21:56 -0800)
committerIvan Kohler <ivan@freeside.biz>
Wed, 20 Nov 2013 05:56:06 +0000 (21:56 -0800)
FS/FS/ClientAPI/MyAccount.pm
fs_selfservice/FS-SelfService/cgi/provision_list.html

index 2aeecc1..241963f 100644 (file)
@@ -2303,6 +2303,11 @@ sub change_pkg {
   my $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $p->{pkgnum} } )
     or return { 'error' => "unknown package $p->{pkgnum}" };
 
+  #if someone does need self-service package change of suspended packages,
+  # figure out how to be more discriminating
+  return { error=>"Can't change a suspended package", pkgnum=>$cust_pkg->pkgnum}
+    if $cust_pkg->status eq 'suspended';
+
   my @newpkg;
   my $error = FS::cust_pkg::order( $custnum,
                                    [$p->{pkgpart}],
index 2a3a8e9..24d6ff4 100644 (file)
@@ -9,10 +9,14 @@ foreach my $pkg (
            || scalar(@{$_->{cust_svc}})
          } @cust_pkg
     ) {
+
   my $susp = $pkg->{'susp'} || '';
-  my @pkg_actions = ( [ 'customer_change_pkg' => 'change' ] );
-  push @pkg_actions, [ 'process_suspend_pkg' => 'suspend' ] 
-    if $self_suspend_reason and !$susp;
+  my @pkg_actions = ();
+  if ( ! $susp ) {
+    push @pkg_actions, [ 'customer_change_pkg' => 'change' ];
+    push @pkg_actions, [ 'process_suspend_pkg' => 'suspend' ] 
+      if $self_suspend_reason;
+  }
 
   my $bgcolor = $susp ? '"#ff9900"' : '"#8888ff"';
   $OUT .= #'<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#ffffff">'.