[freeside-commits] freeside/httemplate/browse rate_region.html, NONE, 1.1.2.2 rate_detail.html, NONE, 1.1.2.2
Ivan,,,
ivan at wavetail.420.am
Thu Jan 10 13:52:34 PST 2008
Update of /home/cvs/cvsroot/freeside/httemplate/browse
In directory wavetail:/tmp/cvs-serv3832/httemplate/browse
Added Files:
Tag: FREESIDE_1_7_BRANCH
rate_region.html rate_detail.html
Log Message:
new call rate editor (VoIP/telephony)
--- NEW FILE: rate_region.html ---
<% include( 'elements/browse.html',
'title' => 'Rating Regions and Prefixes',
'name_singular' => 'region', #'rate region',
'menubar' => [ 'Rate plans' => $p.'browse/rate.cgi' ],
'html_init' => $html_init,
'query' => {
'select' => $select,
'table' => 'rate_region',
'addl_from' => $join,
'extra_sql' => $extra_sql,
'order_by' => 'ORDER BY LOWER(regionname)',
},
'count_query' => 'SELECT COUNT(*) FROM rate_region',
'header' => [ '#', 'Region', 'Country code', 'Prefixes' ],
'fields' => [ 'regionnum', 'regionname', 'ccode', 'prefixes' ],
'links' => [ $link, $link, $link, $link ],
)
%>
<%once>
my $edit_url = $p.'edit/rate_region.cgi';
my $link = [ "$edit_url?", 'regionnum' ];
my $html_init =
'Regions and prefixes for VoIP and call billing.<BR><BR>'.
qq(<A HREF="$edit_url"><I>Add a new region</I></A><BR><BR>);
#not quite right for the shouldn't-happen multiple countrycode per region case
my $select = 'rate_region.*, ';
my $join = '';
my $extra_sql = '';
if ( driver_name =~ /^Pg/ ) {
my $fromwhere = 'FROM rate_prefix'.
' WHERE rate_prefix.regionnum = rate_region.regionnum';
$select .= "( SELECT countrycode $fromwhere LIMIT 1 ) AS ccode,
ARRAY_TO_STRING( ARRAY(SELECT npa $fromwhere), ',' ) AS prefixes";
} elsif ( driver_name =~ /^mysql/i ) {
$join = 'LEFT JOIN rate_prefix USING ( regionnum )';
$select .= "GROUP_CONCAT( DISTINCT countrycode ) AS ccode,
GROUP_CONCAT( npa ORDER BY npa ) AS prefixes ";
$extra_sql = 'GROUP BY regionnum, regionname';
} else {
die 'unknown database '. driver_name;
}
</%once>
<%init>
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
</%init>
--- NEW FILE: rate_detail.html ---
<% include( 'elements/browse.html',
'title' => $title,
'name_singular' => 'rate',
'html_init' => $html_init,
'menubar' => [ 'Rate plans' => $p.'browse/rate.cgi' ],
'query' => {
'table' => 'rate_detail',
'addl_from' => $join,
'hashref' => { 'ratenum' => $ratenum },
'extra_sql' => $where,
},
'count_query' => "SELECT COUNT(*) FROM rate_detail $join".
" WHERE ratenum = $ratenum $where",
'header' => [
'Region',
'Prefix(es)',
'Included<BR>minutes',
'Charge per<BR>minute',
'Granularity',
],
'fields' => [
'regionname',
sub { shift->dest_region->prefixes_short },
sub { shift->min_included.
' <FONT SIZE="-1">(edit)</FONT>';
},
sub { $money_char. shift->min_charge.
' <FONT SIZE="-1">(edit)</FONT>';
},
sub { $granularity{ shift->sec_granularity } },
],
'links' => [ '', '', $edit_link, $edit_link, '' ],
'link_onclicks' => [ '', '', $edit_onclick, $edit_onclick, '' ],
'align' => 'llrrc',
)
%>
<%once>
my %granularity = (
'1', => '1 second',
'6' => '6 second',
'30' => '30 second', # '1/2 minute',
'60' => 'minute',
);
my $conf = new FS::Conf;
my $money_char = $conf->config('money_char') || '$';
my $html_init = qq(
<SCRIPT TYPE="text/javascript" SRC="${fsurl}elements/overlibmws.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" SRC="${fsurl}elements/overlibmws_iframe.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" SRC="${fsurl}elements/overlibmws_draggable.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" SRC="${fsurl}elements/iframecontentmws.js"></SCRIPT>
);
my $join =
' JOIN rate_region ON ( rate_detail.dest_regionnum = rate_region.regionnum )';
my $edit_link = [ 'javascript:void(0);', sub { ''; } ];
my $edit_onclick = sub {
my $rate_detail = shift;
my $ratedetailnum = $rate_detail->ratedetailnum;
my $color = '#333399';
qq!overlib( OLiframeContent('${p}edit/rate_detail.html?$ratedetailnum', 540, 420, 'edit_rate_detail_popup' ), CAPTION, 'Edit tax rate', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '$color', CGCOLOR, '$color' ); return false;!;
};
</%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;
push @where, "0 < ( SELECT COUNT(*) FROM rate_prefix
WHERE rate_prefix.regionnum = rate_region.regionnum
AND countrycode = '$countrycode'
)
";
$title .= " for +$countrycode";
}
my $where = scalar(@where) ? ' AND '.join(' AND ', @where ) : '';
</%init>
More information about the freeside-commits
mailing list