<% include('/elements/init_overlib.html') %> <% include('/elements/header.html',$title) %> <% include('/elements/menubar.html',@menubar) %>

<% include('/elements/table-grid.html') %> % my $col = 0; % foreach (@header) { % my $hlink = $hlinks[$col]; <% $hlink ? qq!$_! : $_ %> % $col++; % } #foreach @header % my $row = 0; % foreach my $region (@rate_region) { % $col = 0; % foreach ($region->regionname, $region->prefixes_short) { <% $_ %> % } % foreach my $rate_time (@rate_time, '') { % my $detail = $details[$row][$col]; % if($detail) { <% granularity_detail($detail) %> <% min_included_detail($detail) %> <% conn_charge_detail($detail) %>
<% edit_link($detail) %><% $money_char.$detail->min_charge %> <% $detail->sec_granularity ? ' / minute':' / call' %> <% $edit_hint %>
<% $rate_time ? delete_link($detail) : '' %>
% } % else { #!$detail <% add_link($ratenum, $region, $rate_time) %> % } % $col++; % } # foreach @rate_time % $row++; % }# foreach @rate_region <% include('/elements/footer.html') %> <%once> tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); tie my %conn_secs, 'Tie::IxHash', FS::rate_detail::conn_secs(); my $conf = new FS::Conf; my $money_char = $conf->config('money_char') || '$'; my @menubar = ( 'Rate plans' => $p.'browse/rate.cgi', 'Regions and Prefixes' => $p.'browse/rate_region.html', 'Time Periods' => $p.'browse/rate_time.html', ); sub small { ''.shift.'' } my $edit_hint = small('(edit)'); sub edit_link { my $rate_detail = shift; my $ratedetailnum = $rate_detail->ratedetailnum; ' 'Edit rate', 'height' => 420, #default# 'width' => 540, #default# 'color' => '#333399', ) . '">' } sub add_link { my ($ratenum, $region, $rate_time) = @_; ' 'Add rate', 'height' => 420, ).'">'.small('(add)').'' } sub delete_link { my $rate_detail = shift; my $ratedetailnum = $rate_detail->ratedetailnum; my $onclick = include( '/elements/popup_link_onclick.html', 'action' => "${p}misc/delete-rate_detail.html?$ratedetailnum", 'actionlabel' => 'Delete rate', 'width' => 510, 'height' => 315, 'frame' => 'top', ); $onclick = "if(confirm('Delete this rate?')) { $onclick }"; qq!!.small('(delete)').'' } sub granularity_detail { my $rate_detail = shift; if($rate_detail->sec_granularity != 60 && $rate_detail->sec_granularity > 0) { ''. small('in '.$granularity{$rate_detail->sec_granularity}.' increments'). ''; } else { '' } } sub min_included_detail { my $rate_detail = shift; if($rate_detail->min_included) { ''. small( $rate_detail->min_included . ($rate_detail->sec_granularity ? ' minutes included' : ' calls included') ). '' } else { '' } } sub conn_charge_detail { my $rate_detail = shift; if($rate_detail->conn_charge > 0) { #return '' unless $rate_detail->conn_charge > 0 || $rate_detail->conn_sec; ''. small( $money_char. $rate_detail->conn_charge. ' for '.$conn_secs{$rate_detail->conn_sec} ). '' } else { '' } } <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); $cgi->param('ratenum') =~ /^(\d+)$/ or die "unparsable ratenum"; my $ratenum = $1; my $rate = qsearchs('rate', { 'ratenum' => $ratenum } ) or die "unknown ratenum $ratenum"; my $ratename = $rate->ratename; my $title = "$ratename rates"; my $where; if ( $cgi->param('countrycode') =~ /^(\d+)$/ ) { my $countrycode = $1; $where = "WHERE 0 < ( SELECT COUNT(*) FROM rate_prefix WHERE rate_prefix.regionnum = rate_region.regionnum AND countrycode = '$countrycode' ) "; $title .= " for +$countrycode"; } my @rate_region = qsearch({ table => 'rate_region', hashref => {}, extra_sql => $where, }); my @rate_time = qsearch('rate_time', {}); my @header = ('Region', 'Prefix(es)', map( { $_->ratetimename } @rate_time ), '(default)'); my @hlinks = map {''} @header; my @rtns = ( map( { $_->ratetimenum } @rate_time ), '' ); my @details; foreach my $region (@rate_region) { push @details, [ map { qsearchs('rate_detail', { 'ratenum' => $ratenum, 'dest_regionnum' => $region->regionnum, 'ratetimenum' => $_ } ) or '' } @rtns ]; }