1 <% include("/elements/header.html","$action Region", menubar(
2 'View all regions' => "${p}browse/rate_region.html",
6 <% include('/elements/error.html') %>
8 <FORM ACTION="<%$p1%>process/rate_region.cgi" METHOD=POST>
10 <INPUT TYPE="hidden" NAME="regionnum" VALUE="<% $rate_region->regionnum %>">
14 <% ntable('#cccccc') %>
17 <TH ALIGN="right">Region name</TH>
18 <TD><INPUT TYPE="text" NAME="regionname" SIZE=32 VALUE="<% $rate_region->regionname %>"></TR>
22 <TH ALIGN="right">Country code</TH>
23 <TD><INPUT TYPE="text" NAME="countrycode" SIZE=4 MAXLENGTH=3 VALUE="<% $countrycode %>"></TR>
29 <BR><FONT SIZE="-1">(comma-separated)</FONT>
32 <TEXTAREA NAME="npa" WRAP=SOFT><% join(', ', map { $_->npa. (length($_->nxx) ? '-'.$_->nxx : '') } @rate_prefix ) %></TEXTAREA>
42 <% include('/elements/table-grid.html') %>
43 % my $bgcolor1 = '#eeeeee';
44 % my $bgcolor2 = '#ffffff';
48 <TH CLASS="grid" BGCOLOR="#cccccc">
51 <TH CLASS="grid" BGCOLOR="#cccccc">
52 <FONT SIZE=-1>Included<BR>minutes/calls</FONT>
54 <TH CLASS="grid" BGCOLOR="#cccccc">
55 <FONT SIZE=-1>Connection<BR>charge</FONT>
57 <TH CLASS="grid" BGCOLOR="#cccccc">
58 <FONT SIZE=-1>Connection<BR>charge for</FONT>
60 <TH CLASS="grid" BGCOLOR="#cccccc">
61 <FONT SIZE=-1>Charge per<BR>minute/call</FONT>
63 <TH CLASS="grid" BGCOLOR="#cccccc">
64 <FONT SIZE=-1>Granularity</FONT>
66 <TH CLASS="grid" BGCOLOR="#cccccc">
67 <FONT SIZE=-1>Usage class</FONT>
71 % foreach my $rate ( qsearch('rate', {}) ) {
73 % my $n = $rate->ratenum;
74 % my $rate_detail = $rate->dest_detail($rate_region)
75 % || new FS::rate_region { 'min_included' => 0,
77 % 'sec_granularity' => '60'
80 % if ( $bgcolor eq $bgcolor1 ) {
81 % $bgcolor = $bgcolor2;
83 % $bgcolor = $bgcolor1;
88 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
89 <A HREF="<%$p%>edit/rate.cgi?<% $rate->ratenum %>"><% $rate->ratename %></A>
92 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
93 <INPUT TYPE="text" SIZE=9 NAME="min_included<%$n%>" VALUE="<% $cgi->param("min_included$n") || $rate_detail->min_included |h %>">
96 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
97 <%$money_char%><INPUT TYPE="text" SIZE=9 NAME="conn_charge<%$n%>" VALUE="<% $cgi->param("conn_charge$n") || $rate_detail->conn_charge |h %>">
100 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
101 <SELECT NAME="conn_sec<%$n%>">
102 % foreach my $conn_sec ( keys %conn_secs ) {
103 % my $curr_value = $cgi->param("conn_sec$n") || $rate_detail->conn_sec;
104 % my $selected = ($conn_sec==$curr_value) ? ' SELECTED' : '';
105 <OPTION VALUE="<% $conn_sec %>" <%$selected%>><% $conn_secs{$conn_sec} %></OPTION>
109 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
110 <%$money_char%><INPUT TYPE="text" SIZE=6 NAME="min_charge<%$n%>" VALUE="<% $cgi->param("min_charge$n") || $rate_detail->min_charge |h %>">
113 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
114 <SELECT NAME="sec_granularity<%$n%>">
115 % foreach my $granularity ( keys %granularity ) {
116 <OPTION VALUE="<%$granularity%>"<% $granularity == ( $cgi->param("sec_granularity$n") || $rate_detail->sec_granularity ) ? ' SELECTED' : '' %>><%$granularity{$granularity}%>
121 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
122 <% include( '/elements/select-table.html',
123 'element_name' => "classnum$n",
124 'table' => 'usage_class',
125 'name_col' => 'classname',
126 'empty_label' => '(default)',
127 'hashref' => { disabled => '' },
128 'curr_value' => ( $cgi->param("classnum$n") ||
129 $rate_detail->classnum ),
142 <INPUT TYPE="submit" VALUE="<% $rate_region->regionnum ? "Apply changes" : "Add region" %>">
146 <% include('/elements/footer.html') %>
149 tie my %conn_secs, 'Tie::IxHash', FS::rate_detail::conn_secs();
155 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
157 my $conf = new FS::Conf;
158 my $money_char = $conf->config('money_char') || '$';
161 if ( $cgi->param('error') ) {
162 $rate_region = new FS::rate_region ( {
163 map { $_, scalar($cgi->param($_)) } fields('rate_region')
165 } elsif ( $cgi->keywords ) {
166 my($query) = $cgi->keywords;
167 $query =~ /^(\d+)$/ or die "unparsable regionnum";
168 $rate_region = qsearchs( 'rate_region', { 'regionnum' => $1 } )
169 or die "unknown regionnum $1\n";
171 $rate_region = new FS::rate_region {};
173 my $action = $rate_region->regionnum ? 'Edit' : 'Add';
177 tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
179 my @rate_prefix = $rate_region->rate_prefix;
180 my $countrycode = '';
181 if ( @rate_prefix ) {
182 $countrycode = $rate_prefix[0]->countrycode;
183 foreach my $rate_prefix ( @rate_prefix ) {
184 errorpage('multiple country codes per region not yet supported by web UI')
185 unless $rate_prefix->countrycode eq $countrycode;