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