'name' => 'Default with description field as destination',
'invoice_header' => 'Caller,Date,Time,Number,Destination,Duration,Price',
},
+ 'sum_duration' => {
+ 'name' => 'Summary (one line per service, with duration)',
+ 'invoice_header' => 'Caller,Rate,Calls,Minutes,Price',
+ },
+ 'sum_count' => {
+ 'name' => 'Summary (one line per service, with count)',
+ 'invoice_header' => 'Caller,Rate,Messages,Price',
+ },
);
my %export_formats = ();
}
};
+ my $price_sub = sub {
+ my ($cdr, %opt) = @_;
+ my $price;
+ if ( defined($opt{charge}) ) {
+ $price = $opt{charge};
+ }
+ elsif ( $opt{inbound} ) {
+ my $term = $cdr->cdr_termination(1); # 1 = inbound
+ $price = $term->rated_price if defined $term;
+ }
+ else {
+ $price = $cdr->rated_price;
+ }
+ length($price) ? ($opt{money_char} . $price) : '';
+ };
+
%export_formats = (
'simple' => [
sub { time2str($date_format, shift->calldate_unix ) }, #DATE
'dst', #NUMBER_DIALED
$duration_sub, #DURATION
#sub { sprintf('%.3f', shift->upstream_price ) }, #PRICE
- sub { my($cdr, %opt) = @_; $opt{money_char}. $opt{charge}; }, #PRICE
+ $price_sub,
],
'simple2' => [
sub { time2str($date_format, shift->calldate_unix ) }, #DATE
'dst', #NUMBER_DIALED
$duration_sub, #DURATION
#sub { sprintf('%.3f', shift->upstream_price ) }, #PRICE
- sub { my($cdr, %opt) = @_; $opt{money_char}. $opt{charge}; }, #PRICE
+ $price_sub,
+ ],
+ 'sum_duration' => [
+ # for summary formats, the CDR is a fictitious object containing the
+ # total billsec and the phone number of the service
+ 'src',
+ sub { my($cdr, %opt) = @_; $opt{ratename} },
+ sub { my($cdr, %opt) = @_; $opt{count} },
+ sub { my($cdr, %opt) = @_; int($opt{seconds}/60).'m' },
+ $price_sub,
+ ],
+ 'sum_count' => [
+ 'src',
+ sub { my($cdr, %opt) = @_; $opt{ratename} },
+ sub { my($cdr, %opt) = @_; $opt{count} },
+ $price_sub,
],
'basic' => [
sub { time2str('%d %b - %I:%M %p', shift->calldate_unix) },
'dst',
$duration_sub,
- sub { my($cdr, %opt) = @_; $opt{money_char}. $opt{charge}; }, #PRICE
+ $price_sub,
],
'default' => [
$duration_sub,
#PRICE
- sub { my($cdr, %opt) = @_;
- $opt{charge} = '0.00' unless defined $opt{charge};
- $opt{money_char}.$opt{charge};
- },
-
+ $price_sub,
],
);
$export_formats{'source_default'} = [ 'src', @{ $export_formats{'default'} }, ];
=item downstream_csv OPTION => VALUE ...
+Returns a string of formatted call details for display on an invoice.
+
Options:
format
-charge
+charge - override the 'rated_price' field of the CDR
+
+seconds - override the 'billsec' field of the CDR
+
+count - number of usage events included in this record, for summary formats
-seconds
+ratename - name of the rate table used to rate this call
granularity