diff options
author | ivan <ivan> | 2010-07-13 22:55:07 +0000 |
---|---|---|
committer | ivan <ivan> | 2010-07-13 22:55:07 +0000 |
commit | 4b839572abcdc6341e8c0f3cf85eb232ac2b4609 (patch) | |
tree | f3dd20311c2820d204c0ec50cd911a640292d696 /FS | |
parent | 99af479c12baf1f7da52e06841f0ac4f4832d766 (diff) |
Optional alternate rate plan when accountcode is toll free, RT#8084
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/part_pkg/voip_cdr.pm | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index 0cb675f97..f589580f1 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -162,6 +162,16 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); 'type' => 'checkbox', }, + 'accountcode_tollfree_ratenum' => { + 'name' => 'Optional alternate rate plan when accountcode is toll free', + 'type' => 'select', + 'select_table' => 'rate', + 'select_key' => 'ratenum', + 'select_label' => 'ratename', + 'disable_empty' => 0, + 'empty_label' => '', + }, + 'skip_dst_length_less' => { 'name' => 'Do not charge for CDRs where the destination is less than this many digits:', }, @@ -240,6 +250,7 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); use_disposition_taqua use_carrierid use_cdrtypenum skip_dcontext skip_dstchannel_prefix skip_src_length_more noskip_src_length_accountcode_tollfree + accountcode_tollfree_ratenum skip_dst_length_less skip_lastapp use_duration 411_rewrite @@ -436,8 +447,12 @@ sub calc_usage { #asterisks here causes inserting the detail to barf, so: $pretty_destnum =~ s/\*//g; - $rate = qsearchs('rate', { 'ratenum' => $ratenum }) - or die "ratenum $ratenum not found!"; + my $eff_ratenum = $cdr->is_tollfree('accountcode') + ? $cust_pkg->part_pkg->option('accountcode_tollfree_ratenum') + : ''; + $eff_ratenum ||= $ratenum; + $rate = qsearchs('rate', { 'ratenum' => $eff_ratenum }) + or die "ratenum $eff_ratenum not found!"; my @ltime = localtime($cdr->startdate); $weektime = $ltime[0] + |