X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fvoip_cdr.pm;h=587a8c5304d82260cb467c74f6464067a7b3c3ba;hb=e1a356104a146205a4d83acdf2aac968788c3745;hp=df972868c8a9d473420b0116c96ee23e269e31c9;hpb=db5785cba180e2c210d3ab4d37064c7e61898614;p=freeside.git diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index df972868c..587a8c530 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -65,7 +65,7 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash', ; %info = ( - 'name' => 'VoIP rating by plan of CDR records in an internal (or external) SQL table', + 'name' => 'VoIP rating by plan of CDR records', 'shortname' => 'VoIP/telco CDR rating (standard)', 'inherit_fields' => [ 'prorate_Mixin', 'global_Mixin' ], 'fields' => { @@ -191,6 +191,9 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash', 'skip_dcontext' => { 'name' => 'Do not charge for CDRs where dcontext is set to any of these (comma-separated) values: ', }, + 'skip_dcontext_prefix' => { 'name' => 'Do not charge for CDRs where dcontext starts with: ', + }, + 'skip_dcontext_suffix' => { 'name' => 'Do not charge for CDRs where dcontext ends with: ', }, @@ -336,7 +339,8 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash', use_cdrtypenum ignore_cdrtypenum use_calltypenum ignore_calltypenum ignore_disposition disposition_in disposition_prefix - skip_dcontext skip_dcontext_suffix skip_dst_prefix + skip_dcontext skip_dcontext_prefix skip_dcontext_suffix + skip_dst_prefix skip_dstchannel_prefix skip_src_length_more noskip_src_length_accountcode_tollfree accountcode_tollfree_ratenum accountcode_tollfree_field @@ -356,6 +360,13 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash', ) ], 'weight' => 41, + 'validate' => sub { + # Validation function for FS::part_pkg::check_options() + my $options = shift; + return "Please choose a Rate Plan for use with selected Rating Method" + if $options->{rating_method} eq 'prefix' && !$options->{ratenum}; + return; + }, ); sub price_info { @@ -608,6 +619,12 @@ sub check_chargable { if $self->option_cacheable('skip_dcontext') =~ /\S/ && grep { $cdr->dcontext eq $_ } split(/\s*,\s*/, $self->option_cacheable('skip_dcontext')); + my $len_dcontext_prefix = + length($self->option_cacheable('skip_dcontext_prefix')); + return "dcontext starts with ". $self->option_cacheable('skip_dcontext_prefix') + if $len_dcontext_prefix + && substr($cdr->dcontext,0,$len_dcontext_prefix) eq $self->option_cacheable('skip_dcontext_prefix'); + my $len_suffix = length($self->option_cacheable('skip_dcontext_suffix')); return "dcontext ends with ". $self->option_cacheable('skip_dcontext_suffix') if $len_suffix @@ -714,4 +731,3 @@ sub hide_svc_detail { 1; -