diff options
| author | ivan <ivan> | 2009-02-09 05:59:51 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2009-02-09 05:59:51 +0000 | 
| commit | 55a671b6168e49068657272eb22b1800e8b2e957 (patch) | |
| tree | b134214dd2123f609c918baacb15a471d0b59a62 /FS | |
| parent | df676d82034cb63ff357f8d8ed0f95ce788fb98b (diff) | |
add skip_dcontext and skip_dstchannel_prefix options, RT#3196
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/part_pkg/voip_cdr.pm | 18 | 
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    '';  } | 
