fix display of duration on inbound packages with use_duraiton, RT#14370
[freeside.git] / FS / FS / part_pkg / voip_inbound.pm
index 9b048c2..425d86b 100644 (file)
@@ -267,28 +267,32 @@ sub calc_usage {
          $included_min = 0;
       }
       
-      $charge = sprintf('%.2f', ( $self->option('min_charge') * $charge_min )
+      $charge = sprintf('%.4f', ( $self->option('min_charge') * $charge_min )
                                 + 0.00000001 ); #so 1.00005 rounds to 1.0001
 
       if ( $charge > 0 ) {
         $charges += $charge;
-        my @call_details = ($cdr->downstream_csv( 'format' => $output_format,
-                                            'charge'  => $charge,
-                                            'minutes' => $minutes,
-                                            'granularity' => $granularity,
-                                          )
-                                );
+        my @call_details = (
+          $cdr->downstream_csv( 'format'      => $output_format,
+                                'charge'      => $charge,
+                                'seconds'     => ($use_duration
+                                                   ? $cdr->duration
+                                                   : $cdr->billsec
+                                                 ),
+                                'granularity' => $granularity,
+                              )
+        );
         push @$details,
-            [ 'C',
-              $call_details[0],
-              $charge,
-              $cdr->calltypenum, #classnum
-              $self->phonenum,
-              $cdr->accountcode,
-              $cdr->startdate,
-              $seconds,
-              '', #regionname, not set for inbound calls
-            ];
+          { format      => 'C',
+            detail      => $call_details[0],
+            amount      => $charge,
+            classnum    => $cdr->calltypenum, #classnum
+            phonenum    => $self->phonenum,
+            accountcode => $cdr->accountcode,
+            startdate   => $cdr->startdate,
+            duration    => $seconds,
+            # regionname?? => '', #regionname, not set for inbound calls
+          };
      }
 
      my $error = $cdr->set_status_and_rated_price( 'done',
@@ -299,14 +303,9 @@ sub calc_usage {
 
     } #$cdr
   } # $cust_svc
-  unshift @$details, [ 'C',
-                       FS::cdr::invoice_header($output_format),
-                       '',
-                       '',
-                       '',
-                       '',
-                       '',
-                     ]
+  unshift @$details, { format => 'C',
+                       detail => FS::cdr::invoice_header($output_format),
+                     }
     if @$details;
 
   $charges;