% 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) {
<% edit_link($detail) %><% $money_char.$detail->min_charge %>
<% $detail->sec_granularity ? ' / minute':' / call' %>
<% $edit_hint %>
|
<% granularity_detail($detail) %>
<% min_included_detail($detail) %>
<% conn_charge_detail($detail) %>
<% $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) = @_;
'regionnum.
($rate_time ?
';ratetimenum='.$rate_time->ratetimenum :
''),
'actionlabel' => '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 { '' }
}
%once>
<%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 ];
}
%init>