2 % $cgi->param('error', $error);
3 <% $cgi->redirect(popurl(2). "rate_time.cgi?". $cgi->query_string ) %>
5 <% $cgi->redirect(popurl(3). "browse/rate_time.html" ) %>
7 %# dumper_html(\%vars, \%old_ints, {$rate_time->intervals}) %>
11 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
12 my $ratetimenum = $cgi->param('ratetimenum');
13 my $ratetimename = $cgi->param('ratetimename');
14 my $delete = $cgi->param('delete');
16 my %vars = $cgi->Vars;
17 #warn Dumper(\%vars)."\n";
24 $rate_time = FS::rate_time->by_key($ratetimenum);
26 # make a list of existing intervals that will be deleted
27 foreach ($rate_time->intervals) {
28 $old_ints{$_->intervalnum} = $_;
32 $error = $rate_time->delete;
33 # intervals will be deleted later
35 elsif( $ratetimename ne $rate_time->ratetimename ) {
36 # the only case where the rate_time itself must be replaced
37 $rate_time->ratetimename($ratetimename);
38 $error = $rate_time->replace;
41 else { #!$ratetimenum, adding new
42 $rate_time = FS::rate_time->new({ ratetimename => $ratetimename });
43 $error = $rate_time->insert;
44 $ratetimenum = $rate_time->ratetimenum;
47 if(!$delete and !$error) {
48 foreach my $i (map { /stime(\d+)/ } keys(%vars)) {
49 my $stime = str2wtime($vars{"stime$i"});
50 my $etime = str2wtime($vars{"etime$i"});
51 next if !defined($stime) or !defined($etime);
52 #warn "$i: $stime-$etime";
53 # try to avoid needlessly wiping and replacing intervals every
54 # time this is edited.
56 my $this_int = qsearchs('rate_time_interval',
57 { ratetimenum => $ratetimenum,
61 delete $old_ints{$this_int->intervalnum};
62 #warn "not deleting $stime-$etime\n";
66 my $new_int = FS::rate_time_interval->new({ ratetimenum => $ratetimenum,
69 $error = $new_int->insert;
70 #warn "inserting $stime-$etime\n";
75 foreach (values(%old_ints)) {
77 #warn "deleting ".$_->stime.' '.$_->etime."\n";
84 @days{qw(Sun Mon Tue Wed Thu Fri Sat)} = (0..6);
86 my ($d, $h, $m, $s, $ampm) =
87 ($str =~ /^(\w{3}) (\d{2}):(\d{2}):(\d{2}) (\w{2})$/);
89 $h += 24*$days{$d} + ($ampm eq 'PM' ? 12 : 0);