5e8a16f4acf47bfa57a98c793e6855fede25362e
[freeside.git] / httemplate / edit / process / svc_acct.cgi
1 <%
2
3 $cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!";
4 my $svcnum = $1;
5
6 my $old;
7 if ( $svcnum ) {
8   $old = qsearchs('svc_acct', { 'svcnum' => $svcnum } )
9     or die "fatal: can't find account (svcnum $svcnum)!";
10 } else {
11   $old = '';
12 }
13
14 #unmunge popnum
15 $cgi->param('popnum', (split(/:/, $cgi->param('popnum') ))[0] );
16
17 #unmunge passwd
18 if ( $cgi->param('_password') eq '*HIDDEN*' ) {
19   die "fatal: no previous account to recall hidden password from!" unless $old;
20   $cgi->param('_password',$old->getfield('_password'));
21 }
22
23 my $new = new FS::svc_acct ( {
24   map {
25     $_, scalar($cgi->param($_));
26   #} qw(svcnum pkgnum svcpart username _password popnum uid gid finger dir
27   #  shell quota slipip)
28   } ( fields('svc_acct'), qw( pkgnum svcpart ) )
29 } );
30
31 my $error;
32 if ( $svcnum ) {
33   $error = $new->replace($old);
34 } else {
35   $error = $new->insert;
36   $svcnum = $new->svcnum;
37 }
38
39 if ( $error ) {
40   $cgi->param('error', $error);
41   print $cgi->redirect(popurl(2). "svc_acct.cgi?". $cgi->query_string );
42 } else {
43   print $cgi->redirect(popurl(3). "view/svc_acct.cgi?" . $svcnum );
44 }
45
46 %>