diff options
author | Mark Wells <mark@freeside.biz> | 2016-08-16 20:56:07 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2016-08-16 20:56:07 -0700 |
commit | e204d78f913905bcbf46ad5e664443f183875e8e (patch) | |
tree | b86e33a9c3591106f319f9119fca6a27fd1cf4c4 /FS/FS/detail_format.pm | |
parent | 8f37f0b3f6a946839132120984ec62b6f7ad7594 (diff) |
respect granularity settings for display of inbound call duration, #71715
Diffstat (limited to 'FS/FS/detail_format.pm')
-rw-r--r-- | FS/FS/detail_format.pm | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/FS/FS/detail_format.pm b/FS/FS/detail_format.pm index d032100..78517dd 100644 --- a/FS/FS/detail_format.pm +++ b/FS/FS/detail_format.pm @@ -186,6 +186,11 @@ rated_regionname => regionname accountcode => accountcode startdate => startdate +If the formatter is in inbound mode, it will look up a C<cdr_termination> +record and use rated_price and rated_seconds from that, and acctid will be +set to null to avoid linking the CDR to the detail record for the inbound +leg of the call. + 'phonenum' is set to the internal C<phonenum> value set on the formatter object. @@ -209,10 +214,10 @@ sub single_detail { $price = 0 if $cdr->freesidestatus eq 'no-charge'; FS::cust_bill_pkg_detail->new( { - 'acctid' => $cdr->acctid, + 'acctid' => ($self->{inbound} ? '' : $cdr->acctid), 'amount' => $price, 'classnum' => $cdr->rated_classnum, - 'duration' => $cdr->rated_seconds, + 'duration' => $object->rated_seconds, 'regionname' => $cdr->rated_regionname, 'accountcode' => $cdr->accountcode, 'startdate' => $cdr->startdate, @@ -280,13 +285,11 @@ sub duration { my $object = $self->{inbound} ? $cdr->cdr_termination(1) : $cdr; my $sec = $object->rated_seconds if $object; $sec ||= 0; - # XXX termination objects don't have rated_granularity so this may - # result in inbound CDRs being displayed as min/sec when they shouldn't. - # Should probably fix this. - if ( $cdr->rated_granularity eq '0' ) { + # termination objects now have rated_granularity. + if ( $object->rated_granularity eq '0' ) { '1 call'; } - elsif ( $cdr->rated_granularity eq '60' ) { + elsif ( $object->rated_granularity eq '60' ) { sprintf('%dm', ($sec + 59)/60); } else { |