diff options
| author | ivan <ivan> | 2011-12-29 01:40:27 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2011-12-29 01:40:27 +0000 | 
| commit | 5fcf1afaeb31f85afa4fe0c9895d4d9cad7c734c (patch) | |
| tree | cff8fe30ffa1326539eee2da8c9283c17bd7906b /FS | |
| parent | b6dbe0f12dbbe4ea5209367f905f937789b5b607 (diff) | |
fix included minutes for single price per minute? wtf?
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/part_pkg/voip_cdr.pm | 31 | 
1 files changed, 20 insertions, 11 deletions
| diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index 786533534..df1f2ccf1 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -1,10 +1,12 @@  package FS::part_pkg::voip_cdr; +use base qw( FS::part_pkg::recur_Common );  use strict; -use base qw( FS::part_pkg::recur_Common );  use vars qw( $DEBUG %info ); -use Date::Format; +use List::Util qw(first min);  use Tie::IxHash; +use Date::Format; +use Text::CSV_XS;  use FS::Conf;  use FS::Record qw(qsearchs qsearch);  use FS::cdr; @@ -12,9 +14,6 @@ use FS::rate;  use FS::rate_prefix;  use FS::rate_detail; -use List::Util qw(first min); - -  $DEBUG = 0;  tie my %cdr_svc_method, 'Tie::IxHash', @@ -268,8 +267,7 @@ tie my %unrateable_opts, 'Tie::IxHash',                      qw(                         cdr_svc_method                         rating_method ratenum intrastate_ratenum  -                       min_charge min_included -		               sec_granularity +                       min_charge min_included sec_granularity                         ignore_unrateable                         default_prefix                         disable_src @@ -341,7 +339,9 @@ sub calc_usage {    my $spool_cdr = $cust_pkg->cust_main->spool_cdr; -  my %included_min = (); +  my %included_min = (); #region groups w/prefix rating + +  my $included_min = $self->option('min_included', 1) || 0; #single price rating    my $charges = 0; @@ -375,8 +375,6 @@ sub calc_usage {    #for check_chargable, so we don't keep looking up options inside the loop    my %opt_cache = (); -  eval "use Text::CSV_XS;"; -  die $@ if $@;    my $csv = new Text::CSV_XS;    my($svc_table, $svc_field) = split('\.', $cdr_svc_method); @@ -625,7 +623,18 @@ sub calc_usage {            && $granularity  # 0 is per call            && $seconds % $granularity;          my $minutes = $granularity ? ($seconds / 60) : 1; -        $charge = sprintf('%.4f', ( $self->option('min_charge') * $minutes ) + +        my $charge_min = $minutes; + +        $included_min -= $minutes; +        if ( $included_min > 0 ) { +          $charge_min = 0; +        } else { +           $charge_min = 0 - $included_min; +           $included_min = 0; +        } + +        $charge = sprintf('%.4f', ( $self->option('min_charge') * $charge_min )                                    + 0.0000000001 ); #so 1.00005 rounds to 1.0001          warn "Incrementing \$charges by $charge.  Now $charges\n" if $DEBUG; | 
