diff options
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/browse/elements/browse.html | 2 | ||||
-rw-r--r-- | httemplate/browse/rate.cgi | 7 | ||||
-rw-r--r-- | httemplate/browse/rate_detail.html | 40 | ||||
-rw-r--r-- | httemplate/browse/rate_region.html | 2 | ||||
-rw-r--r-- | httemplate/edit/cdr_type.cgi | 31 | ||||
-rw-r--r-- | httemplate/edit/process/cdr_type.cgi | 42 | ||||
-rw-r--r-- | httemplate/edit/rate.cgi | 32 | ||||
-rw-r--r-- | httemplate/edit/rate_detail.html | 4 | ||||
-rw-r--r-- | httemplate/edit/rate_region.cgi | 31 | ||||
-rw-r--r-- | httemplate/elements/auto-table.html | 9 | ||||
-rw-r--r-- | httemplate/elements/select-cdr_type.html | 11 |
11 files changed, 152 insertions, 59 deletions
diff --git a/httemplate/browse/elements/browse.html b/httemplate/browse/elements/browse.html index 513c2c4e9..9099d6538 100644 --- a/httemplate/browse/elements/browse.html +++ b/httemplate/browse/elements/browse.html @@ -1,5 +1,5 @@ <% include( '/search/elements/search.html', - 'disable_download' => 1, + 'really_disable_download' => 1, 'disable_nonefound' => 1, @_, ) diff --git a/httemplate/browse/rate.cgi b/httemplate/browse/rate.cgi index c6cfec074..0c425a5d1 100644 --- a/httemplate/browse/rate.cgi +++ b/httemplate/browse/rate.cgi @@ -4,6 +4,8 @@ $p.'browse/rate_region.html', 'Time Periods' => $p.'browse/rate_time.html', + 'CDR Types' => + $p.'edit/cdr_type.cgi', ], 'html_init' => $html_init, 'name' => 'rate plans', @@ -15,6 +17,7 @@ 'header' => [ '#', 'Rate plan', 'Rates' ], 'fields' => [ 'ratenum', 'ratename', $rates_sub ], 'links' => [ $link, $link, '' ], + 'really_disable_download' => 1 ) %> <%once> @@ -27,7 +30,7 @@ my $rates_sub = sub { my $rate = shift; my $ratenum = $rate->ratenum; - qq( <FORM METHOD="GET" ACTION="${p}browse/rate_detail.html"> + qq( <FORM METHOD="GET" ACTION="${p}edit/rate.cgi"> <INPUT TYPE="hidden" NAME="ratenum" VALUE="$ratenum"> <SELECT NAME="countrycode" onChange="this.form.submit();"> <OPTION SELECTED>Select Country Code @@ -55,7 +58,7 @@ my $html_init = my $count_query = 'SELECT COUNT(*) FROM rate'; -my $link = [ $p.'edit/rate.cgi?', 'ratenum' ]; +my $link = [ $p.'edit/rate.cgi?ratenum=', 'ratenum' ]; </%once> <%init> diff --git a/httemplate/browse/rate_detail.html b/httemplate/browse/rate_detail.html deleted file mode 100644 index aef550513..000000000 --- a/httemplate/browse/rate_detail.html +++ /dev/null @@ -1,40 +0,0 @@ -<% include('/elements/init_overlib.html') %> -<% include('/elements/header.html',$title) %> -<% include('/elements/menubar.html',@menubar) %> -<% include('/edit/elements/rate_detail.html', - 'ratenum' => $ratenum, - 'countrycode' => $countrycode, -) %> -<% include('/elements/footer.html') %> - -<%once> - -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', - ); - -</%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; -my $countrycode = ''; -if ( $cgi->param('countrycode') =~ /^(\d+)$/ ) { - $countrycode = $1; - $title .= " for +$countrycode"; -} - -</%init> diff --git a/httemplate/browse/rate_region.html b/httemplate/browse/rate_region.html index b7d9589d0..b958894cb 100644 --- a/httemplate/browse/rate_region.html +++ b/httemplate/browse/rate_region.html @@ -23,7 +23,7 @@ my $edit_url = $p.'edit/rate_region.cgi'; -my $link = [ "$edit_url?", 'regionnum' ]; +my $link = [ "$edit_url?regionnum=", 'regionnum' ]; my $html_init = 'Regions and prefixes for VoIP and call billing.<BR><BR>'. diff --git a/httemplate/edit/cdr_type.cgi b/httemplate/edit/cdr_type.cgi new file mode 100644 index 000000000..5d2c66216 --- /dev/null +++ b/httemplate/edit/cdr_type.cgi @@ -0,0 +1,31 @@ +<% include('/elements/header.html', { title => 'CDR Types' } ) %> +<% include('/elements/menubar.html', 'Rate plans' => "${p}browse/rate.cgi" ) %> +<BR><% include('/elements/error.html') %> +<BR> +CDR types define types of phone usage for billing, such as voice +calls and SMS messages. Each CDR type must have a set of rates +configured in the rate tables. +<BR> +<FORM METHOD="POST" ACTION="<% "${p}edit/process/cdr_type.cgi" %>"> +<% include('/elements/auto-table.html', + 'header' => [ 'Type#', 'Name' ], + 'fields' => [ qw( cdrtypenum cdrtypename ) ], + 'data' => \@data, + ) %> +<INPUT TYPE="submit" VALUE="Apply changes"> </FORM> <BR> +<% include('/elements/footer.html') %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my @data = ( + map { [ $_->cdrtypenum, $_->cdrtypename ] } + qsearch({ + 'table' => 'cdr_type', + 'hashref' => {}, + 'order_by' => 'ORDER BY cdrtypenum ASC' + }) +); + +</%init> diff --git a/httemplate/edit/process/cdr_type.cgi b/httemplate/edit/process/cdr_type.cgi new file mode 100644 index 000000000..b661de75d --- /dev/null +++ b/httemplate/edit/process/cdr_type.cgi @@ -0,0 +1,42 @@ +% if ( $error ) { +% $cgi->param('error', $error); +<% $cgi->redirect(popurl(2). "cdr_type.cgi?". $cgi->query_string ) %> +% } else { +<% $cgi->redirect(popurl(2). "cdr_type.cgi" ) %> +% } +<%init> +my $error = ''; +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my %vars = $cgi->Vars; +warn Dumper(\%vars)."\n"; + +my %old = map { $_->cdrtypenum => $_ } qsearch('cdr_type', {}); + +my @new; +foreach ( keys(%vars) ) { + my ($i) = /^cdrtypenum(\d+)$/ or next; + my $cdrtypenum = $vars{"cdrtypenum$i"} or next; + my $cdrtypename = $vars{"cdrtypename$i"} or next; + # don't delete unchanged records + if ( $old{$i} and $old{$i}->cdrtypename eq $cdrtypename ) { + delete $old{$i}; + next; + } + push @new, FS::cdr_type->new({ + 'cdrtypenum' => $cdrtypenum, + 'cdrtypename' => $cdrtypename, + }); +} +foreach (values(%old)) { + $error = $_->delete; + last if $error; +} +if(!$error) { + foreach (@new) { + $error = $_->insert; + last if $error; + } +} +</%init> diff --git a/httemplate/edit/rate.cgi b/httemplate/edit/rate.cgi index 13717dc1a..1abfb0d32 100644 --- a/httemplate/edit/rate.cgi +++ b/httemplate/edit/rate.cgi @@ -26,8 +26,24 @@ Rate plan % if($rate->ratenum) { <BR><BR><FONT SIZE="+2">Rates in this plan</FONT> +% if ( my $select_cdr_type = include('/elements/select-cdr_type.html', +% 'curr_value' => $cdrtypenum, +% 'onchange' => 'form.submit();', +% 'name_col' => 'cdrtypename', +% 'value_col' => 'cdrtypenum', +% 'empty_label' => '(default)', +% ) ) { +<FORM ACTION="<%$cgi->url%>" METHOD="GET"> +<INPUT TYPE="hidden" NAME="ratenum" VALUE="<% $rate->ratenum %>"> +<INPUT TYPE="hidden" NAME="countrycode" VALUE="<% $countrycode %>"> +<FONT SIZE="+1">Usage type: <% $select_cdr_type %></FONT> +</FORM> +% } + <% include('/edit/elements/rate_detail.html', - 'ratenum' => $rate->ratenum + 'ratenum' => $rate->ratenum, + 'countrycode' => $countrycode, + 'cdrtypenum' => $cdrtypenum, ) %> % } @@ -39,13 +55,21 @@ die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); my $rate; -if ( $cgi->keywords ) { - my($query) = $cgi->keywords; - $query =~ /^(\d+)$/; +if ( $cgi->param('ratenum') ) { + $cgi->param('ratenum') =~ /^(\d+)$/; $rate = qsearchs( 'rate', { 'ratenum' => $1 } ); } else { #adding $rate = new FS::rate {}; } my $action = $rate->ratenum ? 'Edit' : 'Add'; +my $countrycode = ''; +if ( $cgi->param('countrycode') =~ /^(\d+)$/ ) { + $countrycode = $1; +} + +my $cdrtypenum = ''; +if ( $cgi->param('cdrtypenum') =~ /^(\d+)$/ ) { + $cdrtypenum = $1; +} </%init> diff --git a/httemplate/edit/rate_detail.html b/httemplate/edit/rate_detail.html index ec04e4cbb..19378209e 100644 --- a/httemplate/edit/rate_detail.html +++ b/httemplate/edit/rate_detail.html @@ -18,6 +18,7 @@ { field=>'orig_regionnum', type=>'hidden', }, { field=>'dest_regionnum', type=>'hidden', }, { field=>'ratetimenum', type=>'hidden', }, + { field=>'cdrtypenum', type=>'hidden', }, { field=>'dest_regionname', type=>'fixed', }, { field=>'dest_prefixes_short', type=>'fixed', }, { field=>'rate_time_name', type=>'fixed', }, @@ -49,6 +50,9 @@ { ratenum => $cgi->param('ratenum'), dest_regionnum => $cgi->param('dest_regionnum'), ratetimenum => $cgi->param('ratetimenum'), + cdrtypenum => $cgi->param('cdrtypenum'), + min_included => 0, + conn_charge => 0, } }, ) diff --git a/httemplate/edit/rate_region.cgi b/httemplate/edit/rate_region.cgi index cae30030a..367bbafb6 100644 --- a/httemplate/edit/rate_region.cgi +++ b/httemplate/edit/rate_region.cgi @@ -35,17 +35,28 @@ </TABLE> -<BR><BR> +<BR> <INPUT TYPE="submit" VALUE="<% $rate_region->regionnum ? "Apply changes" : "Add region" %>"> </FORM> %# rate plan info, if the region has been created yet % if($rate_region->regionnum) { -<BR> -<BR> -<FONT SIZE="+2">Rates in this region</FONT> +<BR><BR><FONT SIZE="+2">Rates in this region</FONT> +% if ( my $select_cdr_type = include('/elements/select-cdr_type.html', +% 'curr_value' => $cdrtypenum, +% 'onchange' => 'form.submit();', +% 'name_col' => 'cdrtypename', +% 'value_col' => 'cdrtypenum', +% 'empty_label' => '(default)', +% ) ) { +<FORM ACTION="<%$cgi->url%>" METHOD="GET"> +<INPUT TYPE="hidden" NAME="regionnum" VALUE="<% $rate_region->regionnum %>"> +<FONT SIZE="+1">Usage type: <% $select_cdr_type %></FONT> +</FORM> +% } <% include('/edit/elements/rate_detail.html', - 'regionnum' => $rate_region->regionnum, + 'regionnum' => $rate_region->regionnum, + 'cdrtypenum' => $cdrtypenum, ) %> % } @@ -68,9 +79,8 @@ if ( $cgi->param('error') ) { $rate_region = new FS::rate_region ( { map { $_, scalar($cgi->param($_)) } fields('rate_region') } ); -} elsif ( $cgi->keywords ) { - my($query) = $cgi->keywords; - $query =~ /^(\d+)$/ or die "unparsable regionnum"; +} elsif ( $cgi->param('regionnum') ) { + $cgi->param('regionnum') =~ /^(\d+)$/ or die "unparseable regionnum"; $rate_region = qsearchs( 'rate_region', { 'regionnum' => $1 } ) or die "unknown regionnum $1\n"; } else { #adding @@ -91,5 +101,8 @@ if ( @rate_prefix ) { unless $rate_prefix->countrycode eq $countrycode; } } - +my $cdrtypenum = ''; +if ( $cgi->param('cdrtypenum') =~ /^(\d+)$/ ) { + $cdrtypenum = $1; +} </%init> diff --git a/httemplate/elements/auto-table.html b/httemplate/elements/auto-table.html index 9c7dfd09a..49222745a 100644 --- a/httemplate/elements/auto-table.html +++ b/httemplate/elements/auto-table.html @@ -51,7 +51,9 @@ Values will be passed through as "mytable_id1", etc. <TR> % my $col = 0; % for ( $col = 0; $col < scalar @fields; $col++ ) { -% my $id = $prefix . $fields[$col] . $row; +% my $id = $prefix . $fields[$col]; +% # don't suffix rownum in the final, blank row +% $id .= $row if $row < (scalar @data) - 1; <TD> % my @o = @{ $select[$col] }; % if( @o ) { @@ -117,7 +119,10 @@ $val eq $data[$row][$col] ? ' SELECTED' : ''%>><% shift @o %></OPTION> var row = <% $prefix %>table.insertRow(-1); var cells = <% $prefix %>_blank.cells; for (i=0; i<cells.length; i++) { - row.appendChild(cells[i].cloneNode(true)); + var node = row.appendChild(cells[i].cloneNode(true)); + var input = node.children[0]; + input.id = input.id + row.sectionRowIndex; + input.name = input.name + row.sectionRowIndex; } <% $prefix %>rownum++; } diff --git a/httemplate/elements/select-cdr_type.html b/httemplate/elements/select-cdr_type.html new file mode 100644 index 000000000..9d260898a --- /dev/null +++ b/httemplate/elements/select-cdr_type.html @@ -0,0 +1,11 @@ +% if ( FS::Record->scalar_sql('SELECT COUNT(*) FROM cdr_type') ) { +<% include( '/elements/select-table.html', + 'table' => 'cdr_type', + 'name_col' => 'cdrtypenum', + 'empty_label' => '(none)', + @_ + ) +%> +% } +<%init> +</%init> |