1 <% include('/elements/init_overlib.html') %>
2 <% include('/elements/header.html',$title) %>
3 <% include('/elements/menubar.html',@menubar) %>
5 <% include('/elements/table-grid.html') %>
9 % my $hlink = $hlinks[$col];
12 <% $hlink ? qq!<A HREF="$hlink">$_</A>! : $_ %>
18 % foreach my $region (@rate_region) {
20 % foreach ($region->regionname, $region->prefixes_short) {
22 <A HREF="<% $p.'edit/rate_region.cgi?'.$region->regionnum %>"><% $_ %></A>
25 % foreach my $rate_time (@rate_time, '') {
27 % my $detail = $details[$row][$col];
29 <TABLE CLASS="inv" STYLE="border:none">
30 <TR><TD><% edit_link($detail) %><% $money_char.$detail->min_charge %>
31 <% $detail->sec_granularity ? ' / minute':' / call' %>
34 <% granularity_detail($detail) %>
35 <% min_included_detail($detail) %>
36 <% conn_charge_detail($detail) %>
37 <TR><TD><% $rate_time ? delete_link($detail) : '' %></TD></TR>
41 <% add_link($ratenum, $region, $rate_time) %>
45 % } # foreach @rate_time
48 % }# foreach @rate_region
49 <% include('/elements/footer.html') %>
53 tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
54 tie my %conn_secs, 'Tie::IxHash', FS::rate_detail::conn_secs();
56 my $conf = new FS::Conf;
57 my $money_char = $conf->config('money_char') || '$';
59 my @menubar = ( 'Rate plans' => $p.'browse/rate.cgi',
60 'Regions and Prefixes' => $p.'browse/rate_region.html',
61 'Time Periods' => $p.'browse/rate_time.html',
65 '<FONT SIZE="-1">'.shift.'</FONT>'
67 my $edit_hint = small('(edit)');
70 my $rate_detail = shift;
71 my $ratedetailnum = $rate_detail->ratedetailnum;
72 '<A HREF="javascript:void(0);" onclick="'.
73 include( '/elements/popup_link_onclick.html',
74 'action' => "${p}edit/rate_detail.html?$ratedetailnum",
75 'actionlabel' => 'Edit rate',
77 #default# 'width' => 540,
78 #default# 'color' => '#333399',
83 my ($ratenum, $region, $rate_time) = @_;
84 '<A HREF="javascript:void(0);" onclick="'.
85 include( '/elements/popup_link_onclick.html',
86 'action' => "${p}edit/rate_detail.html?ratenum=$ratenum".
87 ';dest_regionnum='.$region->regionnum.
89 ';ratetimenum='.$rate_time->ratetimenum :
91 'actionlabel' => 'Add rate',
93 ).'">'.small('(add)').'</A>'
97 my $rate_detail = shift;
98 my $ratedetailnum = $rate_detail->ratedetailnum;
99 my $onclick = include( '/elements/popup_link_onclick.html',
100 'action' => "${p}misc/delete-rate_detail.html?$ratedetailnum",
101 'actionlabel' => 'Delete rate',
106 $onclick = "if(confirm('Delete this rate?')) { $onclick }";
107 qq!<A HREF="javascript:void(0);" onclick="$onclick">!.small('(delete)').'</A>'
110 sub granularity_detail {
111 my $rate_detail = shift;
112 if($rate_detail->sec_granularity != 60 && $rate_detail->sec_granularity > 0) {
114 small('in '.$granularity{$rate_detail->sec_granularity}.' increments').
120 sub min_included_detail {
121 my $rate_detail = shift;
122 if($rate_detail->min_included) {
124 small( $rate_detail->min_included .
125 ($rate_detail->sec_granularity ?
126 ' minutes included' :
127 ' calls included') ).
133 sub conn_charge_detail {
134 my $rate_detail = shift;
135 if($rate_detail->conn_charge > 0) {
136 #return '' unless $rate_detail->conn_charge > 0 || $rate_detail->conn_sec;
138 small( $money_char. $rate_detail->conn_charge.
139 ' for '.$conn_secs{$rate_detail->conn_sec}
150 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
152 $cgi->param('ratenum') =~ /^(\d+)$/ or die "unparsable ratenum";
154 my $rate = qsearchs('rate', { 'ratenum' => $ratenum } )
155 or die "unknown ratenum $ratenum";
156 my $ratename = $rate->ratename;
157 my $title = "$ratename rates";
160 if ( $cgi->param('countrycode') =~ /^(\d+)$/ ) {
161 my $countrycode = $1;
162 $where = "WHERE 0 < ( SELECT COUNT(*) FROM rate_prefix
163 WHERE rate_prefix.regionnum = rate_region.regionnum
164 AND countrycode = '$countrycode'
167 $title .= " for +$countrycode";
170 my @rate_region = qsearch({ table => 'rate_region',
175 my @rate_time = qsearch('rate_time', {});
176 my @header = ('Region', 'Prefix(es)',
177 map( { $_->ratetimename } @rate_time ),
179 my @hlinks = map {''} @header;
181 my @rtns = ( map( { $_->ratetimenum } @rate_time ), '' );
183 foreach my $region (@rate_region) {
184 push @details, [ map { qsearchs('rate_detail',
185 { 'ratenum' => $ratenum,
186 'dest_regionnum' => $region->regionnum,
187 'ratetimenum' => $_ } ) or ''