remove $Log$ messages. whew.
[freeside.git] / httemplate / edit / svc_forward.cgi
1 <%
2 # <!-- $Id: svc_forward.cgi,v 1.2 2001-08-21 02:31:56 ivan Exp $ -->
3
4 use strict;
5 use vars qw( $conf $cgi $mydomain $action $svcnum $svc_forward $pkgnum $svcpart
6              $part_svc $query %email $p1 $srcsvc $dstsvc $dst );
7 use CGI;
8 use CGI::Carp qw(fatalsToBrowser);
9 use FS::UID qw(cgisuidsetup);
10 use FS::CGI qw(header popurl);
11 use FS::Record qw(qsearch qsearchs fields);
12 use FS::svc_forward;
13 use FS::Conf;
14
15 $cgi = new CGI;
16 &cgisuidsetup($cgi);
17
18 $conf = new FS::Conf;
19 $mydomain = $conf->config('domain');
20
21 if ( $cgi->param('error') ) {
22   $svc_forward = new FS::svc_forward ( {
23     map { $_, scalar($cgi->param($_)) } fields('svc_forward')
24   } );
25   $svcnum = $svc_forward->svcnum;
26   $pkgnum = $cgi->param('pkgnum');
27   $svcpart = $cgi->param('svcpart');
28   $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
29   die "No part_svc entry!" unless $part_svc;
30 } else {
31   my($query) = $cgi->keywords;
32   if ( $query =~ /^(\d+)$/ ) { #editing
33     $svcnum=$1;
34     $svc_forward=qsearchs('svc_forward',{'svcnum'=>$svcnum})
35       or die "Unknown (svc_forward) svcnum!";
36
37     my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
38       or die "Unknown (cust_svc) svcnum!";
39
40     $pkgnum=$cust_svc->pkgnum;
41     $svcpart=$cust_svc->svcpart;
42   
43     $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
44     die "No part_svc entry!" unless $part_svc;
45
46   } else { #adding
47
48     $svc_forward = new FS::svc_forward({});
49
50     foreach $_ (split(/-/,$query)) { #get & untaint pkgnum & svcpart
51       $pkgnum=$1 if /^pkgnum(\d+)$/;
52       $svcpart=$1 if /^svcpart(\d+)$/;
53     }
54     $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
55     die "No part_svc entry!" unless $part_svc;
56
57     $svcnum='';
58
59     #set fixed and default fields from part_svc
60     my($field);
61     foreach $field ( fields('svc_forward') ) {
62       if ( $part_svc->getfield('svc_forward__'. $field. '_flag') ne '' ) {
63         $svc_forward->setfield($field,$part_svc->getfield('svc_forward__'. $field) );
64       }
65     }
66
67   }
68 }
69 $action = $svc_forward->svcnum ? 'Edit' : 'Add';
70
71 if ($pkgnum) {
72
73   #find all possible user svcnums (and emails)
74
75   #starting with those currently attached
76   my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$svc_forward->srcsvc});
77   $email{$svc_forward->srcsvc} = $svc_acct->email;
78
79   if ($svc_forward->dstsvc) {
80     $svc_acct=qsearchs('svc_acct',{'svcnum'=>$svc_forward->dstsvc});
81     $email{$svc_forward->dstsvc} = $svc_acct->email;
82   }
83
84   #and including the rest for this customer
85   my($u_part_svc,@u_acct_svcparts);
86   foreach $u_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_acct'}) ) {
87     push @u_acct_svcparts,$u_part_svc->getfield('svcpart');
88   }
89
90   my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
91   my($custnum)=$cust_pkg->getfield('custnum');
92   my($i_cust_pkg);
93   foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) {
94     my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum');
95     my($acct_svcpart);
96     foreach $acct_svcpart (@u_acct_svcparts) {   #now find the corresponding 
97                                               #record(s) in cust_svc ( for this
98                                               #pkgnum ! )
99       my($i_cust_svc);
100       foreach $i_cust_svc ( qsearch('cust_svc',{'pkgnum'=>$cust_pkgnum,'svcpart'=>$acct_svcpart}) ) {
101         $svc_acct=qsearchs('svc_acct',{'svcnum'=>$i_cust_svc->getfield('svcnum')});
102         $email{$svc_acct->getfield('svcnum')}=$svc_acct->email;
103       }  
104     }
105   }
106
107 } elsif ( $action eq 'Edit' ) {
108
109   my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$svc_forward->srcsvc});
110   $email{$svc_forward->srcsvc} = $svc_acct->email;
111
112   $svc_acct=qsearchs('svc_acct',{'svcnum'=>$svc_forward->dstsvc});
113   $email{$svc_forward->dstsvc} = $svc_acct->email;
114
115 } else {
116   die "\$action eq Add, but \$pkgnum is null!\n";
117 }
118
119 ($srcsvc,$dstsvc,$dst)=(
120   $svc_forward->srcsvc,
121   $svc_forward->dstsvc,
122   $svc_forward->dst,
123 );
124
125 #display
126
127 $p1 = popurl(1);
128 print $cgi->header( '-expires' => 'now' ), header("Mail Forward $action", '',
129       " onLoad=\"visualize()\"");
130
131 %>
132
133 <SCRIPT>
134 function visualize(what){
135     if (document.getElementById) {
136       document.getElementById('dother').style.visibility = '<%= $dstsvc ? 'hidden' : 'visible' %>';
137     }
138 }
139 function fixup(what){
140     if (document.getElementById) {
141       if (document.getElementById('dother').style.visibility == 'hidden') {
142         what.dst.value='';
143       }
144     }
145 }
146 </SCRIPT>
147
148 <%
149
150 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
151       "</FONT>"
152   if $cgi->param('error');
153
154 print qq!<FORM ACTION="${p1}process/svc_forward.cgi" onSubmit="fixup(this)" METHOD=POST>!;
155
156 #svcnum
157 print qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!;
158 print qq!Service #<FONT SIZE=+1><B>!, $svcnum ? $svcnum : " (NEW)", "</B></FONT>";
159 print qq!<BR>!;
160
161 #pkgnum
162 print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="$pkgnum">!;
163  
164 #svcpart
165 print qq!<INPUT TYPE="hidden" NAME="svcpart" VALUE="$svcpart">!;
166
167 #srcsvc
168 print qq!\n\nMail to <SELECT NAME="srcsvc" SIZE=1>!;
169 foreach $_ (keys %email) {
170   print "<OPTION", $_ eq $srcsvc ? " SELECTED" : "",
171         qq! VALUE="$_">$email{$_}!;
172 }
173 print "</SELECT>";
174
175 #dstsvc
176 print qq! forwards to <SELECT NAME="dstsvc" SIZE=1 onChange="changed(this)">!;
177 foreach $_ (keys %email) {
178   print "<OPTION", $_ eq $dstsvc ? " SELECTED" : "",
179         qq! VALUE="$_">$email{$_}!;
180 }
181 print "<OPTION", 0 eq $dstsvc ? " SELECTED" : "",
182       qq! VALUE="0">(other)!;
183 print "</SELECT> mailbox.";
184
185 %>
186
187 <SCRIPT>
188 var selectchoice = null;
189 function changed(what) {
190   selectchoice = what.options[what.selectedIndex].value;
191   if (selectchoice == "0") {
192     if (document.getElementById) {
193       document.getElementById('dother').style.visibility = "visible";
194     }
195   }else{
196     if (document.getElementById) {
197       document.getElementById('dother').style.visibility = "hidden";
198     }
199   }
200 }
201 if (document.getElementById) {
202     document.write("<DIV ID=\"dother\" STYLE=\"visibility: hidden\">");
203 }
204 </SCRIPT>
205
206 <%
207 print qq! Other destination: <INPUT TYPE="text" NAME="dst" VALUE="$dst">!;
208 %>
209
210 <SCRIPT>
211 if (document.getElementById) {
212     document.write("</DIV>");
213 }
214 </SCRIPT>
215
216 <CENTER><INPUT TYPE="submit" VALUE="Submit"></CENTER>
217 </FORM>
218
219 <TAG onLoad="
220     if (document.getElementById) {
221       document.getElementById('dother').style.visibility = '<%= $dstsvc ? 'hidden' : 'visible' %>';
222       document.getElementById('dlabel').style.visibility = '<%= $dstsvc ? 'hidden' : 'visible' %>';
223     }
224 ">
225
226
227   </BODY>
228 </HTML>