removed <!-- $Id$ --> from all files to fix any redirects, whew
[freeside.git] / httemplate / misc / catchall.cgi
1 <%
2
3 my $conf = new FS::Conf;
4
5 my($svc_domain, $svcnum, $pkgnum, $svcpart, $part_svc);
6 if ( $cgi->param('error') ) {
7   $svc_domain = new FS::svc_domain ( {
8     map { $_, scalar($cgi->param($_)) } fields('svc_domain')
9   } );
10   $svcnum = $svc_domain->svcnum;
11   $pkgnum = $cgi->param('pkgnum');
12   $svcpart = $cgi->param('svcpart');
13   $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
14   die "No part_svc entry!" unless $part_svc;
15 } else {
16   my($query) = $cgi->keywords;
17   if ( $query =~ /^(\d+)$/ ) { #editing
18     $svcnum=$1;
19     $svc_domain=qsearchs('svc_domain',{'svcnum'=>$svcnum})
20       or die "Unknown (svc_domain) svcnum!";
21
22     my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
23       or die "Unknown (cust_svc) svcnum!";
24
25     $pkgnum=$cust_svc->pkgnum;
26     $svcpart=$cust_svc->svcpart;
27   
28     $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
29     die "No part_svc entry!" unless $part_svc;
30
31   } else { 
32
33     die "Invalid (svc_domain) svcnum!";
34
35   }
36 }
37
38 my %email;
39 if ($pkgnum) {
40
41   #find all possible user svcnums (and emails)
42
43   #starting with that currently attached
44   if ($svc_domain->catchall) {
45     my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$svc_domain->catchall});
46     $email{$svc_domain->catchall} = $svc_acct->email;
47   }
48
49   #and including the rest for this customer
50   my($u_part_svc,@u_acct_svcparts);
51   foreach $u_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_acct'}) ) {
52     push @u_acct_svcparts,$u_part_svc->getfield('svcpart');
53   }
54
55   my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
56   my($custnum)=$cust_pkg->getfield('custnum');
57   my($i_cust_pkg);
58   foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) {
59     my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum');
60     my($acct_svcpart);
61     foreach $acct_svcpart (@u_acct_svcparts) {   #now find the corresponding 
62                                               #record(s) in cust_svc ( for this
63                                               #pkgnum ! )
64       my($i_cust_svc);
65       foreach $i_cust_svc ( qsearch('cust_svc',{'pkgnum'=>$cust_pkgnum,'svcpart'=>$acct_svcpart}) ) {
66         my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$i_cust_svc->getfield('svcnum')});
67         $email{$svc_acct->getfield('svcnum')}=$svc_acct->email;
68       }  
69     }
70   }
71
72 } else {
73
74   my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$svc_domain->catchall});
75   $email{$svc_domain->catchall} = $svc_acct->email;
76 }
77
78 # add an absence of a catchall
79 $email{0} = "(none)";
80
81 my $p1 = popurl(1);
82 print header("Domain Catchall Edit", '');
83
84 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
85       "</FONT>"
86   if $cgi->param('error');
87
88 print qq!<FORM ACTION="${p1}process/catchall.cgi" METHOD=POST>!;
89
90 #display
91
92         #formatting
93         print "<PRE>";
94
95 #svcnum
96 print qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!;
97 print qq!Service #<FONT SIZE=+1><B>!, $svcnum ? $svcnum : " (NEW)", "</B></FONT>";
98
99 #pkgnum
100 print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="$pkgnum">!;
101  
102 #svcpart
103 print qq!<INPUT TYPE="hidden" NAME="svcpart" VALUE="$svcpart">!;
104
105 my($domain,$catchall)=(
106   $svc_domain->domain,
107   $svc_domain->catchall,
108 );
109
110 print qq!<INPUT TYPE="hidden" NAME="domain" VALUE="$domain">!;
111
112 #catchall
113 print qq!\n\nMail to <I>(anything)</I>@<B>$domain</B> forwards to <SELECT NAME="catchall" SIZE=1>!;
114 foreach $_ (keys %email) {
115   print "<OPTION", $_ eq $catchall ? " SELECTED" : "",
116         qq! VALUE="$_">$email{$_}!;
117 }
118 print "</SELECT>";
119
120         #formatting
121         print "</PRE>\n";
122
123 print qq!<CENTER><INPUT TYPE="submit" VALUE="Submit"></CENTER>!;
124
125 print <<END;
126
127     </FORM>
128   </BODY>
129 </HTML>
130 END
131
132 %>