summaryrefslogtreecommitdiff
path: root/httemplate/edit
diff options
context:
space:
mode:
authormark <mark>2011-02-11 23:59:29 +0000
committermark <mark>2011-02-11 23:59:29 +0000
commit6a10d16ff4e806357abab206254aa38c80a749d3 (patch)
tree94dfb9705ba9d5aa8b3b0d1d96be6ba460115404 /httemplate/edit
parentca2b8a8c99585a4619eb657f2c7fca12a7304249 (diff)
rate selection by CDR type, RT#10991
Diffstat (limited to 'httemplate/edit')
-rw-r--r--httemplate/edit/cdr_type.cgi31
-rw-r--r--httemplate/edit/process/cdr_type.cgi42
-rw-r--r--httemplate/edit/rate.cgi32
-rw-r--r--httemplate/edit/rate_detail.html4
-rw-r--r--httemplate/edit/rate_region.cgi31
5 files changed, 127 insertions, 13 deletions
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>