From c27f80ec10180391d00286bf50dfbf09a96c1b00 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 10 Dec 2013 14:52:08 -0800 Subject: [PATCH] add option to rate CDRs with toll-free accountcodes on src, RT#24031 --- FS/FS/cdr.pm | 17 ++++++++++++----- FS/FS/part_pkg/voip_cdr.pm | 13 ++++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm index bf508dd8c..5658be94b 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 f23b7a77c..1a99bd7e1 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 -- 2.11.0