diff options
author | mark <mark> | 2010-07-22 00:11:56 +0000 |
---|---|---|
committer | mark <mark> | 2010-07-22 00:11:56 +0000 |
commit | 342e2bfbe6aad470ab9dee40640f8ac7d9653003 (patch) | |
tree | bf350b2d3876651ee0c4487b0e321ec21f839f0c /httemplate/edit/process | |
parent | c26fea8a168f255412a8065c0a04758c9b0d340d (diff) |
cdr rating by day and time, part 2, RT#4763
Diffstat (limited to 'httemplate/edit/process')
-rwxr-xr-x | httemplate/edit/process/rate_region.cgi | 21 | ||||
-rw-r--r-- | httemplate/edit/process/rate_time.cgi | 42 |
2 files changed, 27 insertions, 36 deletions
diff --git a/httemplate/edit/process/rate_region.cgi b/httemplate/edit/process/rate_region.cgi index 8036f7388..d342e605a 100755 --- a/httemplate/edit/process/rate_region.cgi +++ b/httemplate/edit/process/rate_region.cgi @@ -1,6 +1,8 @@ %if ( $error ) { % $cgi->param('error', $error); <% $cgi->redirect(popurl(2). "rate_region.cgi?". $cgi->query_string ) %> +%} elsif ( $action eq 'Add' ) { +<% $cgi->redirect(popurl(2). "rate_region.cgi?$regionnum") %> %} else { <% $cgi->redirect(popurl(3). "browse/rate_region.html") %> %} @@ -11,6 +13,7 @@ die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); my $regionnum = $cgi->param('regionnum'); +my $action = $regionnum ? 'Edit' : 'Add'; my $old = qsearchs('rate_region', { 'regionnum' => $regionnum } ) if $regionnum; @@ -33,24 +36,12 @@ my @rate_prefix = map { 'npa' => $_, } } @npa; - -my @dest_detail = map { - my $ratenum = $_->ratenum; - new FS::rate_detail { - 'ratenum' => $ratenum, - map { $_ => $cgi->param("$_$ratenum") } - qw( min_included conn_charge conn_sec min_charge sec_granularity classnum ) - }; -} qsearch('rate', {} ); - - +# we no longer process dest_detail records here my $error; if ( $regionnum ) { - $error = $new->replace($old, 'rate_prefix' => \@rate_prefix, - 'dest_detail' => \@dest_detail, ); + $error = $new->replace($old, 'rate_prefix' => \@rate_prefix ); } else { - $error = $new->insert( 'rate_prefix' => \@rate_prefix, - 'dest_detail' => \@dest_detail, ); + $error = $new->insert( 'rate_prefix' => \@rate_prefix ); $regionnum = $new->getfield('regionnum'); } diff --git a/httemplate/edit/process/rate_time.cgi b/httemplate/edit/process/rate_time.cgi index 48ed2739e..4fa78ce6d 100644 --- a/httemplate/edit/process/rate_time.cgi +++ b/httemplate/edit/process/rate_time.cgi @@ -44,12 +44,13 @@ else { #!$ratetimenum, adding new $ratetimenum = $rate_time->ratetimenum; } +my @new_ints; if(!$delete and !$error) { - foreach my $i (map { /stime(\d+)/ } keys(%vars)) { - my $stime = str2wtime($vars{"stime$i"}); - my $etime = str2wtime($vars{"etime$i"}); - next if !defined($stime) or !defined($etime); - #warn "$i: $stime-$etime"; + foreach my $i (map { /^sd(\d+)$/ } keys(%vars)) { + my $stime = l2wtime(@vars{"sd$i", "sh$i", "sm$i", "sa$i"}); + my $etime = l2wtime(@vars{"ed$i", "eh$i", "em$i", "ea$i"}); + #warn "$i: $stime - $etime"; + next if !defined($stime) or !defined($etime) or $etime == $stime; # try to avoid needlessly wiping and replacing intervals every # time this is edited. if( %old_ints ) { @@ -63,12 +64,9 @@ if(!$delete and !$error) { next; #$i } } - my $new_int = FS::rate_time_interval->new({ ratetimenum => $ratetimenum, - stime => $stime, - etime => $etime, } ); - $error = $new_int->insert; - #warn "inserting $stime-$etime\n"; - last if $error; + push @new_ints, FS::rate_time_interval->new({ ratetimenum => $ratetimenum, + stime => $stime, + etime => $etime, } ); } } if(!$error) { @@ -78,17 +76,19 @@ if(!$error) { last if $error; } } +if(!$error) { + # do this last to avoid overlap errors with deleted intervals + foreach (@new_ints) { + $error = $_->insert; + #warn "inserting $stime-$etime\n"; + last if $error; + } +} -sub str2wtime { - my %days; - @days{qw(Sun Mon Tue Wed Thu Fri Sat)} = (0..6); - my $str = shift; - my ($d, $h, $m, $s, $ampm) = - ($str =~ /^(\w{3}) (\d{2}):(\d{2}):(\d{2}) (\w{2})$/); - return () if !$d; - $h += 24*$days{$d} + ($ampm eq 'PM' ? 12 : 0); +sub l2wtime { + my ($d, $h, $m, $a) = @_; + $h += 24*$d + 12*$a; $m += 60*$h; - $s += 60*$m; - return $s; + return 60*$m } </%init> |