summaryrefslogtreecommitdiff
path: root/FS/FS/detail_format.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-08-16 20:56:07 -0700
committerMark Wells <mark@freeside.biz>2016-08-16 20:56:07 -0700
commite204d78f913905bcbf46ad5e664443f183875e8e (patch)
treeb86e33a9c3591106f319f9119fca6a27fd1cf4c4 /FS/FS/detail_format.pm
parent8f37f0b3f6a946839132120984ec62b6f7ad7594 (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.pm17
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 {