handle errors better
[freeside.git] / httemplate / misc / cancel-unaudited.cgi
1 <%
2
3 my $dbh = dbh;
4  
5 #untaint svcnum
6 my($query) = $cgi->keywords;
7 $query =~ /^(\d+)$/;
8 my $svcnum = $1;
9
10 my $svc_acct = qsearchs('svc_acct',{'svcnum'=>$svcnum});
11 die "Unknown svcnum!" unless $svc_acct;
12
13 my $cust_svc = qsearchs('cust_svc',{'svcnum'=>$svcnum});
14 &eidiot(qq!This account has already been audited.  Cancel the 
15     <A HREF="!. popurl(2). qq!view/cust_pkg.cgi?! . $cust_svc->getfield('pkgnum') .
16     qq!pkgnum"> package</A> instead.!) 
17   if $cust_svc->pkgnum ne '' && $cust_svc->pkgnum ne '0';
18
19 local $SIG{HUP} = 'IGNORE';
20 local $SIG{INT} = 'IGNORE';
21 local $SIG{QUIT} = 'IGNORE';
22 local $SIG{TERM} = 'IGNORE';
23 local $SIG{TSTP} = 'IGNORE';
24
25 local $FS::UID::AutoCommit = 0;
26
27 my $error = $svc_acct->cancel;
28 $error ||= $svc_acct->delete;
29 $error ||= $cust_svc->delete;
30
31 if ( $error ) {
32   $dbh->rollback;
33   %>
34 <!-- mason kludge -->
35 <%
36   &eidiot(@_);
37 } else {
38
39   $dbh->commit or die $dbh->errstr;
40
41   print $cgi->redirect(popurl(2));
42 }
43
44 %>