summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormark <mark>2011-12-10 00:58:15 +0000
committermark <mark>2011-12-10 00:58:15 +0000
commitd8c2d2e79098ec7e0936b50f215eb41de00bc122 (patch)
tree6da3ea3c3d87c8bc7e9e07d71c43352e079a37fa
parente6f7e02b32ebaa471230819d36a88f88b98bed6a (diff)
option to keep track of unrateable CDRs, #15502
-rw-r--r--FS/FS/part_pkg/voip_cdr.pm28
-rw-r--r--httemplate/search/cdr.html14
-rw-r--r--httemplate/search/report_cdr.html7
-rw-r--r--httemplate/view/svc_phone.cgi1
4 files changed, 39 insertions, 11 deletions
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index ada91c660..7f4f7c98e 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -43,6 +43,13 @@ tie my %temporalities, 'Tie::IxHash',
tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
+# previously "1" was "ignore
+tie my %unrateable_opts, 'Tie::IxHash',
+ '' => 'Exit with a fatal error',
+ 1 => 'Flag for later review',
+ 2 => 'Ignore and continue',
+;
+
%info = (
'name' => 'VoIP rating by plan of CDR records in an internal (or external) SQL table',
'shortname' => 'VoIP/telco CDR rating (standard)',
@@ -105,8 +112,9 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
'select_options' => \%granularity,
},
- 'ignore_unrateable' => { 'name' => 'Ignore calls without a rate in the rate tables. By default, the system will throw a fatal error upon encountering unrateable calls.',
- 'type' => 'checkbox',
+ 'ignore_unrateable' => { 'name' => 'Handling of calls without a rate in the rate table',
+ 'type' => 'select',
+ 'select_options' => \%unrateable_opts,
},
'default_prefix' => { 'name' => 'Default prefix optionally prepended to customer DID numbers when searching for CDR records',
@@ -637,8 +645,20 @@ sub calc_usage {
#if ( ! $rate_detail && ! scalar(@call_details) ) {}
if ( ! $rate_detail && $charge eq '' ) {
- warn "no rate_detail found for CDR.acctid: ". $cdr->acctid.
- "; skipping\n"
+ if ( $ignore_unrateable == 2 ) {
+ # throw a warning--not recommended
+ warn "no rate_detail found for CDR.acctid: ". $cdr->acctid.
+ "; skipping\n"
+ }
+ else {
+ # mark the CDR as unrateable
+ my $error = $cdr->set_status_and_rated_price(
+ 'failed',
+ '',
+ $cust_svc->svcnum
+ );
+ die $error if $error;
+ }#if $ignore_unrateable
} else { # there *is* a rate_detail (or call_details), proceed...
# About this section:
diff --git a/httemplate/search/cdr.html b/httemplate/search/cdr.html
index 1e3c57cae..5e917db2e 100644
--- a/httemplate/search/cdr.html
+++ b/httemplate/search/cdr.html
@@ -80,15 +80,21 @@ my @qsearch = @search;
# freesidestatus
###
-if ( $cgi->param('freesidestatus') eq 'NULL' ) {
+my $status = $cgi->param('freesidestatus');
+if ( $status eq 'NULL' ) {
$title = "Unprocessed $title";
$hashref->{'freesidestatus'} = ''; # Record.pm will take care of it
push @search, "( freesidestatus IS NULL OR freesidestatus = '' )";
-} elsif ( $cgi->param('freesidestatus') =~ /^([\w ]+)$/ ) {
-
- $title = "Processed $title";
+} elsif ( $status =~ /^([\w ]+)$/ ) {
+
+ if ( $status eq 'done' ) {
+ $title = "Processed $title";
+ }
+ elsif ( $status eq 'failed' ) {
+ $title = "Skipped $title";
+ }
$hashref->{'freesidestatus'} = $1;
push @search, "freesidestatus = '$1'";
diff --git a/httemplate/search/report_cdr.html b/httemplate/search/report_cdr.html
index b9f883777..f305ed913 100644
--- a/httemplate/search/report_cdr.html
+++ b/httemplate/search/report_cdr.html
@@ -22,9 +22,10 @@
<TD ALIGN="right">Status: </TD>
<TD>
<SELECT NAME="freesidestatus">
- <OPTION VALUE="">(all)
- <OPTION VALUE="NULL">unprocessed
- <OPTION VALUE="done">processed
+ <OPTION VALUE="">(all)</OPTION>
+ <OPTION VALUE="NULL">unprocessed</OPTION>
+ <OPTION VALUE="done">processed</OPTION>
+ <OPTION VALUE="failed">skipped</OPTION>
</SELECT>
</TD>
</TR>
diff --git a/httemplate/view/svc_phone.cgi b/httemplate/view/svc_phone.cgi
index 2943c5857..323be63dc 100644
--- a/httemplate/view/svc_phone.cgi
+++ b/httemplate/view/svc_phone.cgi
@@ -68,6 +68,7 @@ my $html_foot = sub {
tie my %what, 'Tie::IxHash',
'pending' => 'NULL',
'billed' => 'done',
+ 'skipped' => 'failed',
;
my $number = $svc_phone->phonenum;