summaryrefslogtreecommitdiff
path: root/httemplate/misc
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/misc')
-rwxr-xr-xhttemplate/misc/cancel_pkg.html30
-rwxr-xr-xhttemplate/misc/process/cancel_pkg.html10
2 files changed, 36 insertions, 4 deletions
diff --git a/httemplate/misc/cancel_pkg.html b/httemplate/misc/cancel_pkg.html
index c80b2b278..c802897bb 100755
--- a/httemplate/misc/cancel_pkg.html
+++ b/httemplate/misc/cancel_pkg.html
@@ -45,12 +45,38 @@
} &>
<& /elements/tr-checkbox.html,
- 'label' => mt("Uncancel even if a service can't be re-provisioned"),
+ 'label' => mt("Uncancel even if service reprovisioning fails"),
'field' => 'svc_not_fatal',
'value' => 'Y',
&>
% $date_init = 1;
+% my @uncancel_svcs = sort { $b->{'reprovisionable'} <=> $a->{'reprovisionable'} }
+% sort { $a->{'svcpart'} <=> $b->{'svcpart'} }
+% $cust_pkg->uncancel_svc_summary();
+% if (@uncancel_svcs) {
+<TR><TD COLSPAN="2">&nbsp;</TD></TR>
+<TR><TH ALIGN="right"><% emt("Re-provision the following services") %></TH><TD></TD>
+% foreach my $uncancel_svc (@uncancel_svcs) {
+% my $uncancel_curr_value = $uncancel_svc->{'uncancel_svcnum'};
+% my $uncancel_disabled = '';
+% if ($cgi->param('error')) {
+% $uncancel_curr_value = '' unless grep { $_ == $uncancel_svc->{'_uncancel_svcnum'} } $cgi->param('only_svcnum');
+% }
+% unless ($uncancel_svc->{'reprovisionable'}) {
+% $uncancel_curr_value = '';
+% $uncancel_disabled = 1;
+% }
+ <& /elements/tr-checkbox.html,
+ 'label' => $uncancel_svc->{'svc'} . ': ' . $uncancel_svc->{'label'},
+ 'field' => 'only_svcnum',
+ 'value' => $uncancel_svc->{'uncancel_svcnum'},
+ 'curr_value' => $uncancel_curr_value,
+ 'disabled' => $uncancel_disabled,
+ 'cell_style' => 'font-weight: normal;'
+ &>
+% }
+% }
% }
% unless ( $method eq 'resume' || $method eq 'uncancel' ) {
@@ -62,7 +88,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 c7a43979d..eb3b2efe6 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} );
@@ -82,6 +85,8 @@ my $bill =
my $svc_fatal = ( $cgi->param('svc_not_fatal') ne 'Y' );
+my $only_svcnum = ($method eq 'uncancel') ? [ $cgi->param('only_svcnum') ] : undef;
+
$error ||= $cust_pkg->$method( 'reason' => $reasonnum,
'date' => $date,
'resume_date' => $resume_date,
@@ -89,6 +94,7 @@ $error ||= $cust_pkg->$method( 'reason' => $reasonnum,
'bill' => $bill,
'svc_fatal' => $svc_fatal,
'options' => $options,
+ 'only_svcnum' => $only_svcnum,
);
if ($error) {