2 #<!-- $Id: catchall.cgi,v 1.2 2001-08-21 02:31:56 ivan Exp $ -->
5 use vars qw( $conf $cgi $action $svcnum $svc_domain $pkgnum $svcpart
6 $part_svc $query %email $p1 $domain $catchall );
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);
22 if ( $cgi->param('error') ) {
23 $svc_domain = new FS::svc_domain ( {
24 map { $_, scalar($cgi->param($_)) } fields('svc_domain')
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;
32 my($query) = $cgi->keywords;
33 if ( $query =~ /^(\d+)$/ ) { #editing
35 $svc_domain=qsearchs('svc_domain',{'svcnum'=>$svcnum})
36 or die "Unknown (svc_domain) svcnum!";
38 my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
39 or die "Unknown (cust_svc) svcnum!";
41 $pkgnum=$cust_svc->pkgnum;
42 $svcpart=$cust_svc->svcpart;
44 $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
45 die "No part_svc entry!" unless $part_svc;
49 die "Invalid (svc_domain) svcnum!";
56 #find all possible user svcnums (and emails)
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;
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');
70 my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
71 my($custnum)=$cust_pkg->getfield('custnum');
73 foreach $i_cust_pkg ( qsearch('cust_pkg',{'custnum'=>$custnum}) ) {
74 my($cust_pkgnum)=$i_cust_pkg->getfield('pkgnum');
76 foreach $acct_svcpart (@u_acct_svcparts) { #now find the corresponding
77 #record(s) in cust_svc ( for this
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;
89 my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$svc_domain->catchall});
90 $email{$svc_domain->catchall} = $svc_acct->email;
93 # add an absence of a catchall
97 print $cgi->header( '-expires' => 'now' ), header("Domain Catchall Edit", '');
99 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
101 if $cgi->param('error');
103 print qq!<FORM ACTION="${p1}process/catchall.cgi" METHOD=POST>!;
111 print qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!;
112 print qq!Service #<FONT SIZE=+1><B>!, $svcnum ? $svcnum : " (NEW)", "</B></FONT>";
115 print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="$pkgnum">!;
118 print qq!<INPUT TYPE="hidden" NAME="svcpart" VALUE="$svcpart">!;
120 ($domain,$catchall)=(
122 $svc_domain->catchall,
125 print qq!<INPUT TYPE="hidden" NAME="domain" VALUE="$domain">!;
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{$_}!;
138 print qq!<CENTER><INPUT TYPE="submit" VALUE="Submit"></CENTER>!;