X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fmisc%2Fcancel-unaudited.cgi;h=4b3084f00a648348d0e8988a6831a2a30631fb5e;hp=6f070a4446c9e884563f9c97717ed480241a3fd8;hb=ff27c3f36240aee48ed50153dd5d8fe3ac3f2443;hpb=3ce7691203a7737406bf2d4442f7fd84b81f847e diff --git a/httemplate/misc/cancel-unaudited.cgi b/httemplate/misc/cancel-unaudited.cgi index 6f070a444..4b3084f00 100755 --- a/httemplate/misc/cancel-unaudited.cgi +++ b/httemplate/misc/cancel-unaudited.cgi @@ -1,36 +1,46 @@ -% -% -%my $dbh = dbh; -% -%#untaint svcnum -%my($query) = $cgi->keywords; -%$query =~ /^(\d+)$/; -%my $svcnum = $1; -% -%#my $svc_acct = qsearchs('svc_acct',{'svcnum'=>$svcnum}); -%#die "Unknown svcnum!" unless $svc_acct; -% -%my $cust_svc = qsearchs('cust_svc',{'svcnum'=>$svcnum}); -%die "Unknown svcnum!" unless $cust_svc; -%my $cust_pkg = $cust_svc->cust_pkg; -%if ( $cust_pkg ) { -% &eidiot( 'This account has already been audited. Cancel the '. -% qq!'. -% 'package instead.'); -%} -% -%my $error = $cust_svc->cancel; -% %if ( $error ) { -% - - -% -% &eidiot($error); +% errorpage($error); %} else { -% print $cgi->redirect(popurl(2)); +<% $cgi->redirect(popurl(2)) %> %} -% -% +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Unprovision customer service') + && $FS::CurrentUser::CurrentUser->access_right('View/link unlinked services'); + +#untaint svcnum +my($query) = $cgi->keywords; +$query =~ /^(\d+)$/; +my $svcnum = $1; + +my $error = ''; +my $cust_svc = qsearchs('cust_svc',{'svcnum'=>$svcnum}); +if ( $cust_svc ) { + my $cust_pkg = $cust_svc->cust_pkg; + if ( $cust_pkg ) { + errorpage( 'This account has already been audited. Cancel the '. + qq!'. + 'package instead.'); #' + } + + $error = $cust_svc->cancel; +} else { + # the rare obscure case: svc_x without cust_svc + my $svc_x; + foreach my $svcdb (FS::part_svc->svc_tables) { + $svc_x = qsearchs($svcdb, { 'svcnum' => $svcnum }); + last if $svc_x; + } + if ( $svc_x ) { + $error = $svc_x->return_inventory + || $svc_x->FS::Record::delete; + } else { + # the svcnum really doesn't exist + $error = "svcnum $svcnum not found"; + } +} + +