diff options
author | levinse <levinse> | 2011-06-16 22:57:05 +0000 |
---|---|---|
committer | levinse <levinse> | 2011-06-16 22:57:05 +0000 |
commit | 25f254b245759b3cbec176db267e4bf575f9b162 (patch) | |
tree | 8068b9cd742688901f38a72fab8f4b22cbea5370 | |
parent | 7ba804d78accc21c51ecc298623f5168e0875db2 (diff) |
add CDR rating options to ignore CDRs having configurable disposition values and having particular cdrtypenum values, RT10091
-rw-r--r-- | FS/FS/part_pkg/voip_cdr.pm | 20 | ||||
-rw-r--r-- | FS/FS/part_pkg/voip_inbound.pm | 20 |
2 files changed, 38 insertions, 2 deletions
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index 603f6ed09..a79928924 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -148,6 +148,12 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); 'use_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is not set to: ', }, + + 'ignore_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is set to: ', + }, + + 'ignore_disposition' => { 'name' => 'Do not charge for CDRs where the Disposition is set to any of these (comma-separated) values: ', + }, 'skip_dst_prefix' => { 'name' => 'Do not charge for CDRs where the destination number starts with any of these values: ', }, @@ -262,7 +268,9 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); domestic_prefix international_prefix disable_tollfree use_amaflags use_disposition - use_disposition_taqua use_carrierid use_cdrtypenum + use_disposition_taqua use_carrierid + use_cdrtypenum ignore_cdrtypenum + ignore_disposition skip_dcontext skip_dst_prefix skip_dstchannel_prefix skip_src_length_more noskip_src_length_accountcode_tollfree @@ -834,6 +842,8 @@ sub check_chargable { use_disposition_taqua use_carrierid use_cdrtypenum + ignore_cdrtypenum + ignore_disposition skip_dst_prefix skip_dcontext skip_dstchannel_prefix @@ -855,6 +865,10 @@ sub check_chargable { return "disposition != 100" if $opt{'use_disposition_taqua'} && $cdr->disposition != 100; + + return "disposition IN ( $opt{'ignore_disposition'} )" + if $opt{'ignore_disposition'} =~ /\S/ + && grep { $cdr->disposition eq $_ } split(/\s*,\s*/, $opt{'ignore_disposition'}); return "carrierid != $opt{'use_carrierid'}" if length($opt{'use_carrierid'}) @@ -864,6 +878,10 @@ sub check_chargable { return "cdrtypenum != $opt{'use_cdrtypenum'}" if length($opt{'use_cdrtypenum'}) && $cdr->cdrtypenum ne $opt{'use_cdrtypenum'}; #ne otherwise 0 matches '' + + return "cdrtypenum == $opt{'ignore_cdrtypenum'}" + if length($opt{'ignore_cdrtypenum'}) + && $cdr->cdrtypenum eq $opt{'ignore_cdrtypenum'}; #eq otherwise 0 matches '' foreach(split(',',$opt{'skip_dst_prefix'})) { return "dst starts with '$_'" diff --git a/FS/FS/part_pkg/voip_inbound.pm b/FS/FS/part_pkg/voip_inbound.pm index 9fe13152b..528a85dcf 100644 --- a/FS/FS/part_pkg/voip_inbound.pm +++ b/FS/FS/part_pkg/voip_inbound.pm @@ -81,6 +81,12 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); 'use_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is not set to: ', }, + + 'ignore_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is set to: ', + }, + + 'ignore_disposition' => { 'name' => 'Do not charge for CDRs where the Disposition is set to any of these (comma-separated) values: ', + }, 'skip_dcontext' => { 'name' => 'Do not charge for CDRs where the dcontext is set to any of these (comma-separated) values:', }, @@ -152,7 +158,9 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); default_prefix disable_tollfree use_amaflags use_disposition - use_disposition_taqua use_carrierid use_cdrtypenum + use_disposition_taqua use_carrierid + use_cdrtypenum ignore_cdrtypenum + ignore_disposition skip_dcontext skip_dstchannel_prefix skip_dst_length_less skip_lastapp use_duration @@ -328,6 +336,8 @@ sub check_chargable { use_disposition_taqua use_carrierid use_cdrtypenum + ignore_cdrtypenum + ignore_disposition skip_dcontext skip_dstchannel_prefix skip_dst_length_less @@ -346,6 +356,10 @@ sub check_chargable { return "disposition != 100" if $opt{'use_disposition_taqua'} && $cdr->disposition != 100; + + return "disposition IN ( $opt{'ignore_disposition'} )" + if $opt{'ignore_disposition'} =~ /\S/ + && grep { $cdr->disposition eq $_ } split(/\s*,\s*/, $opt{'ignore_disposition'}); return "carrierid != $opt{'use_carrierid'}" if length($opt{'use_carrierid'}) @@ -355,6 +369,10 @@ sub check_chargable { return "cdrtypenum != $opt{'use_cdrtypenum'}" if length($opt{'use_cdrtypenum'}) && $cdr->cdrtypenum ne $opt{'use_cdrtypenum'}; #ne otherwise 0 matches '' + + return "cdrtypenum == $opt{'ignore_cdrtypenum'}" + if length($opt{'ignore_cdrtypenum'}) + && $cdr->cdrtypenum eq $opt{'ignore_cdrtypenum'}; #eq otherwise 0 matches '' return "dcontext IN ( $opt{'skip_dcontext'} )" if $opt{'skip_dcontext'} =~ /\S/ |