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