bugfix to work for regular aswell as custom pricing
[freeside.git] / htdocs / edit / process / svc_acct.cgi
1 #!/usr/bin/perl -Tw
2 #
3 # process/svc_acct.cgi: Add/edit a customer (process form)
4 #
5 # Usage: post form to:
6 #        http://server.name/path/svc_acct.cgi
7 #
8 # Note: Should br run setuid root as user nobody.
9 #
10 # ivan@voicenet.com 96-dec-18
11 #
12 # Changed /u to /u2
13 # ivan@voicenet.com 97-may-6
14 #
15 # rewrote for new API
16 # ivan@voicenet.com 97-jul-17 - 21
17 #
18 # no FS::Search, FS::svc_acct creates FS::cust_svc record, used for adding
19 # and editing ivan@sisd.com 98-mar-8
20 #
21 # Changes to allow page to work at a relative position in server
22 # Changed 'password' to '_password' because Pg6.3 reserves the password word
23 #       bmccane@maxbaud.net     98-apr-3
24
25 use strict;
26 use CGI::Request;
27 use CGI::Carp qw(fatalsToBrowser);
28 use FS::UID qw(cgisuidsetup);
29 use FS::Record qw(qsearchs);
30 use FS::svc_acct;
31
32 my($req) = new CGI::Request; # create form object
33 &cgisuidsetup($req->cgi);
34
35 $req->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!";
36 my($svcnum)=$1;
37
38 my($old)=qsearchs('svc_acct',{'svcnum'=>$svcnum}) if $svcnum;
39
40 #unmunge popnum
41 $req->param('popnum', (split(/:/, $req->param('popnum') ))[0] );
42
43 #unmunge passwd
44 if ( $req->param('_password') eq '*HIDDEN*' ) {
45   $req->param('_password',$old->getfield('_password'));
46 }
47
48 my($new) = create FS::svc_acct ( {
49   map {
50     $_, $req->param($_);
51   } qw(svcnum pkgnum svcpart username _password popnum uid gid finger dir
52     shell quota slipip)
53 } );
54
55 if ( $svcnum ) {
56   my($error) = $new->replace($old);
57   &idiot($error) if $error;
58 } else {
59   my($error) = $new->insert;
60   &idiot($error) if $error;
61   $svcnum = $new->getfield('svcnum');
62 }
63
64 #no errors, view account
65 $req->cgi->redirect("../../view/svc_acct.cgi?" . $svcnum );
66
67 sub idiot {
68   my($error)=@_;
69   CGI::Base::SendHeaders(); # one guess
70   print <<END;
71 <HTML>
72   <HEAD>
73     <TITLE>Error adding/updating account</TITLE>
74   </HEAD>
75   <BODY>
76     <CENTER>
77     <H4>Error adding/updating account</H4>
78     </CENTER>
79     Your update did not occur because of the following error:
80     <P><B>$error</B>
81     <P>Hit the <I>Back</I> button in your web browser, correct this mistake, and submit the form again.
82   </BODY>
83 </HTML>
84 END
85   exit;
86 }
87