5 if ( $cgi->param('magic') eq 'process' ) {
7 my $ratenum = $cgi->param('ratenum');
9 my $old = qsearchs('rate', { 'ratenum' => $ratenum } ) if $ratenum;
11 my @rate_detail = map {
12 my $regionnum = $_->regionnum;
13 if ( $cgi->param("sec_granularity$regionnum") ) {
15 'dest_regionnum' => $regionnum,
16 map { $_ => scalar($cgi->param("$_$regionnum")) }
17 qw( min_included min_charge sec_granularity )
21 'dest_regionnum' => $regionnum,
24 'sec_granularity' => '60'
27 } qsearch('rate_region', {} );
29 $rate = new FS::rate ( {
31 $_, scalar($cgi->param($_));
36 warn "$rate replacing $old ($ratenum)\n";
37 $error = $rate->replace($old, 'rate_detail' => \@rate_detail );
39 warn "inserting $rate\n";
40 $error = $rate->insert( 'rate_detail' => \@rate_detail );
41 $ratenum = $rate->getfield('ratenum');
45 print $cgi->redirect("${p}browse/rate.cgi");
49 } elsif ( $cgi->keywords ) {
50 my($query) = $cgi->keywords;
52 $rate = qsearchs( 'rate', { 'ratenum' => $1 } );
54 $rate = new FS::rate {};
56 my $action = $rate->ratenum ? 'Edit' : 'Add';
66 WHERE 0 < ( SELECT COUNT(*) FROM rate_prefix
67 WHERE rate_region.regionnum = rate_prefix.regionnum
68 AND countrycode != '1'
74 <%= header("$action Rate plan", menubar(
76 'View all rate plans' => "${p}browse/rate.cgi",
81 <FONT SIZE="+1" COLOR="#ff0000">Error: <%= $error %></FONT><BR>
84 <FORM ACTION="<%=$p1%>rate.cgi" NAME="OneTrueForm" METHOD=POST onSubmit="document.OneTrueForm.submit.disabled=true">
85 <INPUT TYPE="hidden" NAME="magic" VALUE="process">
86 <INPUT TYPE="hidden" NAME="ratenum" VALUE="<%= $rate->ratenum %>">
89 <INPUT TYPE="text" NAME="ratename" SIZE=32 VALUE="<%= $rate->ratename %>">
96 <TH><FONT SIZE=-1>Included<BR>minutes</FONT></TH>
97 <TH><FONT SIZE=-1>Charge per<BR>minute</FONT></TH>
98 <TH><FONT SIZE=-1>Granularity</FONT></TH>
101 <% foreach my $rate_region (
102 qsearch( 'rate_region',
105 "$nous ORDER BY regionname",
108 my $n = $rate_region->regionnum;
110 $rate->dest_detail($rate_region)
111 || new FS::rate_detail { 'min_included' => 0,
113 'sec_granularity' => '60'
117 <TD><A HREF="<%=$p%>edit/rate_region.cgi?<%= $rate_region->regionnum %>"><%= $rate_region->regionname %></A></TD>
118 <TD><%= $rate_region->prefixes_short %></TD>
119 <TD><INPUT TYPE="text" SIZE=5 NAME="min_included<%=$n%>" VALUE="<%= $cgi->param("min_included$n") || $rate_detail->min_included %>"></TD>
120 <TD>$<INPUT TYPE="text" SIZE=4 NAME="min_charge<%=$n%>" VALUE="<%= sprintf('%.2f', $cgi->param("min_charge$n") || $rate_detail->min_charge ) %>"></TD>
122 <SELECT NAME="sec_granularity<%=$n%>">
123 <% foreach my $granularity ( keys %granularity ) { %>
124 <OPTION VALUE="<%=$granularity%>"<%= $granularity == ( $cgi->param("sec_granularity$n") || $rate_detail->sec_granularity ) ? ' SELECTED' : '' %>><%=$granularity{$granularity}%>
131 <TD COLSPAN=5 ALIGN="center">
132 <A HREF="<%=$p%>edit/rate_region.cgi"><I>Add a region</I></A>
138 <BR><INPUT NAME="submit" TYPE="submit" VALUE="<%=
139 $rate->ratenum ? "Apply changes" : "Add rate plan"
141 Please be patient, <%= $rate->ratenum ? 'editing' : 'adding' %>
142 a rate plan can take a few minutes...