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 %>
<% } %>
-