fix more bugs
[freeside.git] / httemplate / misc / cancel-unaudited.cgi
1 <%
2 #<!-- $Id: cancel-unaudited.cgi,v 1.2 2001-08-21 02:31:56 ivan Exp $ -->
3
4 use strict;
5 use vars qw( $cgi $query $svcnum $svc_acct $cust_svc $error $dbh );
6 use CGI;
7 use CGI::Carp qw(fatalsToBrowser);
8 use FS::UID qw(cgisuidsetup);
9 use FS::CGI qw(popurl eidiot);
10 use FS::Record qw(qsearchs);
11 use FS::cust_svc;
12 use FS::svc_acct;
13
14 $cgi = new CGI;
15 $dbh = &cgisuidsetup($cgi);
16  
17 #untaint svcnum
18 ($query) = $cgi->keywords;
19 $query =~ /^(\d+)$/;
20 $svcnum = $1;
21
22 $svc_acct = qsearchs('svc_acct',{'svcnum'=>$svcnum});
23 die "Unknown svcnum!" unless $svc_acct;
24
25 $cust_svc = qsearchs('cust_svc',{'svcnum'=>$svcnum});
26 &eidiot(qq!This account has already been audited.  Cancel the 
27     <A HREF="!. popurl(2). qq!view/cust_pkg.cgi?! . $cust_svc->getfield('pkgnum') .
28     qq!pkgnum"> package</A> instead.!) 
29   if $cust_svc->pkgnum ne '' && $cust_svc->pkgnum ne '0';
30
31 local $SIG{HUP} = 'IGNORE';
32 local $SIG{INT} = 'IGNORE';
33 local $SIG{QUIT} = 'IGNORE';
34 local $SIG{TERM} = 'IGNORE';
35 local $SIG{TSTP} = 'IGNORE';
36
37 local $FS::UID::AutoCommit = 0;
38
39 $error = $svc_acct->cancel;
40 &myeidiot($error) if $error;
41 $error = $svc_acct->delete;
42 &myeidiot($error) if $error;
43
44 $error = $cust_svc->delete;
45 &myeidiot($error) if $error;
46
47 $dbh->commit or die $dbh->errstr;
48
49 print $cgi->redirect(popurl(2));
50
51 sub myeidiot {
52   $dbh->rollback;
53   &eidiot(@_);
54 }
55
56 %>