summaryrefslogtreecommitdiff
path: root/httemplate/browse
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/browse')
-rw-r--r--httemplate/browse/rate_detail.html95
-rw-r--r--httemplate/browse/rate_region.html53
2 files changed, 148 insertions, 0 deletions
diff --git a/httemplate/browse/rate_detail.html b/httemplate/browse/rate_detail.html
new file mode 100644
index 000000000..5dde85f8b
--- /dev/null
+++ b/httemplate/browse/rate_detail.html
@@ -0,0 +1,95 @@
+<% 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.
+ '&nbsp;<FONT SIZE="-1">(edit)</FONT>';
+ },
+ sub { $money_char. shift->min_charge.
+ '&nbsp;<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>
diff --git a/httemplate/browse/rate_region.html b/httemplate/browse/rate_region.html
new file mode 100644
index 000000000..1d04b648c
--- /dev/null
+++ b/httemplate/browse/rate_region.html
@@ -0,0 +1,53 @@
+<% 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>