X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fvoip_cdr.pm;h=df972868c8a9d473420b0116c96ee23e269e31c9;hp=9ecdba685b3173caf914c3f4d42147a311197ca3;hb=db5785cba180e2c210d3ab4d37064c7e61898614;hpb=bde747e981abe6c517ce25118a53b13f53d63da7 diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index 9ecdba685..df972868c 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -182,7 +182,10 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash', 'disposition_in' => { 'name' => 'Only 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: ', + 'disposition_prefix' => { 'name' => 'Only charge for CDRs where the Disposition starts with: ', + }, + + 'skip_dst_prefix' => { 'name' => 'Do not charge for CDRs where the destination number starts with any of these (comma-separated) values: ', }, 'skip_dcontext' => { 'name' => 'Do not charge for CDRs where dcontext is set to any of these (comma-separated) values: ', @@ -332,7 +335,7 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash', use_carrierid use_cdrtypenum ignore_cdrtypenum use_calltypenum ignore_calltypenum - ignore_disposition disposition_in + ignore_disposition disposition_in disposition_prefix skip_dcontext skip_dcontext_suffix skip_dst_prefix skip_dstchannel_prefix skip_src_length_more noskip_src_length_accountcode_tollfree @@ -562,7 +565,13 @@ sub check_chargable { return "disposition NOT IN ( ". $self->option_cacheable('disposition_in')." )" if $self->option_cacheable('disposition_in') =~ /\S/ && !grep { $cdr->disposition eq $_ } split(/\s*,\s*/, $self->option_cacheable('disposition_in')); - + + my $disposition_prefix = $self->option_cacheable('disposition_prefix'); + my $len_dis_prefix = length($disposition_prefix); + return "disposition does not start with $disposition_prefix" + if $len_dis_prefix + && substr($cdr->disposition, 0, $len_dis_prefix) ne $disposition_prefix; + return "disposition IN ( ". $self->option_cacheable('ignore_disposition')." )" if $self->option_cacheable('ignore_disposition') =~ /\S/ && grep { $cdr->disposition eq $_ } split(/\s*,\s*/, $self->option_cacheable('ignore_disposition'));