add svc_forward, depriciate svc_acct_sm
[freeside.git] / htdocs / misc / cancel-unaudited.cgi
index b872944..319ac55 100755 (executable)
@@ -1,12 +1,10 @@
 #!/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/;
 #
@@ -30,7 +40,7 @@
 #
 
 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);
@@ -40,7 +50,7 @@ use FS::cust_svc;
 use FS::svc_acct;
 
 $cgi = new CGI;
-&cgisuidsetup($cgi);
+$dbh = &cgisuidsetup($cgi);
  
 #untaint svcnum
 ($query) = $cgi->keywords;
@@ -48,13 +58,13 @@ $query =~ /^(\d+)$/;
 $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';
@@ -62,13 +72,22 @@ local $SIG{QUIT} = '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(@_);
+}