fix for correct radacct column names
[freeside.git] / httemplate / edit / svc_broadband.cgi
1 <!-- mason kludge -->
2 <%
3
4 my( $svcnum,  $pkgnum, $svcpart, $part_svc, $svc_broadband );
5 if ( $cgi->param('error') ) {
6   $svc_broadband = new FS::svc_broadband ( {
7     map { $_, scalar($cgi->param($_)) } fields('svc_broadband')
8   } );
9   $svcnum = $svc_broadband->svcnum;
10   $pkgnum = $cgi->param('pkgnum');
11   $svcpart = $cgi->param('svcpart');
12   $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
13   die "No part_svc entry!" unless $part_svc;
14 } else {
15   my($query) = $cgi->keywords;
16   if ( $query =~ /^(\d+)$/ ) { #editing
17     $svcnum=$1;
18     $svc_broadband=qsearchs('svc_broadband',{'svcnum'=>$svcnum})
19       or die "Unknown (svc_broadband) svcnum!";
20
21     my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
22       or die "Unknown (cust_svc) svcnum!";
23
24     $pkgnum=$cust_svc->pkgnum;
25     $svcpart=$cust_svc->svcpart;
26   
27     $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
28     die "No part_svc entry!" unless $part_svc;
29
30   } else { #adding
31
32     $svc_broadband = new FS::svc_broadband({});
33
34     foreach $_ (split(/-/,$query)) { #get & untaint pkgnum & svcpart
35       $pkgnum=$1 if /^pkgnum(\d+)$/;
36       $svcpart=$1 if /^svcpart(\d+)$/;
37     }
38     $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
39     die "No part_svc entry!" unless $part_svc;
40
41     $svcnum='';
42
43     #set fixed and default fields from part_svc
44     foreach my $part_svc_column (
45       grep { $_->columnflag } $part_svc->all_part_svc_column
46     ) {
47       $svc_broadband->setfield( $part_svc_column->columnname,
48                                 $part_svc_column->columnvalue,
49                               );
50     }
51
52   }
53 }
54 my $action = $svc_broadband->svcnum ? 'Edit' : 'Add';
55
56 my @ac_list;
57
58 if ($pkgnum) {
59
60   unless ($svc_broadband->actypenum) {die "actypenum must be set fixed";};
61   @ac_list = qsearch('ac', { actypenum => $svc_broadband->getfield('actypenum') });
62
63 } elsif ( $action eq 'Edit' ) {
64
65   #Nothing?
66
67 } else {
68   die "\$action eq Add, but \$pkgnum is null!\n";
69 }
70
71
72 my $p1 = popurl(1);
73 print header("Broadband Service $action", '');
74
75 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
76       "</FONT>"
77   if $cgi->param('error');
78
79 print qq!<FORM ACTION="${p1}process/svc_broadband.cgi" METHOD=POST>!;
80
81 #display
82
83  
84
85 #svcnum
86 print qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!;
87 print qq!Service #<B>!, $svcnum ? $svcnum : "(NEW)", "</B><BR><BR>";
88
89 #pkgnum
90 print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="$pkgnum">!;
91  
92 #svcpart
93 print qq!<INPUT TYPE="hidden" NAME="svcpart" VALUE="$svcpart">!;
94
95 #actypenum
96 print '<INPUT TYPE="hidden" NAME="actypenum" VALUE="' .
97       $svc_broadband->actypenum . '">';
98
99
100 print &ntable("#cccccc",2) . qq!<TR><TD ALIGN="right">AC</TD><TD>!;
101
102 #acnum
103 if (( $part_svc->part_svc_column('acnum')->columnflag eq 'F' ) or
104     ( !$pkgnum )) {
105
106   my $ac = qsearchs('ac', { acnum => $svc_broadband->acnum });
107   my ($acnum, $acname) = ($ac->acnum, $ac->acname);
108
109   print qq!<INPUT TYPE="hidden" NAME="acnum" VALUE="${acnum}">! .
110         qq!${acnum}: ${acname}</TD></TR>!;
111
112 } else {
113
114   my @ac_list = qsearch('ac', { actypenum => $svc_broadband->actypenum });
115   print qq!<SELECT NAME="acnum" SIZE="1"><OPTION VALUE=""></OPTION>!;
116
117   foreach ( @ac_list ) {
118     my ($acnum, $acname) = ($_->acnum, $_->acname);
119     print qq!<OPTION VALUE="${acnum}"! .
120           ($acnum == $svc_broadband->acnum ? ' SELECTED>' : '>') .
121           qq!${acname}</OPTION>!;
122   }
123   print '</TD></TR>';
124
125 }
126
127 #speed_up & speed_down
128 my ($speed_up, $speed_down) = ($svc_broadband->speed_up,
129                                $svc_broadband->speed_down);
130
131 print '<TR><TD ALIGN="right">Download speed</TD><TD>';
132 if ( $part_svc->part_svc_column('speed_down')->columnflag eq 'F' ) {
133   print qq!<INPUT TYPE="hidden" NAME="speed_down" VALUE="${speed_down}">! .
134         qq!${speed_down}Kbps</TD></TR>!;
135 } else {
136   print qq!<INPUT TYPE="text" NAME="speed_down" SIZE=5 VALUE="${speed_down}">! .
137         qq!Kbps</TD></TR>!;
138 }
139
140 print '<TR><TD ALIGN="right">Upload speed</TD><TD>';
141 if ( $part_svc->part_svc_column('speed_up')->columnflag eq 'F' ) {
142   print qq!<INPUT TYPE="hidden" NAME="speed_up" VALUE="${speed_up}">! .
143         qq!${speed_up}Kbps</TD></TR>!;
144 } else {
145   print qq!<INPUT TYPE="text" NAME="speed_up" SIZE=5 VALUE="${speed_up}">! .
146         qq!Kbps</TD></TR>!;
147 }
148
149 #ip_addr & ip_netmask
150 #We're assuming that ip_netmask is fixed if ip_addr is fixed.
151 #If it isn't, well, <shudder> what the heck are you doing!?!?
152
153 my ($ip_addr, $ip_netmask) = ($svc_broadband->ip_addr,
154                               $svc_broadband->ip_netmask);
155
156 print '<TR><TD ALIGN="right">IP address/Mask</TD><TD>';
157 if ( $part_svc->part_svc_column('ip_addr')->columnflag eq 'F' ) {
158   print qq!<INPUT TYPE="hidden" NAME="ip_addr" VALUE="${ip_addr}">! .
159         qq!<INPUT TYPE="hidden" NAME="ip_netmask" VALUE="${ip_netmask}">! .
160         qq!${ip_addr}/${ip_netmask}</TD></TR>!;
161 } else {
162   $ip_addr =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
163   print <<END;
164   <INPUT TYPE="text" NAME="ip_addr_a" SIZE="3" MAXLENGTH="3" VALUE="${1}">.
165   <INPUT TYPE="text" NAME="ip_addr_b" SIZE="3" MAXLENGTH="3" VALUE="${2}">.
166   <INPUT TYPE="text" NAME="ip_addr_c" SIZE="3" MAXLENGTH="3" VALUE="${3}">.
167   <INPUT TYPE="text" NAME="ip_addr_d" SIZE="3" MAXLENGTH="3" VALUE="${4}">/
168   <INPUT TYPE="text" NAME="ip_netmask" SIZE="2" MAXLENGTH="2" VALUE="${ip_netmask}">
169 </TD></TR>
170 <TR><TD COLSPAN="2" WIDTH="300">
171 <P><SMALL>Leave the IP address and netmask blank for automatic assignment of a /32 address.  Specifing the netmask and not the address will force assignment of a larger block.</SMALL></P>
172 </TD></TR>
173 END
174 }
175
176 #mac_addr
177 my $mac_addr = $svc_broadband->mac_addr;
178
179 unless (( $part_svc->part_svc_column('mac_addr')->columnflag eq 'F' ) and
180         ( $mac_addr eq '' )) {
181   print '<TR><TD ALIGN="right">MAC Address</TD><TD>';
182   if ( $part_svc->part_svc_column('mac_addr')->columnflag eq 'F' ) { #Why?
183     print qq!<INPUT TYPE="hidden" NAME="mac_addr" VALUE="${mac_addr}">! .
184           qq!${mac_addr}</TD></TR>!;
185   } else {
186     #Ewwww
187     $mac_addr =~ /^([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2})$/i;
188     print <<END;
189   <INPUT TYPE="text" NAME="mac_addr_a" SIZE="2" MACLENGTH="2" VALUE="${1}">:
190   <INPUT TYPE="text" NAME="mac_addr_b" SIZE="2" MACLENGTH="2" VALUE="${2}">:
191   <INPUT TYPE="text" NAME="mac_addr_c" SIZE="2" MACLENGTH="2" VALUE="${3}">:
192   <INPUT TYPE="text" NAME="mac_addr_d" SIZE="2" MACLENGTH="2" VALUE="${4}">:
193   <INPUT TYPE="text" NAME="mac_addr_e" SIZE="2" MACLENGTH="2" VALUE="${5}">:
194   <INPUT TYPE="text" NAME="mac_addr_f" SIZE="2" MACLENGTH="2" VALUE="${6}">
195 </TD></TR>
196 END
197
198   }
199 }
200
201 #location
202 my $location = $svc_broadband->location;
203
204 print '<TR><TD VALIGN="top" ALIGN="right">Location</TD><TD BGCOLOR="#e8e8e8">';
205 if ( $part_svc->part_svc_column('location')->columnflag eq 'F' ) {
206   print qq!<PRE>${location}</PRE></TD></TR>!;
207 } else {
208   print qq!<TEXTAREA ROWS="4" COLS="30" NAME="location">${location}</TEXTAREA>!;
209 }
210
211 print '</TABLE><BR><INPUT TYPE="submit" VALUE="Submit">';
212
213 print <<END;
214
215     </FORM>
216   </BODY>
217 </HTML>
218 END
219 %>