X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Frate.cgi;h=4a4b70ea32a3f521f6a5b2382145c973b9d7c558;hp=4fdc837bb1252a76abb874a1661ba4538c8d732d;hb=2f41d7382dac4f151de86ce06ad9846c89f56791;hpb=188b48a07be463b5c932fec6b65762bbad2d5482 diff --git a/httemplate/edit/rate.cgi b/httemplate/edit/rate.cgi index 4fdc837bb..4a4b70ea3 100644 --- a/httemplate/edit/rate.cgi +++ b/httemplate/edit/rate.cgi @@ -1,11 +1,51 @@ - <% -my $rate; -if ( $cgi->param('error') ) { +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') + 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+)$/; @@ -37,12 +77,12 @@ END )) %> -<% if ( $cgi->param('error') ) { %> -Error: <%= $cgi->param('error') %>
+<% if ( $error ) { %> +Error: <%= $error %>
<% } %> -
- + + Rate plan @@ -68,7 +108,7 @@ Rate plan my $n = $rate_region->regionnum; my $rate_detail = $rate->dest_detail($rate_region) - || new FS::rate_region { 'min_included' => 0, + || new FS::rate_detail { 'min_included' => 0, 'min_charge' => 0, 'sec_granularity' => '60' }; @@ -95,9 +135,11 @@ Rate plan -
"> +Please be patient, <%= $rate->ratenum ? 'editing' : 'adding' %> +a rate plan can take a few minutes...