<% my($rate, $error); if ( $cgi->param('magic') eq 'process' ) { my $ratenum = $cgi->param('ratenum'); my $old = qsearchs('rate', { 'ratenum' => $ratenum } ) if $ratenum; my @rate_detail = map { my $regionnum = $_->regionnum; if ( $cgi->param("sec_granularity$regionnum") ) { new FS::rate_detail { 'dest_regionnum' => $regionnum, map { $_ => scalar($cgi->param("$_$regionnum")) } qw( min_included min_charge sec_granularity ) }; } else { new FS::rate_detail { 'dest_regionnum' => $regionnum, 'min_included' => 0, 'min_charge' => 0, 'sec_granularity' => '60' }; } } qsearch('rate_region', {} ); $rate = new FS::rate ( { map { $_, scalar($cgi->param($_)); } fields('rate') } ); if ( $ratenum ) { warn "$rate replacing $old ($ratenum)\n"; $error = $rate->replace($old, 'rate_detail' => \@rate_detail ); } else { warn "inserting $rate\n"; $error = $rate->insert( 'rate_detail' => \@rate_detail ); $ratenum = $rate->getfield('ratenum'); } unless ( $error ) { print $cgi->redirect("${p}browse/rate.cgi"); myexit; } } elsif ( $cgi->keywords ) { my($query) = $cgi->keywords; $query =~ /^(\d+)$/; $rate = qsearchs( 'rate', { 'ratenum' => $1 } ); } else { #adding $rate = new FS::rate {}; } my $action = $rate->ratenum ? 'Edit' : 'Add'; my $p1 = popurl(1); my %granularity = ( '6' => '6 second', '60' => 'minute', ); my $nous = < <%= header("$action Rate plan", menubar( 'Main Menu' => $p, 'View all rate plans' => "${p}browse/rate.cgi", )) %> <% if ( $error ) { %> Error: <%= $error %>
<% } %>
Rate plan

<%= table() %> Region Prefix(es) Included
minutes
Charge per
minute
Granularity <% foreach my $rate_region ( qsearch( 'rate_region', {}, '', "$nous ORDER BY regionname", ) ) { my $n = $rate_region->regionnum; my $rate_detail = $rate->dest_detail($rate_region) || new FS::rate_detail { 'min_included' => 0, 'min_charge' => 0, 'sec_granularity' => '60' }; %> <%= $rate_region->regionname %> <%= $rate_region->prefixes_short %> min_included %>"> $min_charge ) %>"> <% } %> Add a region
"> Please be patient, <%= $rate->ratenum ? 'editing' : 'adding' %> a rate plan can take a few minutes...