tie my %rating_method, 'Tie::IxHash',
'prefix' => 'Rate calls by using destination prefix to look up a region and rate according to the internal prefix and rate tables',
tie my %rating_method, 'Tie::IxHash',
'prefix' => 'Rate calls by using destination prefix to look up a region and rate according to the internal prefix and rate tables',
# } else { #pass upstream price through
#
# $charge = sprintf('%.2f', $cdr->upstream_price);
# } else { #pass upstream price through
#
# $charge = sprintf('%.2f', $cdr->upstream_price);
#XXX $charge = sprintf('%.2f', $cdr->upstream_price);
$charge = sprintf('%.3f', $cdr->upstream_price);
$charges += $charge;
#XXX $charge = sprintf('%.2f', $cdr->upstream_price);
$charge = sprintf('%.3f', $cdr->upstream_price);
$charges += $charge;
$charge = sprintf('%.4f', ( $self->option('min_charge') * $minutes )
+ 0.0000000001 ); #so 1.00005 rounds to 1.0001
$charge = sprintf('%.4f', ( $self->option('min_charge') * $minutes )
+ 0.0000000001 ); #so 1.00005 rounds to 1.0001
my $granularity = $rate_detail->sec_granularity;
# length($cdr->billsec) ? $cdr->billsec : $cdr->duration;
my $granularity = $rate_detail->sec_granularity;
# length($cdr->billsec) ? $cdr->billsec : $cdr->duration;
- $seconds = $use_duration ? $cdr->duration : $cdr->billsec;
+ my $charge_sec = $use_duration ? $cdr->duration : $cdr->billsec;
+ $seconds = ( $charge_sec <= $rate_detail->conn_sec ) # min()
+ ? $charge_sec
+ : $rate_detail->conn_sec;
- $seconds += $granularity - ( $seconds % $granularity )
- if $seconds # don't granular-ize 0 billsec calls (bills them)
+ $charge_sec += $granularity - ( $charge_sec % $granularity )
+ if $charge_sec # don't granular-ize 0 billsec calls (bills them)
$charge += sprintf('%.2f', ($rate_detail->min_charge * $charge_min)
+ 0.00000001 ); #so 1.005 rounds to 1.01
$charge = sprintf('%.2f', $charge);
$charge += sprintf('%.2f', ($rate_detail->min_charge * $charge_min)
+ 0.00000001 ); #so 1.005 rounds to 1.01
$charge = sprintf('%.2f', $charge);
@call_details = (
$cdr->downstream_csv( 'format' => $output_format,
'granularity' => $granularity,
@call_details = (
$cdr->downstream_csv( 'format' => $output_format,
'granularity' => $granularity,
'charge' => $charge,
'pretty_dst' => $pretty_destnum,
'dst_regionname' => $regionname,
'charge' => $charge,
'pretty_dst' => $pretty_destnum,
'dst_regionname' => $regionname,