From: mark Date: Fri, 17 Sep 2010 19:57:50 +0000 (+0000) Subject: cdr.max_callers field and skip option, RT#9810 X-Git-Tag: TORRUS_1_0_9~311 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=0fb7ffd120c41dabfc34b6c06443a7604d879f8a cdr.max_callers field and skip option, RT#9810 --- diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 459dcabd6..8403ea2d6 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -2495,6 +2495,8 @@ sub tables_hashref { 'uniqueid', 'varchar', '', 32, \"''", '', 'userfield', 'varchar', '', 255, \"''", '', + 'max_callers', 'int', 'NULL', '', '', '', + ### # fields for unitel/RSLCOM/convergent that don't map well to asterisk # defaults diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index c66a3fd5b..41c0888d3 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -149,10 +149,10 @@ 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: ', }, - 'skip_dst_prefix' => { 'name' => 'Do not charge for CDRs where the destination number starts with any of these values:', + 'skip_dst_prefix' => { 'name' => 'Do not charge for CDRs where the destination number starts with any of these values: ', }, - 'skip_dcontext' => { 'name' => 'Do not charge for CDRs where the dcontext 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: ', }, 'skip_dstchannel_prefix' => { 'name' => 'Do not charge for CDRs where the dstchannel starts with:', @@ -166,7 +166,7 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); }, 'accountcode_tollfree_ratenum' => { - 'name' => 'Optional alternate rate plan when accountcode is toll free', + 'name' => 'Optional alternate rate plan when accountcode is toll free: ', 'type' => 'select', 'select_table' => 'rate', 'select_key' => 'ratenum', @@ -182,9 +182,12 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); 'type' => 'checkbox', }, - 'skip_lastapp' => { 'name' => 'Do not charge for CDRs where the lastapp matches this value', + 'skip_lastapp' => { 'name' => 'Do not charge for CDRs where the lastapp matches this value: ', }, + 'skip_max_callers' => { 'name' => 'Do not charge for CDRs where max_callers is greater than this value: ', + }, + 'use_duration' => { 'name' => 'Calculate usage based on the duration field instead of the billsec field', 'type' => 'checkbox', }, @@ -199,7 +202,7 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); 'default' => 'default', #XXX test }, - 'usage_section' => { 'name' => 'Section in which to place usage charges (whether separated or not)', + 'usage_section' => { 'name' => 'Section in which to place usage charges (whether separated or not): ', }, 'summarize_usage' => { 'name' => 'Include usage summary with recurring charges when usage is in separate section', @@ -262,6 +265,7 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); skip_dst_length_less noskip_dst_length_accountcode_tollfree skip_lastapp + skip_max_callers use_duration 411_rewrite output_format usage_mandate summarize_usage usage_section @@ -835,6 +839,7 @@ sub check_chargable { skip_src_length_more noskip_src_length_accountcode_tollfree skip_dst_length_less noskip_dst_length_accountcode_tollfree skip_lastapp + skip_max_callers ); foreach my $opt (grep !exists($flags{option_cache}->{$_}), @opt ) { $flags{option_cache}->{$opt} = $self->option($opt, 1); @@ -903,6 +908,11 @@ sub check_chargable { } + return "max_callers > $opt{skip_max_callers}" + if length($opt{'skip_max_callers'}) + and length($cdr->max_callers) + and $cdr->max_callers > $opt{'skip_max_callers'}; + #all right then, rate it ''; }