removed <!-- $Id$ --> from all files to fix any redirects, whew
[freeside.git] / httemplate / edit / svc_acct_sm.cgi
1 <%
2
3 my $conf = new FS::Conf;
4 my $mydomain = $conf->config('domain');
5
6 my($svcnum, $pkgnum, $svcpart, $part_svc, $svc_acct_sm );
7 if ( $cgi->param('error') ) {
8   $svc_acct_sm = new FS::svc_acct_sm ( {
9     map { $_, scalar($cgi->param($_)) } fields('svc_acct_sm')
10   } );
11   $svcnum = $svc_acct_sm->svcnum;
12   $pkgnum = $cgi->param('pkgnum');
13   $svcpart = $cgi->param('svcpart');
14   #$part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
15   #die "No part_svc entry!" unless $part_svc;
16 } else {
17   my($query) = $cgi->keywords;
18   if ( $query =~ /^(\d+)$/ ) { #editing
19     $svcnum=$1;
20     $svc_acct_sm=qsearchs('svc_acct_sm',{'svcnum'=>$svcnum})
21       or die "Unknown (svc_acct_sm) svcnum!";
22
23     my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
24       or die "Unknown (cust_svc) svcnum!";
25
26     $pkgnum=$cust_svc->pkgnum;
27     $svcpart=$cust_svc->svcpart;
28   
29     #$part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
30     #die "No part_svc entry!" unless $part_svc;
31
32   } else { #adding
33
34     $svc_acct_sm = new FS::svc_acct_sm({});
35
36     foreach $_ (split(/-/,$query)) { #get & untaint pkgnum & svcpart
37       $pkgnum=$1 if /^pkgnum(\d+)$/;
38       $svcpart=$1 if /^svcpart(\d+)$/;
39     }
40     my $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
41     die "No part_svc entry!" unless $part_svc;
42
43     $svcnum='';
44
45     #set fixed and default fields from part_svc
46     foreach my $part_svc_column (
47       grep { $_->columnflag } $part_svc->all_part_svc_column
48     ) {
49       $svc_acct_sm->setfield( $part_svc_column->columnname,
50                               $part_svc_column->columnvalue,
51                             );
52     }
53
54   }
55 }
56 my $action = $svc_acct_sm->svcnum ? 'Edit' : 'Add';
57
58 my %username = ();
59 my %domain = ();
60 if ($pkgnum) {
61
62   #find all possible uids (and usernames)
63
64   my @u_acct_svcparts = ();
65   foreach my $u_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_acct'}) ) {
66     push @u_acct_svcparts,$u_part_svc->getfield('svcpart');
67   }
68
69   my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
70   my($custnum)=$cust_pkg->getfield('custnum');
71   foreach my $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) {
72     my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum');
73     my($acct_svcpart);
74     foreach $acct_svcpart (@u_acct_svcparts) {   #now find the corresponding 
75                                               #record(s) in cust_svc ( for this
76                                               #pkgnum ! )
77       my($i_cust_svc);
78       foreach $i_cust_svc ( qsearch('cust_svc',{'pkgnum'=>$cust_pkgnum,'svcpart'=>$acct_svcpart}) ) {
79         my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$i_cust_svc->getfield('svcnum')});
80         $username{$svc_acct->getfield('uid')}=$svc_acct->getfield('username');
81       }  
82     }
83   }
84
85   #find all possible domains (and domsvc's)
86
87   my @d_acct_svcparts = ();
88   foreach my $d_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_domain'}) ) {
89     push @d_acct_svcparts,$d_part_svc->getfield('svcpart');
90   }
91
92   foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) {
93     my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum');
94     my($acct_svcpart);
95     foreach $acct_svcpart (@d_acct_svcparts) {
96       my($i_cust_svc);
97       foreach $i_cust_svc ( qsearch('cust_svc',{'pkgnum'=>$cust_pkgnum,'svcpart'=>$acct_svcpart}) ) {
98         my($svc_domain)=qsearch('svc_domain',{'svcnum'=>$i_cust_svc->getfield('svcnum')});
99         $domain{$svc_domain->getfield('svcnum')}=$svc_domain->getfield('domain');
100       }
101     }
102   }
103
104 } elsif ( $action eq 'Edit' ) {
105
106   my($svc_acct)=qsearchs('svc_acct',{'uid'=>$svc_acct_sm->domuid});
107   $username{$svc_acct_sm->uid} = $svc_acct->username;
108
109   my($svc_domain)=qsearchs('svc_domain',{'svcnum'=>$svc_acct_sm->domsvc});
110   $domain{$svc_acct_sm->domsvc} = $svc_domain->domain;
111
112 } else {
113   die "\$action eq Add, but \$pkgnum is null!\n";
114 }
115
116 my $p1 = popurl(1);
117 print header("Mail Alias $action", '');
118
119 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
120       "</FONT>"
121   if $cgi->param('error');
122
123 print qq!<FORM ACTION="${p1}process/svc_acct_sm.cgi" METHOD=POST>!;
124
125 #display
126
127         #formatting
128         print "<PRE>";
129
130 #svcnum
131 print qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!;
132 print qq!Service #<FONT SIZE=+1><B>!, $svcnum ? $svcnum : " (NEW)", "</B></FONT>";
133
134 #pkgnum
135 print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="$pkgnum">!;
136  
137 #svcpart
138 print qq!<INPUT TYPE="hidden" NAME="svcpart" VALUE="$svcpart">!;
139
140 my($domuser,$domsvc,$domuid)=(
141   $svc_acct_sm->domuser,
142   $svc_acct_sm->domsvc,
143   $svc_acct_sm->domuid,
144 );
145
146 #domuser
147 print qq!\n\nMail to <INPUT TYPE="text" NAME="domuser" VALUE="$domuser"> <I>( * for anything )</I>!;
148
149 #domsvc
150 print qq! \@ <SELECT NAME="domsvc" SIZE=1>!;
151 foreach $_ (keys %domain) {
152   print "<OPTION", $_ eq $domsvc ? " SELECTED" : "",
153         qq! VALUE="$_">$domain{$_}!;
154 }
155 print "</SELECT>";
156
157 #uid
158 print qq!\nforwards to <SELECT NAME="domuid" SIZE=1>!;
159 foreach $_ (keys %username) {
160   print "<OPTION", ($_ eq $domuid) ? " SELECTED" : "",
161         qq! VALUE="$_">$username{$_}!;
162 }
163 print "</SELECT>\@$mydomain mailbox.";
164
165         #formatting
166         print "</PRE>\n";
167
168 print qq!<CENTER><INPUT TYPE="submit" VALUE="Submit"></CENTER>!;
169
170 print <<END;
171
172     </FORM>
173   </BODY>
174 </HTML>
175 END
176
177 %>