add svc_forward, depriciate svc_acct_sm
[freeside.git] / htdocs / misc / cancel-unaudited.cgi
index 93edef3..319ac55 100755 (executable)
@@ -1,12 +1,10 @@
 #!/usr/bin/perl -Tw
 #
-# $Id: cancel-unaudited.cgi,v 1.2 1998-12-17 09:12:42 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.2  1998-12-17 09:12:42  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/;
+#
+# Revision 1.3  1998/12/23 03:02:05  ivan
+# $cgi->keywords instead of $cgi->query_string
+#
+# Revision 1.2  1998/12/17 09:12:42  ivan
 # s/CGI::(Request|Base)/CGI.pm/;
 #
 
 use strict;
+use vars qw( $cgi $query $svcnum $svc_acct $cust_svc $error $dbh );
 use CGI;
 use CGI::Carp qw(fatalsToBrowser);
 use FS::UID qw(cgisuidsetup);
@@ -31,21 +49,22 @@ use FS::Record qw(qsearchs);
 use FS::cust_svc;
 use FS::svc_acct;
 
-my($cgi) = new CGI;
-&cgisuidsetup($cgi);
+$cgi = new CGI;
+$dbh = &cgisuidsetup($cgi);
  
 #untaint svcnum
-$cgi->query_string =~ /^(\d+)$/;
-my($svcnum)=$1;
+($query) = $cgi->keywords;
+$query =~ /^(\d+)$/;
+$svcnum = $1;
 
-my($svc_acct) = qsearchs('svc_acct',{'svcnum'=>$svcnum});
-&eidiot("Unknown svcnum!") unless $svc_acct;
+$svc_acct = qsearchs('svc_acct',{'svcnum'=>$svcnum});
+die "Unknown svcnum!" unless $svc_acct;
 
-my($cust_svc) = qsearchs('cust_svc',{'svcnum'=>$svcnum});
+$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';
@@ -53,15 +72,22 @@ local $SIG{QUIT} = 'IGNORE';
 local $SIG{TERM} = 'IGNORE';
 local $SIG{TSTP} = 'IGNORE';
 
-my($error);
+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(@_);
+}