X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcdr%2Fnetcentrex.pm;h=a434d5d5f9e7cec1ee52d41e10e5140ae84600bd;hb=4b05b20576ddb14577d59c87c8257c6804449410;hp=7ccc3df831952fe4864a17d2b2aadf2e35b895c3;hpb=cf99c427a62bc9bf870032d75d55dbe851acd8d7;p=freeside.git diff --git a/FS/FS/cdr/netcentrex.pm b/FS/FS/cdr/netcentrex.pm index 7ccc3df83..a434d5d5f 100644 --- a/FS/FS/cdr/netcentrex.pm +++ b/FS/FS/cdr/netcentrex.pm @@ -28,9 +28,12 @@ use FS::cdr qw(_cdr_date_parser_maker); '', #04 Leg number (all 0) _cdr_date_parser_maker('startdate'), #05 Authorize timestamp _cdr_date_parser_maker('answerdate'), #06 Start timestamp - 'billsec', #'duration', #07 Duration - _e164_parser_maker('src'), #08 Caller - _e164_parser_maker('dst'), #09 Callee + sub { my( $cdr, $duration ) = @_; #07 Duration + $cdr->duration($duration); + $cdr->billsec( $duration); + }, + _e164_parser_maker('src', 'charged_party'), #08 Caller + _e164_parser_maker('dcontext', 'dst', 'norewrite_pivotonly'=>1) ,#09 Callee 'channel', #10 Source IP 'dstchannel', #11 Destination IP 'userfield', #12 selector Tag @@ -80,43 +83,40 @@ use FS::cdr qw(_cdr_date_parser_maker); ); sub _e164_parser_maker { - my $field = shift; + my( $field, $pivot_field, %opt ) = @_; return sub { my( $cdr, $e164 ) = @_; - eval { $cdr->$field( _e164_parse($e164) ); }; - die "error parsing e164 for $field from $e164: $@\n" if $@; + my( $pivot, $number ) = _e164_parse($e164); + if ( $opt{'norewrite_pivotonly'} && ! $pivot ) { + $cdr->$pivot_field( $number ); + } else { + $cdr->$field( $number ); + $cdr->$pivot_field( $pivot ); + } }; } -my %e164_types = ( - '000000' => '', - '100005' => '', - '100009' => '', - '100012' => '', - '100014' => '', - '100015' => '', - '100016' => '', - '300000' => '', -); - sub _e164_parse { my $e164 = shift; $e164 =~ s/^e164://; - my ($type, $number); + my ($pivot, $number); if ( $e164 =~ /^O(\d+)$/ ) { - $type = ''; #? + $pivot = ''; #? $number = $1; - } elsif ( $e164 =~ /^(\d{6})(\d+)$/ ) { - $type = $1; + } elsif ( $e164 =~ /^000000(\d+)$/ ) { + $pivot = ''; + $number = $1; + } elsif ( $e164 =~ /^(1\d{5})(\d+)$/ ) { + $pivot = $1; $number = $2; } else { - $type = ''; + $pivot = ''; $number = $e164; #unparsable... } - #$type...? - $number; + + ( $pivot, $number ); } 1;