my $self = shift;
my $prefixes = ($self->{prefixes} ||= {});
foreach my $cdr (@_) {
- my $phonenum = $self->{inbound} ? $cdr->src : $cdr->dst;
+ my (undef, $phonenum) = $cdr->parse_number(
+ column => ( $self->{inbound} ? 'src' : 'dst' ),
+ );
+
$phonenum =~ /^(\d{$prefix_length})/;
my $prefix = $1 || 'other';
warn "$me appending ".$cdr->dst." to $prefix\n" if $DEBUG;
# but interstate-ness should be symmetric, yes? if A places an
# interstate call to B, then B receives an interstate call from A.
my $subtotal = $prefixes->{$prefix}{$cdr->rated_ratename}
- or die "unknown rated_ratename '" .$cdr->rated_ratename.
- "' in CDR #".$cdr->acctid."\n";
+ or next;
+ # silently skip calls that are neither interstate nor intrastate
+ #or die "unknown rated_ratename '" .$cdr->rated_ratename.
+ # "' in CDR #".$cdr->acctid."\n";
$subtotal->{count}++;
$subtotal->{duration} += $object->rated_seconds;
- $subtotal->{amount} += $object->rated_price;
+ $subtotal->{amount} += $object->rated_price
+ if $object->freesidestatus ne 'no-charge';
}
}
$prefix,
map({
$_->{count},
- (int($_->{duration}/60) . ' min'),
+ sprintf('%.01f min', $_->{duration}/60),
} @subtotals ),
$self->money_char . sprintf('%.02f',$total_amount),
);