summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-12-10 14:52:08 -0800
committerIvan Kohler <ivan@freeside.biz>2013-12-10 14:52:08 -0800
commitc27f80ec10180391d00286bf50dfbf09a96c1b00 (patch)
tree2a493050846b4fd1d471827aca6f2d0be8e001b6
parent697ce57e2b1f31adb3b938dead83e160e8d115c0 (diff)
add option to rate CDRs with toll-free accountcodes on src, RT#24031
-rw-r--r--FS/FS/cdr.pm17
-rw-r--r--FS/FS/part_pkg/voip_cdr.pm13
2 files changed, 24 insertions, 6 deletions
diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm
index bf508dd..5658be9 100644
--- a/FS/FS/cdr.pm
+++ b/FS/FS/cdr.pm
@@ -680,8 +680,19 @@ sub rate_prefix {
# (or calling station id for toll free calls)
###
+ my $eff_ratenum = $self->is_tollfree('accountcode')
+ ? $part_pkg->option_cacheable('accountcode_tollfree_ratenum')
+ : '';
+
my( $to_or_from, $column );
- if ( $self->is_tollfree && ! $part_pkg->option_cacheable('disable_tollfree') )
+ if(
+ ( $self->is_tollfree
+ && ! $part_pkg->option_cacheable('disable_tollfree')
+ )
+ or ( $eff_ratenum
+ && $part_pkg->option_cacheable('accountcode_tollfree_field') eq 'src'
+ )
+ )
{ #tollfree call
$to_or_from = 'from';
$column = 'src';
@@ -702,10 +713,6 @@ sub rate_prefix {
#asterisks here causes inserting the detail to barf, so:
$pretty_dst =~ s/\*//g;
- my $eff_ratenum = $self->is_tollfree('accountcode')
- ? $part_pkg->option_cacheable('accountcode_tollfree_ratenum')
- : '';
-
my $ratename = '';
my $intrastate_ratenum = $part_pkg->option_cacheable('intrastate_ratenum');
if ( $intrastate_ratenum && !$self->is_tollfree ) {
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index f23b7a7..1a99bd7 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -61,6 +61,11 @@ tie my %detail_formats, 'Tie::IxHash',
FS::cdr::invoice_formats()
;
+tie my %accountcode_tollfree_field, 'Tie::IxHash',
+ 'dst' => 'Destination (dst)',
+ 'src' => 'Source (src)',
+;
+
%info = (
'name' => 'VoIP rating by plan of CDR records in an internal (or external) SQL table',
'shortname' => 'VoIP/telco CDR rating (standard)',
@@ -211,6 +216,12 @@ tie my %detail_formats, 'Tie::IxHash',
'empty_label' => '',
},
+ 'accountcode_tollfree_field' => {
+ 'name' => 'When using an alternate rate plan for toll-free accountcodes, the CDR field to use in rating calculations',
+ 'type' => 'select',
+ 'select_options' => \%accountcode_tollfree_field,
+ },
+
'skip_dst_length_less' => { 'name' => 'Do not charge for CDRs where the destination is less than this many digits:',
},
@@ -330,7 +341,7 @@ tie my %detail_formats, 'Tie::IxHash',
skip_dcontext skip_dst_prefix
skip_dstchannel_prefix skip_src_length_more
noskip_src_length_accountcode_tollfree
- accountcode_tollfree_ratenum
+ accountcode_tollfree_ratenum accountcode_tollfree_field
skip_dst_length_less
noskip_dst_length_accountcode_tollfree
skip_lastapp