summaryrefslogtreecommitdiff
path: root/FS/FS/cdr/sonus.pm
diff options
context:
space:
mode:
authormark <mark>2011-06-06 23:44:26 +0000
committermark <mark>2011-06-06 23:44:26 +0000
commiteb60190cfee653ba20c92ad3d3e49e84de9ca859 (patch)
treea1727b3c3485718f3e59eaa387da2acfc2c55856 /FS/FS/cdr/sonus.pm
parent528da7cf5c2c72cc062fc92bfa7ef37eb163f8bd (diff)
Sonus CDR format, #13053
Diffstat (limited to 'FS/FS/cdr/sonus.pm')
-rw-r--r--FS/FS/cdr/sonus.pm31
1 files changed, 31 insertions, 0 deletions
diff --git a/FS/FS/cdr/sonus.pm b/FS/FS/cdr/sonus.pm
new file mode 100644
index 0000000..f219239
--- /dev/null
+++ b/FS/FS/cdr/sonus.pm
@@ -0,0 +1,31 @@
+package FS::cdr::sonus;
+
+use strict;
+use base qw( FS::cdr );
+use vars qw( %info );
+use FS::cdr qw( _cdr_date_parser_maker _cdr_min_parser_maker );
+
+%info = (
+ 'name' => 'Sonus',
+ 'weight' => 525,
+ 'header' => 0, #0 default, set to 1 to ignore the first line, or
+ # to higher numbers to ignore that number of lines
+ 'type' => 'csv', #csv (default), fixedlength or xls
+ 'sep_char' => ',', #for csv, defaults to ,
+ 'import_fields' => [
+ 'src', # also customer id
+ 'dst',
+ _cdr_date_parser_maker('startdate'),
+ _cdr_date_parser_maker('enddate'),
+ _cdr_min_parser_maker,
+ skip(12),
+ sub { #rate
+ my ($cdr, $rate) = @_;
+ $cdr->upstream_price(sprintf("%.4f", $rate * $cdr->duration / 60));
+ }
+ ],
+);
+
+sub skip { map {''} (1..$_[0]) }
+
+1;