summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorivan <ivan>2009-02-09 05:59:51 +0000
committerivan <ivan>2009-02-09 05:59:51 +0000
commit55a671b6168e49068657272eb22b1800e8b2e957 (patch)
treeb134214dd2123f609c918baacb15a471d0b59a62 /FS
parentdf676d82034cb63ff357f8d8ed0f95ce788fb98b (diff)
add skip_dcontext and skip_dstchannel_prefix options, RT#3196
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/part_pkg/voip_cdr.pm18
1 files changed, 18 insertions, 0 deletions
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index 8820d1971..a691fdad6 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -113,6 +113,12 @@ tie my %temporalities, 'Tie::IxHash',
'use_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is not set to: ',
},
+ 'skip_dcontext' => { 'name' => 'Do not charge for CDRs where the dcontext is set to any of these (comma-separated) values:',
+ },
+
+ 'skip_dstchannel_prefix' => { 'name' => 'Do not charge for CDRs where the dstchannel starts with:',
+ },
+
'use_duration' => { 'name' => 'Calculate usage based on the duration field instead of the billsec field',
'type' => 'checkbox',
},
@@ -170,6 +176,7 @@ tie my %temporalities, 'Tie::IxHash',
disable_tollfree
use_amaflags use_disposition
use_disposition_taqua use_carrierid use_cdrtypenum
+ skip_dcontext skip_dstchannel_prefix
use_duration
411_rewrite
output_format summarize_usage usage_section
@@ -546,6 +553,8 @@ sub check_chargable {
use_disposition_taqua
use_carrierid
use_cdrtypenum
+ skip_dcontext
+ skip_dstchannel_prefix;
);
foreach my $opt (grep !exists($flags{option_cache}->{$_}), @opt ) {
$flags{option_cache}->{$opt} = $self->option($opt);
@@ -570,6 +579,15 @@ sub check_chargable {
if length($opt{'use_cdrtypenum'})
&& $cdr->cdrtypenum ne $opt{'use_cdrtypenum'}; #ne otherwise 0 matches ''
+ return "dcontext IN ( $opt{'skip_dcontext'} )"
+ if $opt{'skip_dcontext'} =~ /\S/
+ && grep { $cdr->dcontext eq $_ } split(/\s*,\s*/, $opt{'skip_dcontext'});
+
+ my $len = length($opt{'skip_dstchannel_prefix'});
+ return "dstchannel starts with $opt{'skip_dstchannel_prefix'}"
+ if $len
+ && substr($cdr->dstchannel, 0, $len) eq $opt{'skip_dstchannel_prefix'};
+
#all right then, rate it
'';
}