new call details format, #12585
[freeside.git] / FS / FS / cdr.pm
index b7d7876..3157b6b 100644 (file)
@@ -541,6 +541,10 @@ my %export_names = (
     'name'           => 'Default plus accountcode',
     'invoice_header' => 'Date,Time,Account,Number,Destination,Duration,Price',
   },
+  'description_default' => {
+    'name'           => 'Default with description field as destination',
+    'invoice_header' => 'Caller,Date,Time,Number,Destination,Duration,Price',
+  },
 );
 
 my %export_formats = ();
@@ -552,8 +556,7 @@ sub export_formats {
   my $conf = new FS::Conf;
   my $date_format = $conf->config('date_format') || '%m/%d/%Y';
 
-  # This is now smarter, and shows the call duration in the 
-  # largest units that accurately reflect the granularity.
+  # call duration in the largest units that accurately reflect the  granularity
   my $duration_sub = sub {
     my($cdr, %opt) = @_;
     my $sec = $opt{seconds} || $cdr->billsec;
@@ -562,7 +565,9 @@ sub export_formats {
       return '1 call';
     }
     elsif ( $opt{granularity} == 60 ) {#full minutes
-      return sprintf("%.0fm",$sec/60);
+      my $min = int($sec/60);
+      $min++ if $sec%60;
+      return $min.'m';
     }
     else { #anything else
       return sprintf("%dm %ds", $sec/60, $sec%60);
@@ -625,8 +630,13 @@ sub export_formats {
       'accountcode',
       @{ $export_formats{'default'} }[2..5],
     ];
+  my @default = @{ $export_formats{'default'} };
+  $export_formats{'description_default'} = 
+    [ 'src', @default[0..2], 
+      sub { my($cdr, %opt) = @_; $cdr->description },
+      @default[4,5] ];
 
-  %export_formats
+  return %export_formats;
 }
 
 sub downstream_csv {