#!/usr/bin/perl -Tw
#
-# $Id: cancel-unaudited.cgi,v 1.4 1999-01-19 05:14:03 ivan Exp $
+# $Id: cancel-unaudited.cgi,v 1.8 2001-04-09 23:05:16 ivan Exp $
#
# Usage: cancel-unaudited.cgi svcnum
# http://server.name/path/cancel-unaudited.cgi pkgnum
#
-# Note: Should be run setuid freeside as user nobody
-#
# ivan@voicenet.com 97-apr-23
#
# rewrote for new API
# bmccane@maxbaud.net 98-apr-3
#
# $Log: cancel-unaudited.cgi,v $
-# Revision 1.4 1999-01-19 05:14:03 ivan
+# Revision 1.8 2001-04-09 23:05:16 ivan
+# Transactions Part I!!!
+#
+# Revision 1.7 2000/06/15 12:30:37 ivan
+# bugfix from Jeff Finucane, thanks!
+#
+# Revision 1.6 1999/02/28 00:03:48 ivan
+# removed misleading comments
+#
+# Revision 1.5 1999/02/07 09:59:34 ivan
+# more mod_perl fixes, and bugfixes Peter Wemm sent via email
+#
+# Revision 1.4 1999/01/19 05:14:03 ivan
# for mod_perl: no more top-level my() variables; use vars instead
# also the last s/create/new/;
#
#
use strict;
-use vars qw( $cgi $query $svcnum $svc_acct $cust_svc $error );
+use vars qw( $cgi $query $svcnum $svc_acct $cust_svc $error $dbh );
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use FS::UID qw(cgisuidsetup);
use FS::svc_acct;
$cgi = new CGI;
-&cgisuidsetup($cgi);
+$dbh = &cgisuidsetup($cgi);
#untaint svcnum
($query) = $cgi->keywords;
$svcnum = $1;
$svc_acct = qsearchs('svc_acct',{'svcnum'=>$svcnum});
-&eidiot("Unknown svcnum!") unless $svc_acct;
+die "Unknown svcnum!" unless $svc_acct;
$cust_svc = qsearchs('cust_svc',{'svcnum'=>$svcnum});
&eidiot(qq!This account has already been audited. Cancel the
<A HREF="!. popurl(2). qq!view/cust_pkg.cgi?! . $cust_svc->getfield('pkgnum') .
qq!pkgnum"> package</A> instead.!)
- if $cust_svc->getfield('pkgnum') ne '';
+ if $cust_svc->pkgnum ne '' && $cust_svc->pkgnum ne '0';
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
local $SIG{TERM} = 'IGNORE';
local $SIG{TSTP} = 'IGNORE';
+local $FS::UID::AutoCommit = 0;
+
$error = $svc_acct->cancel;
-&eidiot($error) if $error;
+&myeidiot($error) if $error;
$error = $svc_acct->delete;
-&eidiot($error) if $error;
+&myeidiot($error) if $error;
$error = $cust_svc->delete;
-&eidiot($error) if $error;
+&myeidiot($error) if $error;
+
+$dbh->commit or die $dbh->errstr;
+
+print $cgi->redirect(popurl(2));
-$cgi->redirect(popurl(2));
+sub myeidiot {
+ $dbh->rollback;
+ &eidiot(@_);
+}