From: mark Date: Mon, 6 Jun 2011 23:44:26 +0000 (+0000) Subject: Sonus CDR format, #13053 X-Git-Tag: freeside_2_3_0~167 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=eb60190cfee653ba20c92ad3d3e49e84de9ca859 Sonus CDR format, #13053 --- diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 819fae9f5..9d03ce39d 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -2817,7 +2817,7 @@ sub tables_hashref { 'charged_party', 'varchar', 'NULL', $char_d, '', '', 'upstream_currency', 'char', 'NULL', 3, '', '', - 'upstream_price', 'decimal', 'NULL', '10,2', '', '', + 'upstream_price', 'decimal', 'NULL', '10,4', '', '', 'upstream_rateplanid', 'int', 'NULL', '', '', '', #? # how it was rated internally... diff --git a/FS/FS/cdr/sonus.pm b/FS/FS/cdr/sonus.pm new file mode 100644 index 000000000..f21923999 --- /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;