X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fmisc%2Fprocess%2Fcancel_pkg.html;h=7e33e15c0aa36b41dbf26e6c9e0ce3349f52b3d7;hp=79e489c704c708d98938bd84410529131f875440;hb=2756019bdb10fe144debfc8d6436468a89954eb3;hpb=a6fe07e49e3fc12169e801b1ed6874c3a5bd8500 diff --git a/httemplate/misc/process/cancel_pkg.html b/httemplate/misc/process/cancel_pkg.html index 79e489c70..7e33e15c0 100755 --- a/httemplate/misc/process/cancel_pkg.html +++ b/httemplate/misc/process/cancel_pkg.html @@ -1,9 +1,4 @@ -<% header(emt("Package $past_method")) %> - - - +<& /elements/popup-topreload.html, et("Package $past_method") &> <%once> my %past = ( 'cancel' => 'cancelled', @@ -33,8 +28,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'); @@ -58,24 +55,20 @@ if ( $method eq 'suspend' ) { #or 'adjourn' $resume_date = parse_datetime($cgi->param('resume_date')) if $cgi->param('resume_date'); - $options = { map scalar($cgi->param($_)), - suspend_bill no_suspend_bill - }; + $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} ); -#untaint reasonnum -my $reasonnum = $cgi->param('reasonnum'); -if ( $method !~ /^(unsuspend|uncancel)$/ ) { - $reasonnum =~ /^(-?\d+)$/ or die "Illegal reasonnum"; - $reasonnum = $1; - - if ($reasonnum == -1) { - $reasonnum = { - 'typenum' => scalar( $cgi->param('newreasonnumT') ), - 'reason' => scalar( $cgi->param('newreasonnum' ) ), - }; +#untaint reasonnum, and set up new reason if appropriate +my ($reasonnum, $error); +if ($method ne 'unsuspend' and $method ne 'uncancel') { + ($reasonnum, $error) = $m->comp('elements/reason'); + if (!$reasonnum) { + $error ||= 'Reason required'; } } @@ -87,13 +80,16 @@ my $bill = my $svc_fatal = ( $cgi->param('svc_not_fatal') ne 'Y' ); -my $error = $cust_pkg->$method( 'reason' => $reasonnum, +my $only_svcnum = ($method eq 'uncancel') ? [ $cgi->param('only_svcnum') ] : undef; + +$error ||= $cust_pkg->$method( 'reason' => $reasonnum, 'date' => $date, 'resume_date' => $resume_date, 'last_bill' => $last_bill, 'bill' => $bill, 'svc_fatal' => $svc_fatal, 'options' => $options, + 'only_svcnum' => $only_svcnum, ); if ($error) {